1
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
3
# Copyright 2015 Canonical
5
# This program is free software: you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License version 3, as published
7
# by the Free Software Foundation.
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
# GNU General Public License for more details.
14
# You should have received a copy of the GNU General Public License
15
# along with this program. If not, see <http://www.gnu.org/licenses/>.
17
from datetime import datetime
19
from webbrowser_app.tests import StartOpenRemotePageTestCaseBase
21
from testtools.matchers import Equals, GreaterThan, NotEquals
22
from autopilot.matchers import Eventually
23
from autopilot.platform import model
25
import ubuntuuitoolkit as uitk
27
from webbrowser_app.emulators import browser
30
class TestSettings(StartOpenRemotePageTestCaseBase):
32
def get_homepage_dialog(self):
33
return self.main_window.wait_select_single("Dialog",
34
objectName="homepageDialog")
36
def test_open_close_settings_page(self):
37
settings = self.open_settings()
38
settings.get_header().click_back_button()
39
settings.wait_until_destroyed()
41
def test_open_close_searchengine_page(self):
42
settings = self.open_settings()
43
searchengine = settings.get_searchengine_entry()
44
old_engine = searchengine.subText
45
self.assertThat(old_engine, NotEquals(""))
46
self.pointing_device.click_object(searchengine)
47
searchengine_page = settings.get_searchengine_page()
48
searchengine_header = searchengine_page.select_single(
49
browser.SettingsPageHeader)
50
searchengine_header.click_back_button()
51
searchengine_page.wait_until_destroyed()
52
self.assertThat(searchengine.subText, Equals(old_engine))
54
def test_change_searchengine(self):
55
settings = self.open_settings()
56
searchengine = settings.get_searchengine_entry()
57
old_engine = searchengine.subText
58
self.assertThat(old_engine, NotEquals(""))
59
self.pointing_device.click_object(searchengine)
60
searchengine_page = settings.get_searchengine_page()
61
self.assertThat(lambda: len(searchengine_page.select_many("Standard")),
62
Eventually(GreaterThan(1)))
63
delegates = searchengine_page.select_many("Standard")
64
delegates.sort(key=lambda delegate: delegate.objectName)
66
for (i, delegate) in enumerate(delegates):
67
checkbox = delegate.select_single(uitk.CheckBox)
68
if (new_index == -1) and not checkbox.checked:
70
self.assertThat(checkbox.checked,
71
Equals(delegate.text == old_engine))
72
new_engine = delegates[new_index].text
73
self.assertThat(new_engine, NotEquals(old_engine))
74
self.pointing_device.click_object(
75
delegates[new_index].select_single(uitk.CheckBox))
76
searchengine_page.wait_until_destroyed()
77
self.assertThat(searchengine.subText, Eventually(Equals(new_engine)))
79
def test_change_homepage(self):
80
settings = self.open_settings()
81
homepage = settings.get_homepage_entry()
82
old = homepage.subText
83
self.assertThat(old, NotEquals(""))
85
# First test cancelling the edition
86
self.pointing_device.click_object(homepage)
87
dialog = self.get_homepage_dialog()
88
textField = dialog.select_single(uitk.TextField,
89
objectName="homepageDialog.text")
90
self.assertThat(textField.text, Eventually(Equals(old)))
91
cancel_button = dialog.select_single(
93
objectName="homepageDialog.cancelButton")
94
self.pointing_device.click_object(cancel_button)
95
dialog.wait_until_destroyed()
96
self.assertThat(homepage.subText, Equals(old))
98
# Then test actually changing the homepage
99
self.pointing_device.click_object(homepage)
100
dialog = self.get_homepage_dialog()
101
textField = dialog.select_single(uitk.TextField,
102
objectName="homepageDialog.text")
103
self.assertThat(textField.text, Eventually(Equals(old)))
104
textField.activeFocus.wait_for(True)
105
new = "http://test/{}".format(int(datetime.now().timestamp()))
106
textField.write(new, True)
107
save_button = dialog.select_single(
109
objectName="homepageDialog.saveButton")
110
self.pointing_device.click_object(save_button)
111
dialog.wait_until_destroyed()
112
self.assertThat(homepage.subText, Eventually(Equals(new)))
114
def test_open_close_privacy_settings(self):
115
settings = self.open_settings()
116
privacy = settings.get_privacy_entry()
117
self.pointing_device.click_object(privacy)
118
privacy_page = settings.get_privacy_page()
119
privacy_header = privacy_page.select_single(browser.SettingsPageHeader)
120
privacy_header.click_back_button()
121
privacy_page.wait_until_destroyed()
123
def test_clear_browsing_history(self):
124
settings = self.open_settings()
125
privacy = settings.get_privacy_entry()
126
self.pointing_device.click_object(privacy)
127
privacy_page = settings.get_privacy_page()
128
clear_history = privacy_page.select_single(
130
objectName="privacy.clearHistory")
131
self.assertThat(clear_history.enabled, Equals(True))
132
self.pointing_device.click_object(clear_history)
133
self.assertThat(clear_history.enabled, Eventually(Equals(False)))
135
def test_clear_cache(self):
136
settings = self.open_settings()
137
privacy = settings.get_privacy_entry()
138
self.pointing_device.click_object(privacy)
139
privacy_page = settings.get_privacy_page()
140
clear_cache = privacy_page.select_single(
142
objectName="privacy.clearCache")
143
self.assertThat(clear_cache.enabled, Equals(True))
144
self.pointing_device.click_object(clear_cache)
145
self.assertThat(clear_cache.enabled, Eventually(Equals(True)))
147
def test_reset_browser_settings(self):
148
settings = self.open_settings()
149
reset = settings.get_reset_settings_entry()
150
self.pointing_device.click_object(reset)
152
searchengine = settings.get_searchengine_entry()
153
self.assertThat(searchengine.subText,
154
Eventually(Equals("Google")))
156
homepage = settings.get_homepage_entry()
157
self.assertThat(homepage.subText,
158
Eventually(Equals("http://start.ubuntu.com")))
160
restore_session = settings.get_restore_session_entry()
161
checkbox = restore_session.select_single(uitk.CheckBox)
162
self.assertThat(checkbox.checked, Eventually(Equals(True)))
164
background_tabs = settings.get_background_tabs_entry()
165
checkbox = background_tabs.select_single(uitk.CheckBox)
166
self.assertThat(checkbox.checked,
167
Eventually(Equals(model() == 'Desktop')))