Sha256: b87e2314c6d1810e0698784bf190d0eb6cc06956db3bbe9ccbdaaa888bd4664a

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

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

class Venue < Sohm::Model
  include Sohm::AutoId

  attribute :name
  list :programmers, :Programmer
end

class Programmer < Sohm::Model
  include Sohm::AutoId
  include Sohm::IndexAll

  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 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

6 entries across 6 versions & 1 rubygems

Version Path
sohm-0.10.5 test/json.rb
sohm-0.10.4 test/json.rb
sohm-0.10.3 test/json.rb
sohm-0.10.2 test/json.rb
sohm-0.10.1 test/json.rb
sohm-0.10.0 test/json.rb