osaka 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|