~senan/ubuntu-autopilot-tests/DiskUsageAnalyser

« back to all changes in this revision

Viewing changes to ubuntu_autopilot_tests/DiskUsageAnalyser/test_diskUsageAnalyser.py

  • Committer: senan
  • Date: 2014-02-27 17:39:56 UTC
  • Revision ID: monlight.pvs@gmail.com-20140227173956-w1ztrp5hsalbr773
broken asserions into simple ones

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
from autopilot.introspection import get_proxy_object_for_existing_process
5
5
from autopilot.input import Mouse, Pointer
6
6
import os
7
 
from time import sleep
8
7
import subprocess
9
8
import locale
10
9
 
11
10
class DiskUsageAnalyzerTests(AutopilotTestCase):
12
11
 
13
 
        def setUp(self):                
14
 
            super(DiskUsageAnalyzerTests,self).setUp()
15
 
            self.app = self.launch_test_application('baobab')
16
 
            self.mainWindowTitle = self.app.select_single('BaobabWindow')
17
 
            self.pointing_device = Pointer(Mouse.create())
18
 
            self.scan_folder_index = 0                  #u'Scan Folder\u2026'
19
 
            self.scan_remote_folder_index = 1   #u'Scan Remote Folder\u2026'
20
 
            
 
12
        def setUp(self):
 
13
                """ Set up DiskUsage Analyzer """
 
14
                super(DiskUsageAnalyzerTests,self).setUp()
 
15
                self.app = self.launch_test_application('baobab')
 
16
                self.mainWindowTitle = self.app.select_single('BaobabWindow')
 
17
                self.pointing_device = Pointer(Mouse.create())
 
18
                
 
19
                self.scan_folder_index = 0                      #u'Scan Folder\u2026'
 
20
                self.scan_remote_folder_index = 1       #u'Scan Remote Folder\u2026'
 
21
        
21
22
        def test_window_title(self):
22
 
                # Verify the Disk Usage Analyzer application Title
23
 
            self.assertThat(self.mainWindowTitle.title,Eventually(Contains('Disk Usage')))
24
 
                
 
23
                """ Verify the Disk Usage Analyzer application Title """
 
24
                self.assertThat(self.mainWindowTitle.title,Eventually(Contains('Disk Usage')))
 
25
        
25
26
        def test_scan_local_folder(self):
 
27
                """ Open Scan Folder from menu and Run local scan folder test """
26
28
                self.open_scan_folder_dialog(self.scan_folder_index)
27
 
                self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(True)))
 
29
                fileChooserDlgWindow = self.get_file_chooser_dlg_window()
 
30
                self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
 
31
                
28
32
                self.open_file_chooser_dialog('/home')
29
 
                self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
 
33
                headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
 
34
                self.assertThat(headerBar.title,Eventually(Contains('home')))
30
35
                
31
36
        def test_scan_remote_folder(self):
32
 
                #Scan remote folder--check only the UI components
 
37
                """ Open scan remote folder from menu and run test. It validates only the UI Elements """
33
38
                self.open_scan_folder_dialog(self.scan_remote_folder_index)
34
39
                self.pointing_device.move_to_object(self.gear_menu_option_button)
35
40
                self.pointing_device.click()
 
41
                
36
42
                encoding = locale.getdefaultlocale()[1] #To resolve Type str doesn't support the buffer API
37
43
                cmd_output = subprocess.Popen("ps -ef | pgrep nautilus-connect*",stdout=subprocess.PIPE, shell=True)
38
44
                self.connect_server_dlg_pid,error  = cmd_output.communicate()
39
45
                self.connect_server_dlg_pid = int(self.connect_server_dlg_pid.decode(encoding).rstrip('\n'))
40
46
                self.assertNotEqual(self.connect_server_dlg_pid,None)
41
 
                self.connect_server_dlg_proxy_object = get_proxy_object_for_existing_process(pid=self.connect_server_dlg_pid)
 
47
                self.connect_server_dlg_proxy_object = get_proxy_object_for_existing_process(pid=self.connect_server_dlg_pid)           
42
48
                input_server_name = self.connect_server_dlg_proxy_object.select_single('GtkEntry')
 
49
                
43
50
                with self.keyboard.focused_type(input_server_name) as kb:
44
51
                        self.assertThat(input_server_name.is_focus,Equals(True))
45
52
                        kb.type('smb://foo.example.org')
46
53
                        kb.press_and_release('Delete')
47
54
                        self.assertThat(input_server_name.text,Equals('smb://foo.example.org'))
 
55
                
48
56
                self.btn_connect = self.connect_server_dlg_proxy_object.select_single('GtkButton',label='C_onnect')
49
57
                self.btn_cancel = self.connect_server_dlg_proxy_object.select_single('GtkButton',label='_Cancel')
50
58
                self.assertThat(self.btn_connect.sensitive,Equals(True))
51
59
                self.assertThat(self.btn_cancel.sensitive,Equals(True))
