Skip to content

Commit

Permalink
updating to couchrest 1.1.2 and as_couch_json method
Browse files Browse the repository at this point in the history
  • Loading branch information
samlown committed Jul 19, 2011
1 parent 9d724ae commit 3258ac2
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 6 deletions.
2 changes: 1 addition & 1 deletion couchrest_model.gemspec
Expand Up @@ -23,7 +23,7 @@ Gem::Specification.new do |s|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]

s.add_dependency(%q<couchrest>, "1.1.1")
s.add_dependency(%q<couchrest>, "~> 1.1.2")
s.add_dependency(%q<mime-types>, "~> 1.15")
s.add_dependency(%q<activemodel>, "~> 3.0")
s.add_dependency(%q<tzinfo>, "~> 0.3.22")
Expand Down
6 changes: 6 additions & 0 deletions history.md
@@ -1,5 +1,11 @@
# CouchRest Model Change History

## 1.1.2 - 2011-07-XX

* Minor fixes
* Upgrade to couchrest 1.1.2
* Override as_couch_json to ensure nil values not stored

## 1.1.1 - 2011-07-04

* Minor fix
Expand Down
6 changes: 4 additions & 2 deletions lib/couchrest/model/properties.rb
Expand Up @@ -12,8 +12,10 @@ module Properties
raise "You can only mixin Properties in a class responding to [] and []=, if you tried to mixin CastedModel, make sure your class inherits from Hash or responds to the proper methods" unless (method_defined?(:[]) && method_defined?(:[]=))
end

def as_json(options = nil)
Hash[self].reject{|k,v| v.nil?}.as_json(options)
# Provide an attribute hash ready to be sent to CouchDB but with
# all the nil attributes removed.
def as_couch_json
super.delete_if{|k,v| v.nil?}
end

# Returns the Class properties with their values
Expand Down
14 changes: 11 additions & 3 deletions spec/unit/property_spec.rb
Expand Up @@ -62,15 +62,23 @@
@card.updated_at.should_not be_nil
end

describe "#as_json" do
describe "#as_couch_json" do

it "should provide a simple hash from model" do
@card.as_json.class.should eql(Hash)
@card.as_couch_json.class.should eql(Hash)
end

it "should remove properties from Hash if value is nil" do
@card.last_name = nil
@card.as_json.keys.include?('last_name').should be_false
@card.as_couch_json.keys.include?('last_name').should be_false
end

end

describe "#as_json" do

it "should provide a simple hash from model" do
@card.as_json.class.should eql(Hash)
end

it "should pass options to Active Support's as_json" do
Expand Down

0 comments on commit 3258ac2

Please sign in to comment.