I just tried to integrate a simple test to check some options passed as
argument to a class to be executed:
require 'spec_helper'
module PropertyInjector
describe Options do
describe "#source folder option" do
it "sets up a source folder" do
argv = %w{-e path/to/some/folder}
puts "argv[0]: #{argv[0]}"
puts "argv[1]: #{argv[1]}"
options = Options.new(argv)
puts "options.export_folder: #{options.export_folder}"
options.export_folder.should == argv[1]
end
end
end
end
class Options:
module PropertyInjector
class Options
def initialize(argv)
@bundle_folder = DEFAULT_BUNDLE_FOLDER
@export_folder = DEFAULT_EXPORT_FOLDER
@import_file_path = File.join(DEFAULT_IMPORT_FOLDER,
EXCEL_FILE_NAME)
@export = true
@locales = ['en']
parse(argv)
end
private
def parse(argv)
OptionParser.new do |opts|
opts.banner = "Usage: translation properties injector
[options]."
opts.on("-e [EXPORT_FOLDER]", "--export [EXPORT_FOLDER]",
String, "Path to the export folder to contain a generated Excel file,
(default=#{DEFAULT_EXPORT_FOLDER}") do |folder|
@export = true
@export_folder = folder if folder
end
opts.on("-i [EXCEL_FILE_PATH]", "--import [EXCEL_FILE_PATH]",
String, "Path to the Excel file to import translations from
(default=#{DEFAULT_IMPORT_FOLDER}/#{EXCEL_FILE_NAME})") do |file_path|
@export = false
@import_file_path = file_path if file_path
end
opts.on("-b [BUNDLE_FOLDER]", "--bundle [BUNDLE_FOLDER]",
String, "Path to the folder containing properties files,
(default=#{DEFAULT_BUNDLE_FOLDER})") do |folder|
@bundle_folder = folder if folder
end
opts.on("-l [l1,l2,l3]", "--langs [l1,l2,l3]", Array, "Locales
values to use separated by comma, starting from the known one,
default=en") do |langs|
if langs
@locales = langs.map(&:downcase)
@locales.uniq!
end
end
opts.on("-", "--help", "Show this message") do
puts opts
exit
end
begin
argv = ["-h"] if argv.empty?
opts.parse!(argv)
rescue OptionParser::ParseError => e
STDERR.puts e.message, "\n", opts
exit(1)
end
end
end
end
end
After running the test, here is what I got:
PropertyInjector::Options
#source folder option
argv[0]: -e
argv[1]: path/to/some/folder
options.export_folder: path/to/some/folder
sets up a source folder (FAILED - 1)
Failures:
1) PropertyInjector::Options#source folder option sets up a source
folder
Failure/Error: options.export_folder.should == argv[1]
expected: nil
got: "path/to/some/folder" (using ==)
# ./spec/property_injector/options_spec.rb:12:in `block (3 levels)
in <module:PropertyInjector>'
Finished in 0.01562 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/property_injector/options_spec.rb:6 #
PropertyInjector::Options#source folder option sets up a source folder
WHY the second argument is NIL if it WAS NOT before
(path/to/some/folder)?
Thank you in advance.