20 """Tests for the Dash autopilot custom proxy objects.
22 The autopilot custom proxy objects are helpers for tests that check a user
23 journey that involves the dash. The code for some of those tests will not be
24 inside this branch, but in projects that depend on unity or that test the
25 whole system integration. So, we need to test the helpers in order to make
26 sure that we don't break them for those external projects.
30 from ubuntuuitoolkit
import ubuntu_scenarios
32 from unity8
import process_helpers
34 from unity8
import dash
as dash_helpers
37 class MainWindowTestCase(tests.UnityTestCase):
39 scenarios = ubuntu_scenarios.get_device_simulation_scenarios()
44 process_helpers.unlock_unity()
47 class DashHelperTestCase(tests.DashBaseTestCase):
49 def test_search(self):
50 self.dash.enter_search_query(
'Test', self.keyboard)
51 text_field = self.dash.get_search_text_field()
52 self.assertEqual(text_field.text,
'Test')
54 def test_open_scope_to_the_right(self):
55 leftmost_scope = self._get_leftmost_scope_id()
56 self.dash.open_scope(leftmost_scope)
58 scope_id = self._get_rightmost_scope_id()
59 scope = self.dash.open_scope(scope_id)
60 self._assert_scope_is_opened(scope, scope_id)
62 def _assert_scope_is_opened(self, scope, scope_id):
63 self.assertTrue(scope.isCurrent)
64 scope_loader = scope.get_parent()
65 self.assertEqual(scope_loader.scopeId, scope_id)
67 def _get_leftmost_scope_id(self):
68 scope_loaders = self._get_scope_loaders()
69 leftmost_scope_loader = scope_loaders[0]
70 for loader
in scope_loaders[1:]:
71 if loader.globalRect.x < leftmost_scope_loader.globalRect.x:
72 leftmost_scope_loader = loader
73 return leftmost_scope_loader.scopeId
75 def _get_scope_loaders(self):
76 item = self.dash.dash_content_list.get_children_by_type(
78 return item.get_children_by_type(
'QQuickLoader')
80 def _get_rightmost_scope_id(self):
81 scope_loaders = self._get_scope_loaders()
82 rightmost_scope_loader = scope_loaders[0]
83 for loader
in scope_loaders[1:]:
84 if loader.globalRect.x > rightmost_scope_loader.globalRect.x:
85 rightmost_scope_loader = loader
86 return rightmost_scope_loader.scopeId
88 def test_open_scope_to_the_left(self):
89 rightmost_scope = self._get_rightmost_scope_id()
90 self.dash.open_scope(rightmost_scope)
92 scope_id = self._get_leftmost_scope_id()
93 scope = self.dash.open_scope(scope_id)
94 self._assert_scope_is_opened(scope, scope_id)
96 def test_open_generic_scope(self):
97 scope_id =
'musicaggregator'
98 scope = self.dash.open_scope(scope_id)
99 self._assert_scope_is_opened(scope, scope_id)
100 self.assertIsInstance(scope, dash_helpers.GenericScopeView)
102 def test_open_applications_scope(self):
103 scope_id =
'clickscope'
104 scope = self.dash.open_scope(scope_id)
105 self._assert_scope_is_opened(scope, scope_id)
106 self.assertIsInstance(scope, dash_helpers.GenericScopeView)
109 class GenericScopeViewHelperTestCase(tests.DashBaseTestCase):
113 self.useFixture(fixture_setup.FakeScopes())
115 self.generic_scope = self.dash.open_scope(
'MockScope1')
117 def test_open_preview(self):
118 preview = self.generic_scope.open_preview(
'0',
'Title.0.0')
119 self.assertIsInstance(preview, dash_helpers.Preview)
120 self.assertTrue(preview.isCurrent)
122 def test_open_preview_of_non_visible_item(self):
123 """Open an item that requires swiping to make it visible."""
124 preview = self.generic_scope.open_preview(
'2',
'Title.2.0')
125 self.assertIsInstance(preview, dash_helpers.Preview)
126 self.assertTrue(preview.isCurrent)
129 class DashAppsHelperTestCase(tests.DashBaseTestCase):
131 available_applications = [
132 'Title.2.0',
'Title.2.1',
'Title.2.2',
'Title.2.3',
'Title.2.4',
133 'Title.2.5',
'Title.2.6',
'Title.2.7',
'Title.2.8',
'Title.2.9',
134 'Title.2.10',
'Title.2.11',
'Title.2.12']
138 self.useFixture(fixture_setup.FakeScopes())
140 self.applications_scope = self.dash.open_scope(
'clickscope')
142 def test_get_applications_should_return_correct_applications(self):
144 category_element = self.applications_scope._get_category_element(
146 list_view = self.dash.get_scope(
'clickscope')\
147 .select_single(dash_helpers.ListViewWithPageHeader)
148 expected_apps_count = self._get_number_of_application_slots(category)
149 expected_applications = self.available_applications[
150 :expected_apps_count]
151 x_center = list_view.globalRect.x + list_view.width / 2
152 y_center = list_view.globalRect.y + list_view.height / 2
154 category_element.y - list_view.height + category_element.height
156 list_view._slow_drag(x_center, x_center, y_center, y_center - y_diff)
157 applications = self.applications_scope.get_applications(category)
158 self.assertEqual(expected_applications, applications)
160 def _get_number_of_application_slots(self, category):
161 category_element = self.applications_scope._get_category_element(
163 cardgrid = category_element.select_single(
'CardGrid')
164 if (category_element.expanded):
165 return cardgrid.select_single(
'QQuickGridView').count
167 return cardgrid.collapsedRows \
168 * cardgrid.select_single(
'ResponsiveGridView').columns