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)
121 def test_open_preview_of_non_visible_item(self):
122 """Open an item that requires swiping to make it visible.""" 123 preview = self.generic_scope.open_preview(
'2',
'Title.2.0')
124 self.assertIsInstance(preview, dash_helpers.Preview)
127 class DashAppsHelperTestCase(tests.DashBaseTestCase):
129 available_applications = [
130 'Title.2.0',
'Title.2.1',
'Title.2.2',
'Title.2.3',
'Title.2.4',
131 'Title.2.5',
'Title.2.6',
'Title.2.7',
'Title.2.8',
'Title.2.9',
132 'Title.2.10',
'Title.2.11',
'Title.2.12',
'Title.2.13',
'Title.2.14',
133 'Title.2.15',
'Title.2.16',
'Title.2.17',
'Title.2.18']
137 self.useFixture(fixture_setup.FakeScopes())
139 self.applications_scope = self.dash.open_scope(
'clickscope')
141 def test_get_applications_should_return_correct_applications(self):
143 category_element = self.applications_scope._get_category_element(
145 list_view = self.dash.get_scope(
'clickscope')\
146 .select_single(dash_helpers.ListViewWithPageHeader)
147 expected_apps_count = self._get_number_of_application_slots(category)
148 expected_applications = self.available_applications[
149 :expected_apps_count]
150 x_center = list_view.globalRect.x + list_view.width / 2
151 y_center = list_view.globalRect.y + list_view.height / 2
153 category_element.y - list_view.height + category_element.height
155 list_view._slow_drag(x_center, x_center, y_center, y_center - y_diff)
156 applications = self.applications_scope.get_applications(category)
157 self.assertEqual(expected_applications, applications)
159 def _get_number_of_application_slots(self, category):
160 category_element = self.applications_scope._get_category_element(
162 cardgrid = category_element.select_single(
'CardGrid')
163 if (category_element.expanded):
164 return cardgrid.select_single(
'QQuickGridView').count
166 return cardgrid.collapsedRows \
167 * cardgrid.select_single(
'ResponsiveGridView').columns