52
60
                self.pointing_device.move_to_object(self.btn_cancel)
53
61
                self.pointing_device.click()
54
 
                
 
62
        
55
63
        def test_home_list(self):
56
 
                #scan home folder listed in the applocations start page
 
64
                """ Select Home folder listed in application start page and run the test """
 
65
                
57
66
                self.create_button_scan_home_folder = self.app.select_single('GtkLabel',label=u'<b>Home folder</b>')
58
67
                self.pointing_device.move_to_object(self.create_button_scan_home_folder)
59
 
                self.pointing_device.click()    
60
 
                self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
 
68
                self.pointing_device.click()
 
69
                
 
70
                spinnerButton = self.get_spinner_button_control()
 
71
                self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
 
72
                
61
73
                self.show_tree_map()
62
 
                self.assertThat(lambda: self.app.select_single('BaobabTreemap',BuilderName='treemap-chart').visible,Eventually(Equals(True)))
 
74
                treeMap = self.get_tree_map_control()
 
75
                self.assertThat(treeMap.visible,Eventually(Equals(True)))
 
76
                
63
77
                self.show_ring_chart()
64
 
                self.assertThat(lambda: self.app.select_single('BaobabRingschart',BuilderName='rings-chart').visible,Eventually(Equals(True)))          
 
78
                ringsChart = self.get_rings_chart_control()
 
79
                self.assertThat(ringsChart.visible,Eventually(Equals(True)))            
65
80
        
66
81
        def test_scan_folder_tree_map(self):
67
 
                self.open_scan_folder_dialog(self.scan_folder_index)
68
 
                self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(True)))
69
 
                self.open_file_chooser_dialog('/home')
70
 
                self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
 
82
                """ Open scan folder dialog, select 'home' and validate the Treemap control  """
 
83
                self.open_scan_folder_dialog(self.scan_folder_index)            
 
84
                fileChooserDlgWindow = self.get_file_chooser_dlg_window()
 
85
                self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
 
86
                
 
87
                self.open_file_chooser_dialog('/home')          
 
88
                headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
 
89
                self.assertThat(headerBar.title,Eventually(Contains('home')))
 
90
                
71
91
                self.show_tree_map()
72
 
                self.assertThat(lambda: self.app.select_single('BaobabTreemap',BuilderName='treemap-chart').visible,Eventually(Equals(True)))
73
 
        
 
92
                treeMap = self.get_tree_map_control()
 
93
                self.assertThat(treeMap.visible,Eventually(Equals(True)))
 
94
                
74
95
        def test_scan_folder_ring_chart(self):
 
96
                """ Open scan folder dialog, select 'home' and validate the Rings chart control """
75
97
                self.open_scan_folder_dialog(self.scan_folder_index)
76
 
                self.assertThat(lambda: self.app.select_single('GtkFileChooserDialog').visible,Eventually(Equals(1)))
 
98
                fileChooserDlgWindow = self.get_file_chooser_dlg_window()
 
99
                self.assertThat(fileChooserDlgWindow.visible,Eventually(Equals(True)))
 
100
                
77
101
                self.open_file_chooser_dialog('/home')
78
 
                self.assertThat(lambda:self.app.select_single('GdHeaderBar',BuilderName='result-header-bar').title,Eventually(Contains('home')))
 
102
                headerBar = self.app.select_single('GdHeaderBar',BuilderName='result-header-bar')
 
103
                self.assertThat(headerBar.title,Eventually(Contains('home')))
 
104
                
79
105
                self.show_ring_chart()
80
 
                self.assertThat(lambda: self.app.select_single('BaobabRingschart',BuilderName='rings-chart').visible,Eventually(Equals(True)))
81
 
                
 
106
                ringsChart = self.get_rings_chart_control()
 
107
                self.assertThat(ringsChart.visible,Eventually(Equals(True)))
 
108
        
82
109
        def show_tree_map(self):        
83
 
                #Toggle treemap and ring chart
84
 
                self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
85
 
                self.assertThat(lambda: self.app.select_single('GtkRadioButtonAccessible',accessible_description='Treemap Chart').showing,Eventually(Equals(True)))
 
110
                """ Show and Validate Treemap Control """
 
111
                spinnerButton = self.get_spinner_button_control()
 
112
                self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
 
113
                treeMapAccessible = self.app.select_single('GtkRadioButtonAccessible',accessible_description='Treemap Chart')
 
114
                self.assertThat(treeMapAccessible.showing,Eventually(Equals(True)))
 
115
                
86
116
                self.tree_map_button = self.app.select_single('GtkRadioButton',BuilderName='treemap-button')
87
117
                self.assertThat(self.tree_map_button.sensitive,Eventually(Equals(True)))
88
118
                self.pointing_device.move_to_object(self.tree_map_button)
89
119
                self.pointing_device.click()
90
120
        
91
 
        def show_ring_chart(self):      
92
 
                self.assertThat(lambda: self.app.select_single('GtkSpinner',BuilderName='spinner').sensitive,Eventually(Equals(True)))
