From: David Lutterkort <lut...@redhat.com> Previously, if you assigned nil to properties, ent_properties would end up being "null" which is not valid JSON. --- server/lib/db/entity.rb | 5 +++++ server/tests/cimi/db/entity_test.rb | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 server/tests/cimi/db/entity_test.rb
diff --git a/server/lib/db/entity.rb b/server/lib/db/entity.rb index 08ed70b..fa8109c 100644 --- a/server/lib/db/entity.rb +++ b/server/lib/db/entity.rb @@ -18,6 +18,11 @@ module Deltacloud retval end + def properties=(v) + # Make sure @properties is always a Hash + @properties = v || {} + end + def before_save self.ent_properties = properties.to_json super diff --git a/server/tests/cimi/db/entity_test.rb b/server/tests/cimi/db/entity_test.rb new file mode 100644 index 0000000..4c31b66 --- /dev/null +++ b/server/tests/cimi/db/entity_test.rb @@ -0,0 +1,29 @@ +require 'rubygems' +require 'require_relative' if RUBY_VERSION < '1.9' +require 'minitest/autorun' + +require_relative 'db_helper.rb' +require_relative '../spec_helper.rb' +require_relative './../collections/common.rb' + +describe "Deltacloud::Database::Entity" do + Provider = Deltacloud::Database::Provider + Entity = Deltacloud::Database::Entity + BaseModel = CIMI::Model::Base + + before do + ENV['RACK_ENV'] = 'development' + @prov = Provider::lookup + end + + it 'newly created entities have valid ent_properties' do + model = BaseModel.new(:id => "/base/42") + ent = Entity.retrieve(model) + ent.properties = nil + ent.exists?.must_equal false + ent.save + + ent = Entity.retrieve(model) + ent.exists?.must_equal true + end +end -- 1.8.1.2