class Holidays::Definition::Parser::Test
def call(tests)
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
def initialize(validator)
def initialize(validator) @validator = validator end
def is_holiday?(flag)
def is_holiday?(flag) flag.nil? ? true : !!flag end
def parse_dates(dates)
def parse_dates(dates) unless dates.is_a?(Array) dates = [ dates ] end dates.map do |d| DateTime.parse(d) end end
def parse_options(options)
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
def parse_regions(regions)
def parse_regions(regions) regions.map do |r| r.to_sym end end
def validate!(tests)
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