class Holidays::Definition::Parser::Test
Public Class Methods
new(validator)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 7 def initialize(validator) @validator = validator end
Public Instance Methods
call(tests)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 11 def call(tests) return [] if tests.nil? validate!(tests) tests.map do |t| given = t["given"] expect = t["expect"] Entity::Test.new( dates: parse_dates(given["date"]), regions: parse_regions(given["regions"]), options: parse_options(given["options"]), name: expect["name"], holiday?: is_holiday?(expect["holiday"]), ) end end
Private Instance Methods
is_holiday?(flag)
click to toggle source
If flag is not present then default to ‘true’
# File lib/holidays/definition/parser/test.rb, line 80 def is_holiday?(flag) flag.nil? ? true : !!flag end
parse_dates(dates)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 51 def parse_dates(dates) unless dates.is_a?(Array) dates = [ dates ] end dates.map do |d| DateTime.parse(d) end end
parse_options(options)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 67 def parse_options(options) if options if options.is_a?(Array) options.map do |o| o.to_sym end else [ options.to_sym ] end end end
parse_regions(regions)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 61 def parse_regions(regions) regions.map do |r| r.to_sym end end
validate!(tests)
click to toggle source
# File lib/holidays/definition/parser/test.rb, line 32 def validate!(tests) raise ArgumentError unless tests.all? do |t| dates = t["given"]["date"] unless dates.is_a?(Array) dates = [ dates ] end @validator.valid?( { :dates => dates, :regions => t["given"]["regions"], :options => t["given"]["options"], :name => t["expect"]["name"], :holiday => t["expect"]["holiday"], } ) end end