diff --git a/.gitignore b/.gitignore
index 7e396fd..afb4c38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
osaka.tmproj
osaka*.gem
Gemfile.lock
+.DS_Store
diff --git a/lib/osaka/commandrunner.rb b/lib/osaka/commandrunner.rb
index 448346f..c770842 100644
--- a/lib/osaka/commandrunner.rb
+++ b/lib/osaka/commandrunner.rb
@@ -7,9 +7,11 @@ class SystemCommandFailed < RuntimeError
end
module CommandRunner
- def self.run(command)
+ def self.run(command, debug = false)
+ puts "Execute: #{command} " if debug
output = `#{command} 2>&1`
raise Osaka::SystemCommandFailed, "message" + output unless $?.success?
+ puts "Output was: #{output}" if debug
output
end
end
diff --git a/lib/osaka/keynote.rb b/lib/osaka/keynote.rb
index 7e10091..74e73a5 100644
--- a/lib/osaka/keynote.rb
+++ b/lib/osaka/keynote.rb
@@ -25,5 +25,18 @@ def light_table_view
control.click(at.menu_item("Light Table").menu(1).menu_bar_item("View").menu_bar(1))
end
end
+
+ def open (filename)
+ abolutePathFileName = File.absolute_path(filename)
+ new_window = do_and_wait_for_new_window {
+ # jwg - weird that keynote open via osascript is flakey for Mavericks
+ # was: control.tell("open \"#{abolutePathFileName}\"")
+ # But now uses the command line
+ CommandRunner::run("open #{abolutePathFileName}", ScriptRunner::debug_prints?)
+ }
+ control.wait_until_exists(at.window(File.basename(filename)))
+ control.set_current_window(new_window)
+ end
+
end
end
\ No newline at end of file
diff --git a/lib/osaka/keynoteflow.rb b/lib/osaka/keynoteflow.rb
index 9f35252..516cbff 100644
--- a/lib/osaka/keynoteflow.rb
+++ b/lib/osaka/keynoteflow.rb
@@ -4,21 +4,20 @@ module CommonFlows
def self.keynote_combine_files(result_file, files_to_merge)
keynote = Osaka::Keynote.new
keynote.activate
+ keynote.close_template_chooser_if_any
keynote.raise_error_on_open_standard_windows("All Keynote windows must be closed before running this flow")
files_to_merge = [files_to_merge].flatten
keynote.open(files_to_merge.shift)
- keynote.light_table_view
+ keynote.select_all_slides
keynote.save_as(result_file)
-
-
+
files_to_merge.each { |file|
combine_keynote = Osaka::Keynote.new
combine_keynote.open(file)
combine_keynote.select_all_slides
combine_keynote.copy
combine_keynote.close
- keynote.select_all_slides
keynote.paste
}
@@ -27,11 +26,47 @@ def self.keynote_combine_files(result_file, files_to_merge)
keynote.quit
end
+ def self.keynote_open_yield_close(files)
+ keynote = Osaka::Keynote.new
+ keynote.activate
+ keynote.close_template_chooser_if_any
+ keynote.raise_error_on_open_standard_windows("All Keynote windows must be closed before running this flow")
+ files = [files].flatten
+ files.each { |file|
+ keynote = Osaka::Keynote.new
+ keynote.open(file)
+ yield keynote
+ keynote.close
+ }
+ keynote.quit
+ end
+
def self.keynote_combine_files_from_directory_sorted(result_file, directory = ".", pattern = /^.*\.key$/)
files_in_directory = Dir.new(directory).entries
files_in_directory.select! { |f| f =~ pattern }
files_to_open = files_in_directory.collect { |f| File.join(directory, f)}
keynote_combine_files(result_file, files_to_open.sort)
end
+
+ def self.output message
+ puts message
+ end
+
+ def self.keynote_combine_files_from_list(result_file, directory = ".", keynote_files)
+ files_to_open = keynote_files.collect { |f| File.join(directory, f)}
+ missing_files = ""
+ files_to_open.each { |f|
+ if !File.exist?(f)
+ missing_files += "\n" + f
+ end
+ }
+
+ if missing_files.empty?
+ keynote_combine_files(result_file, files_to_open)
+ else
+ output "These files do not exist: " + missing_files
+ end
+
+ end
end
\ No newline at end of file
diff --git a/lib/osaka/osakaexpectations.rb b/lib/osaka/osakaexpectations.rb
index c09dae3..3d0ca6e 100644
--- a/lib/osaka/osakaexpectations.rb
+++ b/lib/osaka/osakaexpectations.rb
@@ -3,134 +3,136 @@ module Osaka
module OsakaExpectations
def simulate_mac_version(version)
- control.should_receive(:mac_version).and_return(version)
+ expect(control).to receive(:mac_version).and_return(version)
end
-
+
def expect_execute_osascript(command = nil)
return Osaka::ScriptRunner.should_receive(:execute).with(command) unless command.nil?
Osaka::ScriptRunner.should_receive(:execute)
end
def expect_clone
- control.should_receive(:clone)
+ expect(control).to receive(:clone)
end
def expect_activate
- control.should_receive(:activate)
+ expect(control).to receive(:activate)
+ # expect(control).to receive(:activate)
end
def expect_launch
- control.should_receive(:launch)
+ expect(control).to receive(:launch)
end
def expect_focus
- control.should_receive(:focus)
+ expect(control).to receive(:focus)
end
def expect_focus!
- control.should_receive(:focus!)
+ expect(control).to receive(:focus!)
end
def expect_set_current_window(name)
- control.should_receive(:set_current_window).with(name)
+ expect(control).to receive(:set_current_window).with(name)
end
def expect_running?
- control.should_receive(:running?)
+ expect(control).to receive(:running?)
end
def expect_quit
- control.should_receive(:quit)
+ expect(control).to receive(:quit)
end
def expect_window_list
- control.should_receive(:window_list)
+ expect(control).to receive(:window_list)
end
def expect_standard_window_list
- control.should_receive(:standard_window_list)
+ expect(control).to receive(:standard_window_list)
end
def expect_current_window_name
- control.should_receive(:current_window_name)
+ expect(control).to receive(:current_window_name)
+ # expect(control).to receive(:current_window_name)
end
def expect_set(element, location, value)
- control.should_receive(:set).with(element, location, value)
+ expect(control).to receive(:set).with(element, location, value)
end
def expect_set!(element, location, value)
- control.should_receive(:set!).with(element, location, value)
+ expect(control).to receive(:set!).with(element, location, value)
end
def expect_get_app!(element)
- control.should_receive(:get_app!).with(element)
+ expect(control).to receive(:get_app!).with(element)
end
def expect_keystroke(key, modifier = [])
- control.should_receive(:keystroke).with(key, modifier).and_return(control) unless modifier.empty?
- control.should_receive(:keystroke).with(key).and_return(control) if modifier.empty?
+ expect(control).to receive(:keystroke).with(key, modifier).and_return(control) unless modifier.empty?
+ expect(control).to receive(:keystroke).with(key).and_return(control) if modifier.empty?
end
def expect_keystroke!(key, modifier = [])
- control.should_receive(:keystroke!).with(key, modifier).and_return(control) unless modifier.empty?
- control.should_receive(:keystroke!).with(key).and_return(control) if modifier.empty?
+ expect(control).to receive(:keystroke!).with(key, modifier).and_return(control) unless modifier.empty?
+ expect(control).to receive(:keystroke!).with(key).and_return(control) if modifier.empty?
end
def expect_click!(location)
- control.should_receive(:click!).with(location).and_return(control)
+ expect(control).to receive(:click!).with(location).and_return(control)
end
def expect_click(location)
- control.should_receive(:click).with(location).and_return(control)
+ expect(control).to receive(:click).with(location).and_return(control)
end
def expect_click_menu_bar(menu_item, menu_name)
- control.should_receive(:click_menu_bar).with(menu_item, menu_name).and_return(control)
+ expect(control).to receive(:click_menu_bar).with(menu_item, menu_name).and_return(control)
end
def expect_get!(element, location)
- control.should_receive(:get!).with(element, location)
+ expect(control).to receive(:get!).with(element, location)
end
def expect_tell(do_this)
- control.should_receive(:tell).with(do_this)
+ expect(control).to receive(:tell).with(do_this)
end
def expect_system_event(event)
- control.should_receive(:system_event).with(event)
+ expect(control).to receive(:system_event).with(event)
end
def expect_system_event!(event)
- control.should_receive(:system_event!).with(event)
+ expect(control).to receive(:system_event!).with(event)
end
def expect_exists?(location)
- control.should_receive(:exists?).with(location)
+ expect(control).to receive(:exists?).with(location)
end
def expect_not_exists?(location)
- control.should_receive(:not_exists?).with(location)
+ expect(control).to receive(:not_exists?).with(location)
end
def expect_wait_until_exists(*location)
- control.should_receive(:wait_until_exists).with(*location)
+ expect(control).to receive(:wait_until_exists).with(*location)
end
def expect_wait_until_exists!(*location)
- control.should_receive(:wait_until_exists!).with(*location)
+ expect(control).to receive(:wait_until_exists!).with(*location)
end
def expect_wait_until_not_exists(location)
- control.should_receive(:wait_until_not_exists).with(location)
+ expect(control).to receive(:wait_until_not_exists).with(location)
end
def expect_wait_until_not_exists!(location, action)
- control.should_receive(:wait_until_not_exists!).with(location)
+ expect(control).to receive(:wait_until_not_exists!).with(location)
end
def expect_until_not_exists!(element)
- control.should_receive(:until_not_exists!).with(element).and_yield
+ expect(control).to receive(:until_not_exists!).with(element).and_yield
end
end
end
\ No newline at end of file
diff --git a/lib/osaka/pages.rb b/lib/osaka/pages.rb
index 4a4a26b..7e90222 100644
--- a/lib/osaka/pages.rb
+++ b/lib/osaka/pages.rb
@@ -89,7 +89,7 @@ def self.create_document(filename, &block)
def new_document
super
- if control.current_window_name == "Template Chooser"
+ if template_chooser?
control.set_current_window(do_and_wait_for_new_window {
control.click(at.button("Choose").window("Template Chooser"))
})
diff --git a/lib/osaka/remotecontrol.rb b/lib/osaka/remotecontrol.rb
index 9dda4a3..a6f1ddf 100644
--- a/lib/osaka/remotecontrol.rb
+++ b/lib/osaka/remotecontrol.rb
@@ -150,6 +150,10 @@ def click_menu_bar(menu_item, menu_name)
click!(menu_item + at.menu(1) + menu_bar_location)
end
+ def click_menu_bar_by_name(menu_item_name, menu_name)
+ click_menu_bar(at.menu_item(menu_item_name), menu_name)
+ end
+
def set!(element, location, value)
encoded_value = (value.class == String) ? "\"#{value}\"" : value.to_s
check_output( system_event!("set #{element}#{construct_prefixed_location(location)} to #{encoded_value}"), "set")
@@ -241,6 +245,8 @@ def mac_version
:lion
when /^10.8.*/
:mountain_lion
+ when /^10.9.*/
+ :mavericks
else
:other
end
diff --git a/lib/osaka/typicalapplication.rb b/lib/osaka/typicalapplication.rb
index 87856da..e4a852d 100644
--- a/lib/osaka/typicalapplication.rb
+++ b/lib/osaka/typicalapplication.rb
@@ -114,8 +114,10 @@ def duplicate
end
def duplicate_and_close_original
- new_instance = duplicate
- close
+ original_window_name = control.current_window_name
+ new_instance = duplicate
+ control.click_menu_bar_by_name(original_window_name, "Window")
+ close
@control = new_instance.control
end
@@ -199,6 +201,24 @@ def select_file_from_open_dialog(filename, dialog_location)
dialog.set_folder(File.dirname(filename))
dialog.select_file(File.basename(filename))
end
+
+ # jwg add tests
+ def template_chooser?
+ focus
+ current_window_name = control.current_window_name
+ current_window_name == "Choose a Theme" ||
+ current_window_name == "Choose a Template" ||
+ current_window_name == "Template Chooser" ? true : false
+ end
+
+ def close_template_chooser_if_any
+ focus
+ if template_chooser?
+ window = at.window(control.current_window_name)
+ close
+ control.wait_until_not_exists!(window)
+ end
+ end
def raise_error_on_open_standard_windows(error_message)
raise Osaka::ApplicationWindowsMustBeClosed, error_message if ! control.standard_window_list.empty?
diff --git a/make-gem.sh b/make-gem.sh
new file mode 100755
index 0000000..9f1a79b
--- /dev/null
+++ b/make-gem.sh
@@ -0,0 +1,3 @@
+#/bin/bash
+gem build osaka.gemspec
+gem install osaka-0.4.8.gem
diff --git a/run_each_test.sh b/run_each_test.sh
new file mode 100755
index 0000000..159d9ef
--- /dev/null
+++ b/run_each_test.sh
@@ -0,0 +1,40 @@
+UNIT_TESTS+=" ./spec/calculator_spec.rb"
+UNIT_TESTS+=" ./spec/defaultssystem_spec.rb"
+UNIT_TESTS+=" ./spec/keynote_flows_spec.rb"
+UNIT_TESTS+=" ./spec/keynote_spec.rb"
+UNIT_TESTS+=" ./spec/launchservices_spec.rb"
+UNIT_TESTS+=" ./spec/location_spec.rb"
+UNIT_TESTS+=" ./spec/mailmergeflow_spec.rb"
+UNIT_TESTS+=" ./spec/numbers_spec.rb"
+UNIT_TESTS+=" ./spec/osakaexpectations_spec.rb"
+# UNIT_TESTS+=" ./spec/pages_spec.rb"
+UNIT_TESTS+=" ./spec/preview_spec.rb"
+UNIT_TESTS+=" ./spec/remotecontrol_spec.rb"
+UNIT_TESTS+=" ./spec/scriptrunner_spec.rb"
+UNIT_TESTS+=" ./spec/textedit_spec.rb"
+UNIT_TESTS+=" ./spec/typicalapplication_spec.rb"
+UNIT_TESTS+=" ./spec/typicalfinderdialog_spec.rb"
+UNIT_TESTS+=" ./spec/typicalopendialog_spec.rb"
+UNIT_TESTS+=" ./spec/typicalprintdialog_spec.rb"
+UNIT_TESTS+=" ./spec/typicalsavedialog_spec.rb"
+
+INTEGRATION_TESTS+=" ./spec/integration_calculator_spec.rb"
+INTEGRATION_TESTS+=" ./spec/integration_keynote_spec.rb"
+INTEGRATION_TESTS+=" ./spec/integration_numbers_spec.rb"
+INTEGRATION_TESTS+=" ./spec/integration_preview_spec.rb"
+INTEGRATION_TESTS+=" ./spec/integration_textedit_spec.rb"
+## INTEGRATION_TESTS+=" ./spec/integration_pages_numbers_mail_merge_spec.rb"
+
+export LANG=en_US.UTF-8
+
+if [ "$1" == "u" ] ; then
+ ruby -S rspec $UNIT_TESTS
+
+elif [ "$1" == "i" ] ; then
+ ruby -S rspec $INTEGRATION_TESTS
+else
+ ruby -S rspec $UNIT_TESTS
+ ruby -S rspec $INTEGRATION_TESTS
+fi
+
+
diff --git a/spec/assets/01_first_slides.key b/spec/assets/01_first_slides.key
deleted file mode 100644
index fdd39c3..0000000
Binary files a/spec/assets/01_first_slides.key and /dev/null differ
diff --git a/spec/assets/02_second_slides.key b/spec/assets/02_second_slides.key
deleted file mode 100644
index 0a4f501..0000000
Binary files a/spec/assets/02_second_slides.key and /dev/null differ
diff --git a/spec/assets/03_third_slides.key b/spec/assets/03_third_slides.key
deleted file mode 100644
index 1b829b1..0000000
Binary files a/spec/assets/03_third_slides.key and /dev/null differ
diff --git a/spec/assets/key-09/01_first_slides.key b/spec/assets/key-09/01_first_slides.key
new file mode 100644
index 0000000..911ab70
Binary files /dev/null and b/spec/assets/key-09/01_first_slides.key differ
diff --git a/spec/assets/key-09/02_second_slides.key b/spec/assets/key-09/02_second_slides.key
new file mode 100644
index 0000000..152eed9
Binary files /dev/null and b/spec/assets/key-09/02_second_slides.key differ
diff --git a/spec/assets/key-09/03_third_slides.key b/spec/assets/key-09/03_third_slides.key
new file mode 100644
index 0000000..530df31
Binary files /dev/null and b/spec/assets/key-09/03_third_slides.key differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/Girl_and_Snowcone-small-97.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/Girl_and_Snowcone-small-97.jpg
new file mode 100644
index 0000000..49cd917
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/Girl_and_Snowcone-small-97.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/Happy_Girls-small-95.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/Happy_Girls-small-95.jpg
new file mode 100644
index 0000000..23ff195
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/Happy_Girls-small-95.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt0@2x-99.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt0@2x-99.jpg
new file mode 100644
index 0000000..488f912
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt0@2x-99.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt10@2x-109.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt10@2x-109.jpg
new file mode 100644
index 0000000..133f299
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt10@2x-109.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt11@2x-110.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt11@2x-110.jpg
new file mode 100644
index 0000000..11cd202
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt11@2x-110.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt12@2x-111.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt12@2x-111.jpg
new file mode 100644
index 0000000..254a2d3
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt12@2x-111.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt13@2x-112.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt13@2x-112.jpg
new file mode 100644
index 0000000..5387972
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt13@2x-112.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt1@2x-100.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt1@2x-100.jpg
new file mode 100644
index 0000000..5cf36ee
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt1@2x-100.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt2@2x-101.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt2@2x-101.jpg
new file mode 100644
index 0000000..7a52df8
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt2@2x-101.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt3@2x-102.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt3@2x-102.jpg
new file mode 100644
index 0000000..08b96be
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt3@2x-102.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt4@2x-103.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt4@2x-103.jpg
new file mode 100644
index 0000000..8c8cafc
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt4@2x-103.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt5@2x-104.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt5@2x-104.jpg
new file mode 100644
index 0000000..42694af
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt5@2x-104.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt6@2x-105.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt6@2x-105.jpg
new file mode 100644
index 0000000..25ecd11
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt6@2x-105.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt7@2x-106.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt7@2x-106.jpg
new file mode 100644
index 0000000..68d01bd
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt7@2x-106.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt8@2x-107.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt8@2x-107.jpg
new file mode 100644
index 0000000..1a1ad1b
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt8@2x-107.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/mt9@2x-108.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/mt9@2x-108.jpg
new file mode 100644
index 0000000..9e529bd
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/mt9@2x-108.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/st0-117.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/st0-117.jpg
new file mode 100644
index 0000000..b8cdae2
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/st0-117.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/st1-121.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/st1-121.jpg
new file mode 100644
index 0000000..e95f6ae
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/st1-121.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Data/st2-124.jpg b/spec/assets/key-v6.2/01_first_slides.key/Data/st2-124.jpg
new file mode 100644
index 0000000..f859845
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Data/st2-124.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Index.zip b/spec/assets/key-v6.2/01_first_slides.key/Index.zip
new file mode 100644
index 0000000..9b129dc
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Index.zip differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Metadata/BuildVersionHistory.plist b/spec/assets/key-v6.2/01_first_slides.key/Metadata/BuildVersionHistory.plist
new file mode 100644
index 0000000..91d49bd
--- /dev/null
+++ b/spec/assets/key-v6.2/01_first_slides.key/Metadata/BuildVersionHistory.plist
@@ -0,0 +1,9 @@
+
+
+
+
+ local build-Nov 15 2011
+ local build-Jun 29 2012
+ M6.2-1861-1
+
+
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Metadata/DocumentIdentifier b/spec/assets/key-v6.2/01_first_slides.key/Metadata/DocumentIdentifier
new file mode 100644
index 0000000..95af507
--- /dev/null
+++ b/spec/assets/key-v6.2/01_first_slides.key/Metadata/DocumentIdentifier
@@ -0,0 +1 @@
+F626FDF2-0A41-4A05-82B0-F76B817A667D
\ No newline at end of file
diff --git a/spec/assets/key-v6.2/01_first_slides.key/Metadata/Properties.plist b/spec/assets/key-v6.2/01_first_slides.key/Metadata/Properties.plist
new file mode 100644
index 0000000..7204799
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/Metadata/Properties.plist differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/preview-micro.jpg b/spec/assets/key-v6.2/01_first_slides.key/preview-micro.jpg
new file mode 100644
index 0000000..eff9d60
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/preview-micro.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/preview-web.jpg b/spec/assets/key-v6.2/01_first_slides.key/preview-web.jpg
new file mode 100644
index 0000000..1f4418c
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/preview-web.jpg differ
diff --git a/spec/assets/key-v6.2/01_first_slides.key/preview.jpg b/spec/assets/key-v6.2/01_first_slides.key/preview.jpg
new file mode 100644
index 0000000..02e24fc
Binary files /dev/null and b/spec/assets/key-v6.2/01_first_slides.key/preview.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/Girl_and_Snowcone-small-109.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/Girl_and_Snowcone-small-109.jpg
new file mode 100644
index 0000000..49cd917
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/Girl_and_Snowcone-small-109.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/Happy_Girls-small-107.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/Happy_Girls-small-107.jpg
new file mode 100644
index 0000000..23ff195
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/Happy_Girls-small-107.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt0@2x-111.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt0@2x-111.jpg
new file mode 100644
index 0000000..488f912
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt0@2x-111.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt10@2x-121.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt10@2x-121.jpg
new file mode 100644
index 0000000..133f299
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt10@2x-121.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt11@2x-122.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt11@2x-122.jpg
new file mode 100644
index 0000000..11cd202
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt11@2x-122.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt12@2x-123.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt12@2x-123.jpg
new file mode 100644
index 0000000..254a2d3
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt12@2x-123.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt13@2x-124.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt13@2x-124.jpg
new file mode 100644
index 0000000..5387972
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt13@2x-124.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt1@2x-112.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt1@2x-112.jpg
new file mode 100644
index 0000000..5cf36ee
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt1@2x-112.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt2@2x-113.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt2@2x-113.jpg
new file mode 100644
index 0000000..7a52df8
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt2@2x-113.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt3@2x-114.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt3@2x-114.jpg
new file mode 100644
index 0000000..08b96be
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt3@2x-114.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt4@2x-115.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt4@2x-115.jpg
new file mode 100644
index 0000000..8c8cafc
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt4@2x-115.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt5@2x-116.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt5@2x-116.jpg
new file mode 100644
index 0000000..42694af
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt5@2x-116.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt6@2x-117.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt6@2x-117.jpg
new file mode 100644
index 0000000..25ecd11
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt6@2x-117.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt7@2x-118.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt7@2x-118.jpg
new file mode 100644
index 0000000..68d01bd
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt7@2x-118.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt8@2x-119.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt8@2x-119.jpg
new file mode 100644
index 0000000..1a1ad1b
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt8@2x-119.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/mt9@2x-120.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/mt9@2x-120.jpg
new file mode 100644
index 0000000..9e529bd
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/mt9@2x-120.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/st0-133.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/st0-133.jpg
new file mode 100644
index 0000000..b02724a
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/st0-133.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/st1-138.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/st1-138.jpg
new file mode 100644
index 0000000..4237aed
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/st1-138.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Data/st2-142.jpg b/spec/assets/key-v6.2/02_second_slides.key/Data/st2-142.jpg
new file mode 100644
index 0000000..91ab4e9
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Data/st2-142.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Index.zip b/spec/assets/key-v6.2/02_second_slides.key/Index.zip
new file mode 100644
index 0000000..aa72596
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Index.zip differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Metadata/BuildVersionHistory.plist b/spec/assets/key-v6.2/02_second_slides.key/Metadata/BuildVersionHistory.plist
new file mode 100644
index 0000000..1ebbca1
--- /dev/null
+++ b/spec/assets/key-v6.2/02_second_slides.key/Metadata/BuildVersionHistory.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ local build-Nov 15 2011
+ M6.2-1861-1
+
+
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Metadata/DocumentIdentifier b/spec/assets/key-v6.2/02_second_slides.key/Metadata/DocumentIdentifier
new file mode 100644
index 0000000..054c19e
--- /dev/null
+++ b/spec/assets/key-v6.2/02_second_slides.key/Metadata/DocumentIdentifier
@@ -0,0 +1 @@
+3D3D0D28-B768-47C9-8EB9-A8503176D20E
\ No newline at end of file
diff --git a/spec/assets/key-v6.2/02_second_slides.key/Metadata/Properties.plist b/spec/assets/key-v6.2/02_second_slides.key/Metadata/Properties.plist
new file mode 100644
index 0000000..ea92376
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/Metadata/Properties.plist differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/preview-micro.jpg b/spec/assets/key-v6.2/02_second_slides.key/preview-micro.jpg
new file mode 100644
index 0000000..d588bb0
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/preview-micro.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/preview-web.jpg b/spec/assets/key-v6.2/02_second_slides.key/preview-web.jpg
new file mode 100644
index 0000000..590dfc9
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/preview-web.jpg differ
diff --git a/spec/assets/key-v6.2/02_second_slides.key/preview.jpg b/spec/assets/key-v6.2/02_second_slides.key/preview.jpg
new file mode 100644
index 0000000..f2a17f5
Binary files /dev/null and b/spec/assets/key-v6.2/02_second_slides.key/preview.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/Girl_and_Snowcone-small-109.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/Girl_and_Snowcone-small-109.jpg
new file mode 100644
index 0000000..49cd917
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/Girl_and_Snowcone-small-109.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/Happy_Girls-small-107.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/Happy_Girls-small-107.jpg
new file mode 100644
index 0000000..23ff195
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/Happy_Girls-small-107.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt0@2x-111.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt0@2x-111.jpg
new file mode 100644
index 0000000..488f912
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt0@2x-111.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt10@2x-121.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt10@2x-121.jpg
new file mode 100644
index 0000000..133f299
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt10@2x-121.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt11@2x-122.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt11@2x-122.jpg
new file mode 100644
index 0000000..11cd202
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt11@2x-122.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt12@2x-123.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt12@2x-123.jpg
new file mode 100644
index 0000000..254a2d3
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt12@2x-123.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt13@2x-124.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt13@2x-124.jpg
new file mode 100644
index 0000000..5387972
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt13@2x-124.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt1@2x-112.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt1@2x-112.jpg
new file mode 100644
index 0000000..5cf36ee
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt1@2x-112.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt2@2x-113.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt2@2x-113.jpg
new file mode 100644
index 0000000..7a52df8
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt2@2x-113.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt3@2x-114.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt3@2x-114.jpg
new file mode 100644
index 0000000..08b96be
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt3@2x-114.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt4@2x-115.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt4@2x-115.jpg
new file mode 100644
index 0000000..8c8cafc
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt4@2x-115.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt5@2x-116.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt5@2x-116.jpg
new file mode 100644
index 0000000..42694af
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt5@2x-116.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt6@2x-117.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt6@2x-117.jpg
new file mode 100644
index 0000000..25ecd11
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt6@2x-117.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt7@2x-118.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt7@2x-118.jpg
new file mode 100644
index 0000000..68d01bd
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt7@2x-118.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt8@2x-119.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt8@2x-119.jpg
new file mode 100644
index 0000000..1a1ad1b
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt8@2x-119.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/mt9@2x-120.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/mt9@2x-120.jpg
new file mode 100644
index 0000000..9e529bd
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/mt9@2x-120.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/st0-143.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/st0-143.jpg
new file mode 100644
index 0000000..4871e83
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/st0-143.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/st1-144.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/st1-144.jpg
new file mode 100644
index 0000000..f0271cb
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/st1-144.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Data/st2-145.jpg b/spec/assets/key-v6.2/03_third_slides.key/Data/st2-145.jpg
new file mode 100644
index 0000000..f110080
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Data/st2-145.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Index.zip b/spec/assets/key-v6.2/03_third_slides.key/Index.zip
new file mode 100644
index 0000000..23fdbcf
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Index.zip differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Metadata/BuildVersionHistory.plist b/spec/assets/key-v6.2/03_third_slides.key/Metadata/BuildVersionHistory.plist
new file mode 100644
index 0000000..1ebbca1
--- /dev/null
+++ b/spec/assets/key-v6.2/03_third_slides.key/Metadata/BuildVersionHistory.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ local build-Nov 15 2011
+ M6.2-1861-1
+
+
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Metadata/DocumentIdentifier b/spec/assets/key-v6.2/03_third_slides.key/Metadata/DocumentIdentifier
new file mode 100644
index 0000000..054c19e
--- /dev/null
+++ b/spec/assets/key-v6.2/03_third_slides.key/Metadata/DocumentIdentifier
@@ -0,0 +1 @@
+3D3D0D28-B768-47C9-8EB9-A8503176D20E
\ No newline at end of file
diff --git a/spec/assets/key-v6.2/03_third_slides.key/Metadata/Properties.plist b/spec/assets/key-v6.2/03_third_slides.key/Metadata/Properties.plist
new file mode 100644
index 0000000..e42ee28
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/Metadata/Properties.plist differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/preview-micro.jpg b/spec/assets/key-v6.2/03_third_slides.key/preview-micro.jpg
new file mode 100644
index 0000000..b667f59
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/preview-micro.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/preview-web.jpg b/spec/assets/key-v6.2/03_third_slides.key/preview-web.jpg
new file mode 100644
index 0000000..4f33579
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/preview-web.jpg differ
diff --git a/spec/assets/key-v6.2/03_third_slides.key/preview.jpg b/spec/assets/key-v6.2/03_third_slides.key/preview.jpg
new file mode 100644
index 0000000..4e76ee2
Binary files /dev/null and b/spec/assets/key-v6.2/03_third_slides.key/preview.jpg differ
diff --git a/spec/integration_keynote_spec.rb b/spec/integration_keynote_spec.rb
index cc58468..9be375e 100644
--- a/spec/integration_keynote_spec.rb
+++ b/spec/integration_keynote_spec.rb
@@ -3,17 +3,23 @@
describe "Integration tests for Keynote and Common Flows", :integration => true do
+ def mac_version
+ control = Osaka::RemoteControl.new(nil)
+ control.mac_version
+ end
+
before(:each) do
- @assets_directory = File.join(File.dirname(__FILE__), "assets")
+ dir = (mac_version == :mavericks ? "assets/key-v6.2" : "assets/key-09")
+ @assets_directory = File.join(File.dirname(__FILE__), dir)
end
-
+
it "Should be able to do a combine with just one file" do
keynote_file = File.join(@assets_directory, "01_first_slides.key")
Dir.mktmpdir { |dir|
results_file = File.join(dir, "results.key")
CommonFlows.keynote_combine_files(results_file, keynote_file)
- File.exists?(results_file).should == true
+ expect(File.exists?(results_file)).to be(true)
}
end
@@ -22,7 +28,27 @@
Dir.mktmpdir { |dir|
results_file = File.join(dir, "results.key")
CommonFlows.keynote_combine_files_from_directory_sorted(results_file, @assets_directory)
- File.exists?(results_file).should == true
+ expect(File.exists?(results_file)).to be(true)
+ }
+ end
+
+ it "Should be able to combine multiple files with keynote '09" do
+ if mac_version == :mavericks
+ @assets_directory = File.join(File.dirname(__FILE__), "assets/key-09")
+ Dir.mktmpdir { |dir|
+ results_file = File.join(dir, "results.key")
+ CommonFlows.keynote_combine_files_from_directory_sorted(results_file, @assets_directory)
+ expect(File.exists?(results_file)).to be(true)
+ }
+ end
+ end
+
+ it "Should be able to combine multiple files from a file list" do
+
+ Dir.mktmpdir { |dir|
+ results_file = File.join(dir, "results.key")
+ CommonFlows.keynote_combine_files_from_list(results_file, @assets_directory, ["01_first_slides.key", "02_second_slides.key", "03_third_slides.key"])
+ expect(File.exists?(results_file)).to be(true)
}
end
@@ -38,5 +64,13 @@
keynote.close
end
-
+
+ it "Should report non-existant files and terminate" do
+ bad_file_name = "02_typo_slides.key"
+ CommonFlows.should_receive(:output).with("These files do not exist: \n" + File.join(@assets_directory, bad_file_name))
+ Dir.mktmpdir { |dir|
+ CommonFlows.keynote_combine_files_from_list(nil, @assets_directory, ["01_first_slides.key", bad_file_name, "03_third_slides.key"])
+ }
+ end
+
end
\ No newline at end of file
diff --git a/spec/keynote_flows_spec.rb b/spec/keynote_flows_spec.rb
index 9adb4b4..c324602 100644
--- a/spec/keynote_flows_spec.rb
+++ b/spec/keynote_flows_spec.rb
@@ -3,18 +3,39 @@
describe "Common flows in keynote" do
+ let(:mock_keynote) { double("First keynote")}
+
+ def should_get_started
+ mock_keynote.should_receive(:activate)
+ mock_keynote.should_receive(:close_template_chooser_if_any)
+ mock_keynote.should_receive(:raise_error_on_open_standard_windows)
+ end
+
+ def should_create_output_file_from_input(input_file, result_file)
+ mock_keynote.should_receive(:open).with(input_file)
+ mock_keynote.should_receive(:select_all_slides)
+ mock_keynote.should_receive(:save_as).with(result_file)
+ end
+
+ def should_append_file(file)
+ another_keynote = double("keynote with " + file)
+ Osaka::Keynote.should_receive(:new).and_return(another_keynote)
+ another_keynote.should_receive(:open).with(file)
+ another_keynote.should_receive(:select_all_slides)
+ another_keynote.should_receive(:copy)
+ mock_keynote.should_receive(:paste)
+ another_keynote.should_receive(:close)
+ end
+
def should_shutdown
mock_keynote.should_receive(:save)
mock_keynote.should_receive(:close)
mock_keynote.should_receive(:quit)
end
- let(:mock_keynote) { double("First keynote")}
-
it "Should exit if keynote windows are already open" do
Osaka::Keynote.should_receive(:new).and_return(mock_keynote)
- mock_keynote.should_receive(:activate)
- mock_keynote.should_receive(:raise_error_on_open_standard_windows)
+ should_get_started
.with("All Keynote windows must be closed before running this flow")
.and_raise(Osaka::ApplicationWindowsMustBeClosed, "All Keynote windows must be closed before running this flow")
@@ -25,37 +46,18 @@ def should_shutdown
it "Should be able to combine just one single file" do
Osaka::Keynote.should_receive(:new).and_return(mock_keynote)
- mock_keynote.should_receive(:activate)
- mock_keynote.should_receive(:raise_error_on_open_standard_windows)
- mock_keynote.should_receive(:light_table_view)
- mock_keynote.should_receive(:open).with("one_file.key")
- mock_keynote.should_receive(:save_as).with("result.key")
+ should_get_started
+ should_create_output_file_from_input("one_file.key", "result.key")
should_shutdown
CommonFlows.keynote_combine_files("result.key", "one_file.key")
end
it "Should be able to combine multiple files in one result" do
- mock2_keynote = double("Second keynote")
- mock3_keynote = double("Third keynote")
- Osaka::Keynote.should_receive(:new).and_return(mock_keynote, mock2_keynote, mock3_keynote)
- mock_keynote.should_receive(:activate)
- mock_keynote.should_receive(:raise_error_on_open_standard_windows)
- mock_keynote.should_receive(:open).with("one_file.key")
- mock_keynote.should_receive(:light_table_view)
- mock_keynote.should_receive(:save_as).with("result.key")
- mock_keynote.should_receive(:select_all_slides).exactly(2).times
- mock_keynote.should_receive(:paste).exactly(2).times
-
- mock2_keynote.should_receive(:open).with("two_file.key")
- mock2_keynote.should_receive(:select_all_slides)
- mock2_keynote.should_receive(:copy)
- mock2_keynote.should_receive(:close)
-
- mock3_keynote.should_receive(:open).with("three_file.key")
- mock3_keynote.should_receive(:select_all_slides)
- mock3_keynote.should_receive(:copy)
- mock3_keynote.should_receive(:close)
-
+ Osaka::Keynote.should_receive(:new).and_return(mock_keynote)
+ should_get_started
+ should_create_output_file_from_input("one_file.key", "result.key")
+ should_append_file("two_file.key")
+ should_append_file("three_file.key")
should_shutdown
CommonFlows.keynote_combine_files("result.key", ["one_file.key", "two_file.key", "three_file.key"])
end
@@ -78,4 +80,18 @@ def should_shutdown
CommonFlows.keynote_combine_files_from_directory_sorted("results.key", "dirname", /^\d+.*\.key$/)
end
+ it "Should be able to open and close keynote files" do
+ Osaka::Keynote.should_receive(:new).exactly(3).times.and_return(mock_keynote)
+ should_get_started
+ mock_keynote.should_receive(:open).with("file1.key")
+ mock_keynote.should_receive(:close)
+ mock_keynote.should_receive(:open).with("file2.key")
+ mock_keynote.should_receive(:close)
+ mock_keynote.should_receive(:quit)
+ CommonFlows.keynote_open_yield_close(["file1.key", "file2.key"]) { |k| k.instance_of? Osaka::Keynote }
+ end
+
+ it "Should be able to search and replace strings in keynote files" do
+ end
+
end
\ No newline at end of file
diff --git a/spec/keynote_spec.rb b/spec/keynote_spec.rb
index 96c1b25..ae1dac5 100644
--- a/spec/keynote_spec.rb
+++ b/spec/keynote_spec.rb
@@ -40,4 +40,13 @@
subject.select_all_slides
end
+ it "Should use the bash command open to make up for problem in keynote 6.2" do
+ File.stub(:absolute_path).with("file.key").and_return("/path/file.key")
+ subject.stub(:do_and_wait_for_new_window).and_yield.and_return("new_window")
+ Osaka::CommandRunner.stub(:run).with("open /path/file.key", false).and_return("something that is printed during debug")
+ subject.control.stub(:wait_until_exists)
+ subject.control.stub(:set_current_window).with("new_window")
+ subject.open("file.key")
+ end
+
end
diff --git a/spec/osakaexpectations_spec.rb b/spec/osakaexpectations_spec.rb
index 0624e04..32010c5 100644
--- a/spec/osakaexpectations_spec.rb
+++ b/spec/osakaexpectations_spec.rb
@@ -20,7 +20,7 @@
subject.wait_until_exists!(at.window(1)) {
code_block_been_called = true
}
- code_block_been_called.should be_true
+ code_block_been_called.should be true
end
end
\ No newline at end of file
diff --git a/spec/remotecontrol_spec.rb b/spec/remotecontrol_spec.rb
index 49e707e..cf3c243 100644
--- a/spec/remotecontrol_spec.rb
+++ b/spec/remotecontrol_spec.rb
@@ -32,9 +32,15 @@ def expect_execute_and_warning_for(action)
it "Should be possible to check whether an application is still running" do
expect_execute_osascript("tell application \"System Events\"; (name of processes) contains \"#{name}\"; end tell").and_return("false")
- subject.running?.should be_false
+ subject.running?.should be false
end
+ it "Can get the OS version (mavericks)" do
+ expect_execute_osascript("system version of (system info)").and_return("10.9.4\n")
+ subject.mac_version.should == :mavericks
+ subject.mac_version_string.should == "10.9.4"
+ end
+
it "Can get the OS version (lion)" do
expect_execute_osascript("system version of (system info)").and_return("10.7.4\n")
subject.mac_version.should == :lion
@@ -121,12 +127,12 @@ def expect_execute_and_warning_for(action)
it "Should be able to check whether a location exists" do
expect_execute_osascript(/exists button 1/).and_return("true\n")
- subject.exists?(at.button(1)).should be_true
+ subject.exists?(at.button(1)).should be true
end
it "Should be able to check whether a location does not exists" do
expect_execute_osascript(/not exists window 1/).and_return("true\n")
- subject.not_exists?(at.window(1)).should be_true
+ subject.not_exists?(at.window(1)).should be true
end
end
diff --git a/spec/typicalapplication_spec.rb b/spec/typicalapplication_spec.rb
index d92f57d..eee4a9c 100644
--- a/spec/typicalapplication_spec.rb
+++ b/spec/typicalapplication_spec.rb
@@ -92,7 +92,7 @@
it "Should be able to check if its running" do
expect_running?.and_return(true)
- subject.running?.should be_true
+ subject.running?.should equal true
end
it "Won't quit when the application isn't running" do
@@ -177,8 +177,12 @@
it "Should be able to duplicate and close the original document" do
- subject.stub_chain(:duplicate, :control).and_return(new_instance_control)
+ duplicate = double("DuplicateDocument")
+ subject.control.should_receive(:current_window_name).and_return("window name")
+ subject.should_receive(:duplicate).and_return(duplicate)
+ subject.control.should_receive(:click_menu_bar_by_name).with("window name", "Window")
subject.should_receive(:close)
+ duplicate.should_receive(:control).and_return(new_instance_control)
subject.duplicate_and_close_original
subject.control.should equal(new_instance_control)
end
@@ -308,5 +312,12 @@
subject.raise_error_on_open_standard_windows("error message")
}.to raise_error(Osaka::ApplicationWindowsMustBeClosed, "error message")
end
+
+ it "Should do nothing is there template chooser is not open" do
+ subject.stub(:focus)
+ subject.should_receive(:template_chooser?).and_return(false)
+ subject.close_template_chooser_if_any
+ end
+
end
\ No newline at end of file