You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by lu...@redhat.com on 2013/02/08 19:59:29 UTC
[PATCH] Entity.ent_properties: make sure we always store a Hash
From: David Lutterkort <lu...@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
Re: [PATCH] Entity.ent_properties: make sure we always store a Hash
Posted by Michal Fojtik <mf...@redhat.com>.
On 02/08, lutter@redhat.com wrote:
ACK, nice catch.
-- Michal
> From: David Lutterkort <lu...@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
>
--
Michal Fojtik <mf...@redhat.com>
Deltacloud API, CloudForms