Sha256: 8e24967719867edb77f3d52e2f9bf5d698c37778382bf4009455fc34f7fc9391

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

# encoding: UTF-8

require File.expand_path("./helper", File.dirname(__FILE__))

require "json"
require "ohm/json"

class Venue < Ohm::Model
  attribute :name
  list :programmers, :Programmer

  def validate
    assert_present :name
  end
end

class Programmer < Ohm::Model
  attribute :language

  def validate
    assert_present :language
  end

  def to_hash
    super.merge(:language => language)
  end
end

test "export an empty hash via to_hash" do
  person = Venue.new
  assert Hash.new == person.to_hash
end

test "export a hash with the its id" do
  person = Venue.create(:name => "John Doe")
  assert_equal Hash[:id => 1], person.to_hash
end

test "return the merged attributes" do
  programmer = Programmer.create(:language => "Ruby")
  expected_hash = { :id => 1, :language => 'Ruby' }

  assert expected_hash == programmer.to_hash
end

test "just be the to_hash of a model" do
  json = JSON.parse(Programmer.create(:language => "Ruby").to_json)

  assert ["id", "language"] == json.keys.sort
  assert 1 == json["id"]
  assert "Ruby" == json["language"]
end

test "export an array of records to json" do
  Programmer.create(:language => "Ruby")
  Programmer.create(:language => "Python")

  expected = [{ :id => "1", :language => "Ruby" }, { :id => "2", :language => "Python"}].to_json
  assert_equal expected, Programmer.all.to_json
end

test "export an array of lists to json" do
  venue = Venue.create(:name => "Foo")

  venue.programmers.push(Programmer.create(:language => "Ruby"))
  venue.programmers.push(Programmer.create(:language => "Python"))

  expected = [{ :id => "1", :language => "Ruby" }, { :id => "2", :language => "Python"}].to_json
  assert_equal expected, venue.programmers.to_json
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-2.0.0.alpha5 test/json.rb