spec/mongomodel/concerns/serialization/json_serialization_spec.rb in mongomodel-0.5.5 vs spec/mongomodel/concerns/serialization/json_serialization_spec.rb in mongomodel-0.5.6
- old
+ new
@@ -6,75 +6,75 @@
property :name, String
property :age, Integer
property :paid, Boolean
property :prefs, Hash
property :internal, String, :internal => true
-
+
def hello
"Hi friend!"
end
end
-
+
let(:instance) do
TestModel.new(:id => "abc-123", :name => 'Hello World', :age => 25, :paid => true, :prefs => { :foo => 'bar' }, :internal => 'hideme')
end
-
+
it "includes root in the JSON response when include_root_in_json = true" do
TestModel.include_root_in_json = true
-
+
json = instance.to_json
json.should match(/^\{"test_model":\{/)
end
-
+
it "does not include root in the JSON response when include_root_in_json = false" do
TestModel.include_root_in_json = false
-
+
json = instance.to_json
json.should_not match(/^\{"test_model":\{/)
end
-
+
it "encodes all public attributes" do
json = instance.to_json
json.should match(/"name":"Hello World"/)
json.should match(/"age":25/)
json.should match(/"paid":true/)
json.should match(/"prefs":\{"foo":"bar"\}/)
end
-
+
if described_class == Document
it "encodes the id" do
json = instance.to_json
json.should match(/"id":"abc-123"/)
end
end
-
+
it "does not encode internal attributes" do
json = instance.to_json
json.should_not match(/"internal":"hideme"/)
end
-
+
it "allows attribute filtering with only" do
json = instance.to_json(:only => [:name, :age])
json.should match(/"name":"Hello World"/)
json.should match(/"age":25/)
json.should_not match(/"paid":true/)
json.should_not match(/"prefs":\{"foo":"bar"\}/)
end
-
+
it "allows attribute filtering with except" do
json = instance.to_json(:except => [:name, :age])
json.should_not match(/"name":"Hello World"/)
json.should_not match(/"age":25/)
json.should match(/"paid":true/)
json.should match(/"prefs":\{"foo":"bar"\}/)
end
-
+
it "allows methods to be included" do
json = instance.to_json(:methods => [:hello, :type])
json.should match(/"hello":"Hi friend!"/)
json.should match(/"type":"TestModel"/)
end
-
+
it "encodes keys in the serializable_hash as strings" do
hash = instance.serializable_hash(:methods => :hello)
hash.should have_key("name")
hash.should have_key("hello")
end