osaka 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,91 +0,0 @@
1
-
2
- module Osaka
3
- module ApplicationWrapperExpectations
4
-
5
- def expect_clone
6
- wrapper.should_receive(:clone)
7
- end
8
-
9
- def expect_activate
10
- wrapper.should_receive(:activate)
11
- end
12
-
13
- def expect_focus
14
- wrapper.should_receive(:focus)
15
- end
16
-
17
- def expect_set_current_window(name)
18
- wrapper.should_receive(:set_current_window).with(name)
19
- end
20
-
21
- def expect_running?
22
- wrapper.should_receive(:running?)
23
- end
24
-
25
- def expect_quit
26
- wrapper.should_receive(:quit)
27
- end
28
-
29
- def expect_window_list
30
- wrapper.should_receive(:window_list)
31
- end
32
-
33
- def expect_set(element, location, value)
34
- wrapper.should_receive(:set).with(element, location, value)
35
- end
36
-
37
- def expect_keystroke(key, modifier = [])
38
- wrapper.should_receive(:keystroke).with(key, modifier).and_return(wrapper) unless modifier.empty?
39
- wrapper.should_receive(:keystroke).with(key).and_return(wrapper) if modifier.empty?
40
- end
41
-
42
- def expect_keystroke!(key, modifier = [])
43
- wrapper.should_receive(:keystroke!).with(key, modifier).and_return(wrapper) unless modifier.empty?
44
- wrapper.should_receive(:keystroke!).with(key).and_return(wrapper) if modifier.empty?
45
- end
46
-
47
- def expect_click!(location)
48
- wrapper.should_receive(:click!).with(location).and_return(wrapper)
49
- end
50
-
51
- def expect_click(location)
52
- wrapper.should_receive(:click).with(location).and_return(wrapper)
53
- end
54
-
55
- def expect_click_menu_bar(menu_item, menu_name)
56
- wrapper.should_receive(:click_menu_bar).with(menu_item, menu_name).and_return(wrapper)
57
- end
58
-
59
- def expect_get!(element, location)
60
- wrapper.should_receive(:get!).with(element, location)
61
- end
62
-
63
- def expect_tell(do_this)
64
- wrapper.should_receive(:tell).with(do_this)
65
- end
66
-
67
- def expect_system_event(event)
68
- wrapper.should_receive(:system_event).with(event)
69
- end
70
-
71
- def expect_exists(location)
72
- wrapper.should_receive(:exists).with(location)
73
- end
74
-
75
- def expect_wait_until_exists(location)
76
- wrapper.should_receive(:wait_until_exists).with(location)
77
- end
78
-
79
- def expect_wait_until_exists!(*location)
80
- wrapper.should_receive(:wait_until_exists!).with(*location)
81
- end
82
-
83
- def expect_wait_until_not_exists(location)
84
- wrapper.should_receive(:wait_until_not_exists).with(location)
85
- end
86
-
87
- def expect_until_not_exists!(element)
88
- wrapper.should_receive(:until_not_exists!).with(element).and_yield
89
- end
90
- end
91
- end
@@ -1,296 +0,0 @@
1
-
2
- require 'osaka'
3
-
4
- describe "Osaka::ApplicationWrapper" do
5
-
6
- name = "ApplicationName"
7
- quoted_name = "\"#{name}\""
8
- subject { Osaka::ApplicationWrapper.new(name) }
9
-
10
- before (:each) do
11
- Osaka::ScriptRunner.enable_debug_prints
12
- end
13
-
14
- after (:each) do
15
- Osaka::ScriptRunner.disable_debug_prints
16
- end
17
-
18
- it "Should be able to clone wrappers" do
19
- subject.set_current_window "Window"
20
- new_wrapper = subject.clone
21
- new_wrapper.should == subject
22
- new_wrapper.should_not equal(subject)
23
- end
24
-
25
- it "Should be able to compare objects using names" do
26
- subject.should == Osaka::ApplicationWrapper.new(name)
27
- subject.should_not == Osaka::ApplicationWrapper.new("otherName")
28
- end
29
-
30
- it "Should be able to compare objects using window" do
31
- equal_object = Osaka::ApplicationWrapper.new(name)
32
- unequal_object = Osaka::ApplicationWrapper.new(name)
33
- equal_object.set_current_window("Window")
34
- subject.set_current_window("Window")
35
- unequal_object.set_current_window "Another Window"
36
-
37
- subject.should == equal_object
38
- subject.should_not == unequal_object
39
- end
40
-
41
- def check_for_warning(action)
42
- Osaka::ScriptRunner.should_receive(:execute).and_return("Blah")
43
- subject.should_receive(:print_warning).with(action, "Blah")
44
- end
45
-
46
- it "Should be able to tell applications to do something" do
47
- Osaka::ScriptRunner.should_receive(:execute).with("tell application #{quoted_name}; command; end tell")
48
- subject.tell("command")
49
- end
50
-
51
- it "Can also pass multi-line commands to telling an application what to do" do
52
- Osaka::ScriptRunner.should_receive(:execute).with("tell application #{quoted_name}; activate; quit; end tell")
53
- subject.tell("activate; quit")
54
- end
55
-
56
- it "Should be able to print warning messages" do
57
- subject.should_receive(:puts).with("Osaka WARNING while doing action: Message")
58
- subject.print_warning("action", "Message")
59
- end
60
-
61
- it "Should print an Warning message with the ScriptRunner returns text when doing activate" do
62
- check_for_warning("activate")
63
- subject.activate
64
- end
65
-
66
- it "Has a short-cut method for quitting" do
67
- subject.should_receive(:keystroke).with("q", :command)
68
- subject.quit
69
- end
70
-
71
- it "Should be able to generate events via the Systems Events" do
72
- Osaka::ScriptRunner.should_receive(:execute).with(/tell application "System Events"; tell process #{quoted_name}; quit; end tell; end tell/)
73
- subject.system_event!("quit")
74
- end
75
-
76
- it "Should be possible to check whether an application is still running" do
77
- Osaka::ScriptRunner.should_receive(:execute).with("tell application \"System Events\"; (name of processes) contains \"#{name}\"; end tell").and_return("false")
78
- subject.running?.should == false
79
- end
80
-
81
- it "Should be able to generate events via the Systems Events and activate the application first" do
82
- subject.should_receive(:activate)
83
- subject.should_receive(:system_event!).with("quit")
84
- subject.system_event("quit")
85
- end
86
-
87
- it "Should be able to check whether a location exists" do
88
- Osaka::ScriptRunner.should_receive(:execute).with(/exists button 1/).and_return("true\n")
89
- subject.exists(at.button(1)).should == true
90
- end
91
-
92
- it "Should be able to check whether a location does not exists" do
93
- Osaka::ScriptRunner.should_receive(:execute).with(/not exists window 1/).and_return("true\n")
94
- subject.not_exists(at.window(1)).should == true
95
- end
96
-
97
- it "Should be able to wait until multiple locations exists and return the one that happened" do
98
- subject.should_receive(:exists).with(at.button(1)).and_return(false, false, false)
99
- subject.should_receive(:exists).with(at.sheet(5)).and_return(false, false, true)
100
- subject.wait_until_exists!(at.button(1), at.sheet(5)).should == at.sheet(5)
101
- end
102
-
103
- it "Should be able to wait until exists and activate the application first" do
104
- subject.should_receive(:activate)
105
- subject.should_receive(:wait_until_exists!).with([at.window(1)])
106
- subject.wait_until_exists(at.window(1))
107
- end
108
-
109
- it "Should be able to wait for a specific element and activate" do
110
- subject.should_receive(:activate)
111
- subject.should_receive(:wait_until_not_exists!).with(at.window(1), nil)
112
- subject.wait_until_not_exists(at.window(1))
113
- end
114
-
115
- it "Should be able to wait for a specific element to not exist anymore" do
116
- subject.should_receive(:not_exists).with(at.window(1)).and_return(false, false, true)
117
- subject.wait_until_not_exists!(at.window(1))
118
- end
119
-
120
- it "Should be able to generate keystroke events" do
121
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke "p"/).and_return("")
122
- subject.keystroke!("p")
123
- end
124
-
125
- it "Should be able to generate return keystroke event" do
126
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke return/).and_return("")
127
- subject.keystroke!(:return)
128
- end
129
-
130
- it "Prints a warning when keystroke results in some outputShould be able to generate keystroke events" do
131
- check_for_warning("keystroke")
132
- subject.keystroke!("p")
133
- end
134
-
135
- it "Should be able to keystroke and activate" do
136
- subject.should_receive(:activate)
137
- subject.should_receive(:focus)
138
- subject.should_receive(:keystroke!).with("a", [])
139
- subject.keystroke("a", [])
140
- end
141
-
142
- it "Should be able to do keystrokes with command down" do
143
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke "p" using {command down}/).and_return("")
144
- subject.keystroke!("p", :command)
145
- end
146
-
147
- it "Should be able to do keystrokes with option and command down" do
148
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke "p" using {option down, command down}/).and_return("")
149
- subject.keystroke!("p", [ :option, :command ])
150
- end
151
-
152
- it "Should be able to do a keystroke and wait until something happen in one easy line" do
153
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke "p"/).and_return("")
154
- Osaka::ScriptRunner.should_receive(:execute).with(/exists window 1/).and_return("true")
155
- subject.keystroke!("p", []).wait_until_exists!(at.window(1))
156
- end
157
-
158
- it "Should be able to keystroke_and_wait_until_exists and activate" do
159
- subject.should_receive(:activate)
160
- subject.should_receive(:focus)
161
- Osaka::ScriptRunner.should_receive(:execute).with(/keystroke "p"/).and_return("")
162
- Osaka::ScriptRunner.should_receive(:execute).with(/exists window 1/).and_return("true")
163
- subject.keystroke("p", []).wait_until_exists!(at.window(1))
164
- end
165
-
166
- it "Should be able to do clicks" do
167
- Osaka::ScriptRunner.should_receive(:execute).with(/click menu button "PDF"/).and_return("")
168
- subject.click!(at.menu_button("PDF"))
169
- end
170
-
171
- it "Should be able to do click and activate" do
172
- subject.should_receive(:activate)
173
- subject.should_receive(:click!).with("button")
174
- subject.click("button")
175
- end
176
-
177
- it "Should be able to do clicks and wait until something happened in one easy line" do
178
- Osaka::ScriptRunner.should_receive(:execute).with(/click/).and_return("")
179
- Osaka::ScriptRunner.should_receive(:execute).with(/exists window 1/).and_return("true")
180
- subject.click!("button").wait_until_exists!(at.window(1))
181
- end
182
-
183
- it "Should be able to click_and_wait_until_exists and activate" do
184
- subject.should_receive(:activate)
185
- Osaka::ScriptRunner.should_receive(:execute).with(/click/).and_return("")
186
- Osaka::ScriptRunner.should_receive(:execute).with(/exists window 1/).and_return("true")
187
- subject.click("button").wait_until_exists!(at.window(1))
188
- end
189
-
190
- it "Should be able to click on menu bar items" do
191
- subject.should_receive("activate")
192
- subject.should_receive("click!").with(at.menu_item("Hey").menu(1).menu_bar_item("File").menu_bar(1))
193
- subject.click_menu_bar(at.menu_item("Hey"), "File")
194
- end
195
-
196
- it "Should be able to set a value to an element" do
197
- subject.should_receive(:system_event!).with(/set value of window 1 to "newvalue"/).and_return("")
198
- subject.set!("value", at.window(1), "newvalue")
199
- end
200
-
201
- it "Prints a warning when setting and element and output is received" do
202
- check_for_warning("set")
203
- subject.set!("value", at.window(1), "newvalue")
204
- end
205
-
206
- it "Should be able to set to boolean values" do
207
- subject.should_receive(:system_event!).with(/set value of window 1 to true/).and_return("")
208
- subject.set!("value", at.window(1), true)
209
- end
210
-
211
- it "Should be able to get a value from an element" do
212
- subject.should_receive(:system_event!).with(/get value of window 1/).and_return("1\n")
213
- subject.get!("value", at.window(1)).should == "1"
214
- end
215
-
216
- it "Should use the locally stored window when that one is set." do
217
- subject.set_current_window("1")
218
- subject.should_receive(:system_event!).with(/get value of window \"1\"/).and_return("1\n")
219
- subject.get!("value").should == "1"
220
- end
221
-
222
- it "Should combine the location and the window" do
223
- subject.set_current_window("1")
224
- subject.should_receive(:system_event!).with(/get value of dialog 2 of window "1"/).and_return("1\n")
225
- subject.get!("value", at.dialog(2)).should == "1"
226
- end
227
-
228
- it "Should be able to get values from the application itself" do
229
- subject.should_receive(:system_event!).with("get value").and_return("1\n")
230
- subject.get_app!("value").should == "1"
231
- end
232
-
233
- it "Should be able to set a value and activate" do
234
- subject.should_receive(:activate)
235
- subject.should_receive(:set!).with("value", at.window(1), "newvalue")
236
- subject.set("value", at.window(1), "newvalue")
237
- end
238
-
239
- it "Should be able to loop over some script until something happens" do
240
- Osaka::ScriptRunner.should_receive(:execute).and_return("false", "false", "true")
241
- subject.should_receive(:activate).twice
242
- subject.until_exists!(at.window(1)) {
243
- subject.activate
244
- }
245
- end
246
-
247
- it "Should be able to get an empty array when requesting for the window list and there are none" do
248
- subject.should_receive(:get_app!).with("windows").and_return("\n")
249
- subject.window_list.should == []
250
- end
251
-
252
- it "Should be able get an array with one window name when there is exactly one window" do
253
- subject.should_receive(:get_app!).with("windows").and_return("window one of application process process\n")
254
- subject.window_list.should == ["one"]
255
- end
256
-
257
- it "Should be able to get an array of multiple window names" do
258
- subject.should_receive(:get_app!).with("windows").and_return("window one of application process process, window two of application process process\n")
259
- subject.window_list.should == ["one", "two"]
260
- end
261
-
262
- it "Should initialize the current window when it is not focused yet" do
263
- subject.should_receive(:window_list).and_return(["1"])
264
- subject.focus
265
- subject.current_window_name.should == "1"
266
- end
267
-
268
- it "Shouldn't initialize current window when it is already set" do
269
- subject.should_receive(:window_list).and_return(["1"])
270
- subject.focus
271
-
272
- subject.should_receive(:window_list).and_return(["2", "1"])
273
- subject.should_receive(:set!)
274
- subject.focus
275
- subject.current_window_name.should == "1"
276
- end
277
-
278
- it "Should re-initialize the current window when it doesn't exist anymore" do
279
- subject.should_receive(:window_list).and_return(["1"])
280
- subject.focus
281
-
282
- subject.should_receive(:window_list).and_return(["2"])
283
- subject.focus
284
- subject.current_window_name.should == "2"
285
- end
286
-
287
- it "Should focus the current window when it doesn't have focus" do
288
- subject.should_receive(:window_list).and_return(["1"])
289
- subject.focus
290
-
291
- subject.should_receive(:window_list).and_return(["2", "1"])
292
- subject.should_receive(:set!).with("value", "attribute \"AXMain\"", true )
293
- subject.focus
294
- end
295
-
296
- end