Sha256: 7baaa0aa7f47734f977b10701d64c5b6227760112dc62b42f3bc05cc5aadd0e6

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

module FixtureParser
  module_function

  def databases
    parse_file('databases')['databases']
  end

  def database(id)
    databases.find { |db| db['id'] == id }
  end

  def forms(database_id = nil)
    if database_id.nil?
      databases.flat_map do |db|
        parse_file("databases/#{db['id']}/forms")['forms']
      end
    elsif database(database_id)
      parse_file("databases/#{database_id}/forms")['forms']
    else
      []
    end
  end

  def form(id, database_id = nil)
    forms(database_id).find { |f| f['id'] == id }
  end

  def fields(form_id = nil, database_id = nil)
    if form_id.nil?
      forms(database_id).flat_map do |form|
        parse_file("databases/#{form['app_id']}/forms/#{form['id']}/fields")['fields']
      end
    elsif form = form(form_id, database_id)
      parse_file("databases/#{form['app_id']}/forms/#{form_id}/fields")['fields']
    else
      []
    end
  end

  def field(id, form_id = nil, database_id = nil)
    fields(form_id, database_id).find { |f| f['id'] == id }
  end

  def records(form_id, database_id, page = 1)
    parse_file("databases/#{database_id}/forms/#{form_id}/records/#{page}")['records']
  end

  def pretty(method_name, *args)
    case result = public_send(method_name, *args)
    when Array
      result.map { |e| OpenStruct.new(e) }
    when Hash
      OpenStruct.new(result)
    else
      result
    end
  end

  private

  module_function

  def parse_file(file_name)
    full_name = "#{File.dirname(__FILE__)}/fixtures/#{file_name}.json"
    if File.exist?(full_name)
      JSON.parse(File.open(full_name).read)
    else
      {}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
task_helper-0.0.3 spec/support/fixture_parser.rb