93
 
                self.assertThat(lambda: self.app.select_single('GtkRadioButtonAccessible',accessible_description='Rings Chart').showing,Eventually(Equals(True)))
 
121
        def show_ring_chart(self):
 
122
                """ Show and Validate Rings Chart Control """   
 
123
                spinnerButton = self.get_spinner_button_control()
 
124
                self.assertThat(spinnerButton.sensitive,Eventually(Equals(True)))
 
125
                ringsChartAccessible = self.app.select_single('GtkRadioButtonAccessible',accessible_description='Rings Chart')
 
126
                self.assertThat(ringsChartAccessible.showing,Eventually(Equals(True)))
 
127
                
94
128
                self.ring_button = self.app.select_single('GtkRadioButton',BuilderName='rings-button')
95
129
                self.assertThat(self.ring_button.sensitive,Eventually(Equals(True)))
96
130
                self.pointing_device.move_to_object(self.ring_button)
97
131
                self.pointing_device.click()
98
 
 
 
132
        
99
133
        def open_scan_folder_dialog(self,menu_item_index):
100
134
                self.gear_menu_option_button = self.app.select_single(BuilderName='menu-button')
101
135
                self.pointing_device.move_to_object(self.gear_menu_option_button)
102
136
                self.pointing_device.click()
103
137
                window = self.app.select_many('GtkWindowAccessible')[1]
 
138
                
104
139
                #TODO
105
140
                #Following code is not working in autopilot3 and as a workaround used select_many for accessing menu item
106
141
                #self.create_scan_folder_sub_menu_item = window.select_single('GtkCheckMenuItemAccessible', accessible_name=menu_item_name)
108
143
                self.assertThat(self.create_scan_folder_sub_menu_item, NotEquals(None))
109
144
                self.pointing_device.move_to_object(self.create_scan_folder_sub_menu_item)
110
145
                self.pointing_device.click()
111
 
                
 
146
        
112
147
        def open_file_chooser_dialog(self,key_input):
 
148
                """ Open file chooser dialog,enter 'Home' in path bar and do folder scanning """
113
149
                dialog = self.app.select_single('GtkFileChooserDialog') 
114
150
                self.assertThat(dialog.title,Eventually(Equals('Select Folder')))
115
151
                places_sidebar = self.app.select_single('GtkPlacesSidebar',BuilderName=u'places_sidebar')
116
152
                tree_view = places_sidebar.select_single('GtkTreeView')
117
153
                tree_item = self.get_tree_item(tree_view,'Home')
 
154
                
118
155
                self.pointing_device.move_to_object(tree_item)
119
156
                self.pointing_device.click_object(tree_item)
120
157
                self.create_toggle_button = self.app.select_single('GtkToggleButton',tooltip_text=u'Type a file name')
123
160
                        self.pointing_device.move_to_object(self.create_toggle_button)          
124
161
                        self.pointing_device.click()    
125
162
                editBox = self.app.select_single('GtkFileChooserEntry')
 
163
                
126
164
                #self.keyboard.focused_type(editBox)
127
165
                self.assertThat(editBox.is_focus,Equals(True))
128
166
                self.keyboard.type(key_input)
131
169
                path_bar = dialog.select_single('GtkPathBar',BuilderName='browse_path_bar')
132
170
                path_bar_home_label = path_bar.select_many('GtkLabel')[2]
133
171
                self.assertThat(path_bar_home_label.label,Equals(key_input.lstrip('/')))
 
172
                
134
173
                #Open the scan directory
135
174
                self.open_scan_dir = self.app.select_single('GtkLabel',label='_Open')
136
175
                self.pointing_device.move_to_object(self.open_scan_dir)
137
176
                self.pointing_device.click()    
138
 
                
 
177
        
139
178
        def get_tree_item(self, treeview_object, item_label):
140
179
                """ Gets an item from a gtktreeview
141
180
                param treeview_object: a selected GtkTreeView object
149
188
                                #select our item from here
150
189
                                tree_item = treeview_accessible.select_many('GtkTextCellAccessible',accessible_name=item_label)
151
190
                                return tree_item[1]
 
191
                                
 
192
        def get_tree_map_control(self):
 
193
                """ Get tree map object """
 
194
                return self.app.select_single('BaobabTreemap',BuilderName='treemap-chart')
 
195
        
 
196
        def get_rings_chart_control(self):
 
197
                """ Get rings chart object """
 
198
                return self.app.select_single('BaobabRingschart',BuilderName='rings-chart')
 
199
                
 
200
        def get_spinner_button_control(self):
 
201
                """ Get spinner button object """
 
202
                return self.app.select_single('GtkSpinner',BuilderName='spinner')
 
203
                
 
204
        def get_file_chooser_dlg_window(self):
 
205
                """ Get file chooser dialog window """
 
206
                return self.app.select_single('GtkFileChooserDialog')
 
207
 
 
208
                
 
209
                
152
210
                    
153
211
           
154
212