osaka 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/osaka/mailmergeflow.rb +1 -0
- data/lib/osaka/pages.rb +9 -5
- data/lib/osaka/preview.rb +1 -3
- data/lib/osaka/typicalapplication.rb +6 -0
- data/lib/osaka/version.rb +1 -1
- data/spec/mailmergeflow_spec.rb +1 -0
- data/spec/pages_spec.rb +16 -5
- data/spec/preview_spec.rb +1 -4
- data/spec/typicalapplication_spec.rb +9 -0
- metadata +1 -1
data/lib/osaka/mailmergeflow.rb
CHANGED
data/lib/osaka/pages.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
|
2
2
|
module Osaka
|
3
|
+
|
4
|
+
class PagesError < RuntimeError
|
5
|
+
end
|
6
|
+
|
3
7
|
class PagesMailMergeDialog
|
4
8
|
attr_accessor :control, :location
|
5
9
|
|
@@ -88,11 +92,11 @@ module Osaka
|
|
88
92
|
open_dialog = do_and_wait_for_new_window {
|
89
93
|
control.click(at.radio_button("Numbers Document:").radio_group(1).sheet(1))
|
90
94
|
}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
95
|
+
select_file_from_open_dialog(filename, at.window(open_dialog))
|
96
|
+
if (control.exists?(at.sheet(1).sheet(1)))
|
97
|
+
raise(PagesError, "Setting Mail Merge numbers file failed")
|
98
|
+
end
|
99
|
+
control.click(at.button("OK").sheet(1))
|
96
100
|
end
|
97
101
|
|
98
102
|
def mail_merge_field(field_name)
|
data/lib/osaka/preview.rb
CHANGED
@@ -16,10 +16,8 @@ module Osaka
|
|
16
16
|
|
17
17
|
def open(filename)
|
18
18
|
control.click_menu_bar(at.menu_item("Open…"), "File").wait_until_exists(at.window("Open"))
|
19
|
-
dialog = create_dialog(TypicalOpenDialog, at.window("Open"))
|
20
|
-
dialog.set_folder(File.dirname(filename))
|
21
19
|
new_window = do_and_wait_for_new_window {
|
22
|
-
|
20
|
+
select_file_from_open_dialog(filename, at.window("Open"))
|
23
21
|
}
|
24
22
|
control.set_current_window(new_window)
|
25
23
|
end
|
@@ -191,5 +191,11 @@ module Osaka
|
|
191
191
|
dialog_class.new(control.name, location + (location.has_top_level_element? ? "" : control.base_location))
|
192
192
|
end
|
193
193
|
|
194
|
+
def select_file_from_open_dialog(filename, dialog_location)
|
195
|
+
dialog = create_dialog(TypicalOpenDialog, dialog_location)
|
196
|
+
dialog.set_folder(File.dirname(filename))
|
197
|
+
dialog.select_file(File.basename(filename))
|
198
|
+
|
199
|
+
end
|
194
200
|
end
|
195
201
|
end
|
data/lib/osaka/version.rb
CHANGED
data/spec/mailmergeflow_spec.rb
CHANGED
@@ -13,6 +13,7 @@ describe "Mail Merge to PDF common flow" do
|
|
13
13
|
Osaka::Pages.should_receive(:new).and_return(mock_pages)
|
14
14
|
|
15
15
|
mock_pages.should_receive(:open).with("/template/pages")
|
16
|
+
mock_pages.should_receive(:set_mail_merge_document).with("/template/numbers")
|
16
17
|
mock_pages.should_receive(:mail_merge_to_pdf).with("/output/file.pdf")
|
17
18
|
|
18
19
|
mock_pages.should_receive(:close).with(:dont_save)
|
data/spec/pages_spec.rb
CHANGED
@@ -84,15 +84,26 @@ describe "Osaka::Pages" do
|
|
84
84
|
subject.should_receive(:do_and_wait_for_new_window).and_yield.and_return("dialog")
|
85
85
|
expect_click(at.radio_button("Numbers Document:").radio_group(1).sheet(1))
|
86
86
|
|
87
|
-
|
88
|
-
subject.should_receive(:create_dialog).with(Osaka::TypicalOpenDialog, at.window("dialog")).and_return(dialog_mock)
|
89
|
-
dialog_mock.should_receive(:set_folder).with("/tmp")
|
90
|
-
dialog_mock.should_receive(:select_file).with("filename")
|
87
|
+
subject.should_receive(:select_file_from_open_dialog).with("/tmp/filename", at.window("dialog"))
|
91
88
|
expect_click(at.button("OK").sheet(1))
|
92
89
|
|
93
|
-
|
90
|
+
expect_exists?(at.sheet(1).sheet(1)).and_return(false)
|
91
|
+
subject.set_mail_merge_document("/tmp/filename")
|
94
92
|
end
|
95
93
|
|
94
|
+
it "Should be able to stop when an error happens due to mail merge. This is especially important since otherwise Pages goes nuts and crashes :)" do
|
95
|
+
subject.should_receive(:inspector).and_return(mock("Inspector").as_null_object)
|
96
|
+
expect_wait_until_exists(at.sheet(1))
|
97
|
+
subject.should_receive(:do_and_wait_for_new_window)
|
98
|
+
subject.should_receive(:select_file_from_open_dialog)
|
99
|
+
|
100
|
+
expect_exists?(at.sheet(1).sheet(1)).and_return(true)
|
101
|
+
|
102
|
+
expect {subject.set_mail_merge_document("/tmp/filename") }.to raise_error(Osaka::PagesError, "Setting Mail Merge numbers file failed")
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
|
96
107
|
it "Should be able to insert a merge field" do
|
97
108
|
expect_click_menu_bar(at.menu_item("Data").menu(1).menu_item("Merge Field"), "Insert")
|
98
109
|
subject.mail_merge_field("Data")
|
data/spec/preview_spec.rb
CHANGED
@@ -14,14 +14,11 @@ describe "Preview application for reading PDFs" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "Can open a PDF file via the menu instead of the AppleScript 'open' as that one is buggy" do
|
17
|
-
open_dialog = mock("Open Dialog")
|
18
17
|
|
19
18
|
expect_click_menu_bar(at.menu_item("Open…"), "File")
|
20
19
|
expect_wait_until_exists(at.window("Open"))
|
21
20
|
subject.stub(:do_and_wait_for_new_window).and_yield.and_return("window name")
|
22
|
-
subject.should_receive(:
|
23
|
-
open_dialog.should_receive(:set_folder).with("dir")
|
24
|
-
open_dialog.should_receive(:select_file).with("filename")
|
21
|
+
subject.should_receive(:select_file_from_open_dialog).with("dir/filename", at.window("Open"))
|
25
22
|
expect_set_current_window("window name")
|
26
23
|
|
27
24
|
subject.open("dir/filename")
|
@@ -166,6 +166,15 @@ describe "Osaka::TypicalApplication" do
|
|
166
166
|
subject.wait_for_save_dialog_and_save_file("/tmp/filename")
|
167
167
|
end
|
168
168
|
|
169
|
+
it "Should be able to pick a file from an open dialog" do
|
170
|
+
dialog_mock = mock("Open Dialog")
|
171
|
+
subject.should_receive(:create_dialog).with(Osaka::TypicalOpenDialog, at.window("dialog")).and_return(dialog_mock)
|
172
|
+
dialog_mock.should_receive(:set_folder).with("/tmp")
|
173
|
+
dialog_mock.should_receive(:select_file).with("filename")
|
174
|
+
|
175
|
+
subject.select_file_from_open_dialog("/tmp/filename", at.window("dialog"))
|
176
|
+
end
|
177
|
+
|
169
178
|
|
170
179
|
it "Should be able to duplicate and close the original document" do
|
171
180
|
subject.stub_chain(:duplicate, :control).and_return(new_instance_control)
|