test/json_representer_test.rb in roar-0.8.0 vs test/json_representer_test.rb in roar-0.8.1
- old
+ new
@@ -1,41 +1,53 @@
require 'test_helper'
require "test_xml/mini_test"
require "roar/representer/json"
-class JsonRepresenterFunctionalTest < MiniTest::Spec
- class OrderRepresenter < Roar::Representer::JSON
- self.representation_name= :order
- representable_property :id
+class JsonRepresenterTest < MiniTest::Spec
+ class Order
+ include Roar::Representer::JSON
+ property :id
+ property :pending
end
describe "JsonRepresenter" do
before do
- @r = OrderRepresenter.new
+ @r = Order.new
end
describe "#to_json" do
it "#serialize returns the serialized model" do
@r.id = 1
- assert_equal '{"order":{"id":1}}', @r.serialize
+ assert_equal '{"order":{"id":1}}', @r.to_json
end
-
-
- it ".from_xml returns the deserialized model" do
- @m = OrderRepresenter.deserialize('{"order": {"id":1}}')
+ end
+
+ describe ".from_json" do
+ it "returns the deserialized model" do
+ @m = Order.from_json('{"order": {"id":1}}')
assert_equal 1, @m.id
end
- it ".from_xml still works with nil" do
- assert OrderRepresenter.deserialize(nil)
+ it "accepts :except option" do
+ order = Order.from_json({order: {id: 1, pending: 1}}.to_json, :except => [:id])
+ assert_equal nil, order.id
+ assert_equal 1, order.pending
end
+ it "accepts :include option" do
+ order = Order.from_json({order: {id: 1, pending: 1}}.to_json, :include => [:id])
+ assert_equal 1, order.id
+ assert_equal nil, order.pending
+ end
+
+ it "works with a nil document" do
+ assert Order.from_json(nil)
+ end
end
end
-
end
class JsonHyperlinkRepresenterTest
describe "API" do
before do
@@ -58,44 +70,37 @@
end
class JsonHypermediaTest
describe "Hypermedia API" do
before do
- @c = Class.new(Roar::Representer::JSON) do
+ @c = Class.new do
+ include Roar::Representer::JSON
include Roar::Representer::Feature::Hypermedia
self.representation_name= :order
- representable_property :id
+ property :id
link :self do "http://self" end
link :next do "http://next/#{id}" end
end
@r = @c.new
end
it "responds to #links" do
- assert_equal nil, @r.links
+ assert_equal [], @r.links
end
- it "computes links in #from_attributes" do
- @r = @c.from_attributes({"id" => 1})
- assert_equal 2, @r.links.size
- assert_equal({"rel"=>:self, "href"=>"http://self"}, @r.links.first.to_attributes)
- assert_equal({"rel"=>:next, "href"=>"http://next/1"}, @r.links.last.to_attributes)
- end
-
it "extracts links from JSON" do
- @r = @c.deserialize({:order => {:links => [{:rel => "self", :href => "http://self"}]}}.to_json)
+ @r = @c.from_json({:order => {:links => [{:rel => "self", :href => "http://self"}]}}.to_json)
assert_equal 1, @r.links.size
assert_equal({"rel"=>"self", "href"=>"http://self"}, @r.links.first.to_attributes)
end
it "renders link: correctly in JSON" do
- assert_equal "{\"order\":{\"id\":1,\"links\":[{\"rel\":\"self\",\"href\":\"http://self\"},{\"rel\":\"next\",\"href\":\"http://next/1\"}]}}", @c.from_attributes({"id" => 1}).serialize
+ assert_equal "{\"order\":{\"id\":1,\"links\":[{\"rel\":\"self\",\"href\":\"http://self\"},{\"rel\":\"next\",\"href\":\"http://next/1\"}]}}", @c.from_attributes(:id => 1).to_json
end
-
end
end