Sha256: bae1b471eea47b30d88cedd431bd53ccdba434f7387440966b7c76e6cb23facc

Contents?: true

Size: 1.58 KB

Versions: 15

Compression:

Stored size: 1.58 KB

Contents

require_relative 'helper'
require_relative "../lib/ohm/json"

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

class Programmer < Ohm::Model
  attribute :language

  index :language

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

test "exports model.to_hash to json" do
  assert_equal Hash.new, JSON.parse(Venue.new.to_json)

  venue = Venue.create(name: "foo")
  json  = JSON.parse(venue.to_json)
  assert_equal venue.id, json["id"]
  assert_equal nil, json["name"]

  programmer = Programmer.create(language: "Ruby")
  json = JSON.parse(programmer.to_json)

  assert_equal programmer.id, json["id"]
  assert_equal programmer.language, json["language"]
end

test "exports a set 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 "exports a multiset to json" do
  Programmer.create(language: "Ruby")
  Programmer.create(language: "Python")

  expected = [{ id: "1", language: "Ruby" }, { id: "2", language: "Python"}].to_json
  result   = Programmer.find(language: "Ruby").union(language: "Python").to_json

  assert_equal expected, result
end

test "exports a list 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

15 entries across 15 versions & 3 rubygems

Version Path
ohm_util-0.1 test/json.rb
ohm-3.1.1 test/json.rb
ohm-3.1.0 test/json.rb
ohm-3.0.3 test/json.rb
ohm-3.0.2 test/json.rb
ohm-3.0.1 test/json.rb
ohm-3.0.0 test/json.rb
ohm-2.3.0 test/json.rb
ohm-2.2.1 test/json.rb
sohm-0.0.1 test/json.rb
ohm-2.2.0 test/json.rb
ohm-2.1.0 test/json.rb
ohm-2.0.1 test/json.rb
ohm-2.0.0 test/json.rb
ohm-2.0.0.rc2 test/json.rb