@@ -21,27 +21,26 @@
22from __future__ import absolute_import
22from __future__ import absolute_import
24−from unity8.process_helpers import unlock_unity
24+import logging
25−from unity8.shell import disable_qml_mocking
25+import os
26−from unity8.shell.tests import UnityTestCase, _get_device_emulation_scenarios
28from autopilot.matchers import Eventually
27from autopilot.matchers import Eventually
29from autopilot.platform import model
28from autopilot.platform import model
30−from testtools.matchers import Equals, NotEquals
29+from testtools.matchers import Equals
32−import logging
31+from unity8 import process_helpers
32+from unity8.application_lifecycle import tests
34−logger = logging.getLogger(__name__)
35+logger = logging.getLogger(__name__)
37−class ApplicationLifecycleTests(UnityTestCase):
39− scenarios = _get_device_emulation_scenarios()
38+class ApplicationLifecycleTests(tests.ApplicationLifeCycleTestCase):
41 def setUp(self):
40 def setUp(self):
41+ if model() == 'Desktop':
42+ self.skipTest('Test cannot be run on the desktop.')
42 super(ApplicationLifecycleTests, self).setUp()
43 super(ApplicationLifecycleTests, self).setUp()
43− if model() == "Desktop":
44− self.skipTest("Test cannot be run on the desktop.")
46 def swipe_screen_from_right(self):
45 def swipe_screen_from_right(self):
47 width = self.main_window.width
46 width = self.main_window.width
@@ -54,80 +53,65 @@ class ApplicationLifecycleTests(UnityTestCase):
54 logger.info("Swiping screen from the right edge")
53 logger.info("Swiping screen from the right edge")
55 self.touch.drag(start_x, start_y, end_x, end_y)
54 self.touch.drag(start_x, start_y, end_x, end_y)
57− def _launch_app(self, app_name):
56+ def launch_fake_app(self):
58− """Launches the application *app_name*
57+ _, desktop_file_path = self.create_test_application()
59−
58+ desktop_file_name = os.path.basename(desktop_file_path)
60− Assumes that the desktop file resides at:
59+ application_name, _ = os.path.splitext(desktop_file_name)
61− /usr/share/applications/{app_name}.desktop
60+ self.launch_upstart_application(application_name)
61+ return application_name
64− desktop_file = "--desktop_file_hint="\
65− "/usr/share/applications/{app_name}.desktop".format(
68− return self.launch_test_application(
71− "--stage_hint=main_stage",
76 def test_can_launch_application(self):
63 def test_can_launch_application(self):
77 """Must be able to launch an application."""
64 """Must be able to launch an application."""
78− unity_proxy = self.launch_unity()
65+ application_name = self.launch_fake_app()
79− unlock_unity(unity_proxy)
66+ self.assert_current_focused_application(application_name)
81− app = self._launch_app("messaging-app")
83− self.assertThat(app, NotEquals(None))
85− self.main_window.get_current_focused_app_id(),
86− Eventually(Equals("messaging-app"))
90 def test_can_launch_multiple_applications(self):
68 def test_can_launch_multiple_applications(self):
91 """A second application launched must be focused."""
69 """A second application launched must be focused."""
92− unity_proxy = self.launch_unity()
70+ application1_name = self.launch_fake_app()
93− unlock_unity(unity_proxy)
71+ self.assert_current_focused_application(application1_name)
95− self._launch_app("messaging-app")
73+ application2_name = self.launch_fake_app()
96− self.assertThat(
74+ self.assertFalse(application1_name == application2_name)
97− self.main_window.get_current_focused_app_id(),
75+ self.assert_current_focused_application(application2_name)
98− Eventually(Equals("messaging-app"))
76+
101− self._launch_app("address-book-app")
103− self.main_window.get_current_focused_app_id(),
104− Eventually(Equals("address-book-app"))
107− @disable_qml_mocking
108 def test_app_moves_from_unfocused_to_focused(self):
77 def test_app_moves_from_unfocused_to_focused(self):
109 """An application that is in the unfocused state must be able to be
78 """An application that is in the unfocused state must be able to be
110 brought back to the focused state.
79 brought back to the focused state.
113− unity_proxy = self.launch_unity()
82+ application1_name = self.launch_fake_app()
114− unlock_unity(unity_proxy)
83+ self.assert_current_focused_application(application1_name)
116− self._launch_app("messaging-app")
118− self.main_window.get_current_focused_app_id(),
119− Eventually(Equals("messaging-app"))
122− self._launch_app("address-book-app")
85+ application2_name = self.launch_fake_app()
123− self.assertThat(
86+ self.assertFalse(application1_name == application2_name)
124− self.main_window.get_current_focused_app_id(),
87+ self.assert_current_focused_application(application2_name)
125− Eventually(Equals("address-book-app"))
128 self.swipe_screen_from_right()
89 self.swipe_screen_from_right()
130− self.assertThat(
91+ self.assert_current_focused_application(application1_name)
93+ def test_greeter_hides_on_app_open(self):
94+ """Greeter should hide when an app is opened"""
95+ process_helpers.lock_unity()
131− self.main_window.get_current_focused_app_id(),
96+ greeter = self.main_window.get_greeter()
97+ self.assertThat(greeter.created, Eventually(Equals(True)))
99+ application_name = self.launch_fake_app()
132− Eventually(Equals("messaging-app"))
100+ self.assertThat(greeter.created, Eventually(Equals(False)))
133− )
101+ self.assert_current_focused_application(application_name)
103+ def test_greeter_hides_on_app_focus(self):
104+ """Greeter should hide when an app is re-focused"""
105+ application_name = self.launch_fake_app()
106+ self.assert_current_focused_application(application_name)
108+ self.main_window.show_dash_swiping()
109+ self.assert_current_focused_application('')
111+ process_helpers.lock_unity()
112+ greeter = self.main_window.get_greeter()
113+ self.assertThat(greeter.created, Eventually(Equals(True)))
115+ self.launch_upstart_application(application_name)
116+ self.assertThat(greeter.created, Eventually(Equals(False)))
117+ self.assert_current_focused_application(application_name)