storage_room 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/History.txt +6 -0
  2. data/README.rdoc +10 -4
  3. data/Rakefile +3 -1
  4. data/TODO +7 -2
  5. data/VERSION +1 -1
  6. data/examples/authentication.rb +5 -3
  7. data/examples/create_entry.rb +8 -5
  8. data/examples/destroy_entry.rb +2 -2
  9. data/examples/get_collections.rb +2 -2
  10. data/examples/import_csv.rb +4 -4
  11. data/examples/search_entries.rb +2 -2
  12. data/examples/update_entry.rb +2 -2
  13. data/lib/console.rb +12 -0
  14. data/lib/storage_room.rb +73 -34
  15. data/lib/storage_room/accessors.rb +190 -0
  16. data/lib/storage_room/array.rb +3 -23
  17. data/lib/storage_room/embedded.rb +1 -1
  18. data/lib/storage_room/embeddeds/field.rb +28 -0
  19. data/lib/storage_room/embeddeds/fields/association_field.rb +17 -0
  20. data/lib/storage_room/embeddeds/fields/associations/many_association_field.rb +9 -0
  21. data/lib/storage_room/embeddeds/fields/associations/one_association_field.rb +9 -0
  22. data/lib/storage_room/embeddeds/fields/atomic/boolean_field.rb +6 -0
  23. data/lib/storage_room/embeddeds/fields/atomic/date_field.rb +6 -0
  24. data/lib/storage_room/embeddeds/fields/atomic/float_field.rb +6 -0
  25. data/lib/storage_room/embeddeds/fields/atomic/integer_field.rb +6 -0
  26. data/lib/storage_room/embeddeds/fields/atomic/string_field.rb +6 -0
  27. data/lib/storage_room/embeddeds/fields/atomic/time_field.rb +6 -0
  28. data/lib/storage_room/embeddeds/fields/atomic_field.rb +15 -0
  29. data/lib/storage_room/embeddeds/fields/compound/attachment_field.rb +6 -0
  30. data/lib/storage_room/embeddeds/fields/compound/file_field.rb +6 -0
  31. data/lib/storage_room/embeddeds/fields/compound/image_field.rb +6 -0
  32. data/lib/storage_room/embeddeds/fields/compound/location_field.rb +6 -0
  33. data/lib/storage_room/embeddeds/fields/compound_field.rb +10 -0
  34. data/lib/storage_room/embeddeds/file.rb +1 -1
  35. data/lib/storage_room/embeddeds/image.rb +6 -0
  36. data/lib/storage_room/embeddeds/location.rb +2 -1
  37. data/lib/storage_room/extensions/const_defined.rb +12 -0
  38. data/lib/storage_room/identity_map.rb +117 -0
  39. data/lib/storage_room/model.rb +19 -23
  40. data/lib/storage_room/models/collection.rb +76 -11
  41. data/lib/storage_room/models/entry.rb +6 -32
  42. data/lib/storage_room/plugins.rb +22 -0
  43. data/lib/storage_room/proxy.rb +49 -0
  44. data/lib/storage_room/{base.rb → resource.rb} +13 -36
  45. data/spec/fixtures/collection.json +0 -16
  46. data/spec/spec_helper.rb +1 -0
  47. data/spec/storage_room/accessors_spec.rb +107 -0
  48. data/spec/storage_room/array_spec.rb +13 -9
  49. data/spec/storage_room/embedded_spec.rb +5 -1
  50. data/spec/storage_room/embeddeds/field_spec.rb +25 -0
  51. data/spec/storage_room/embeddeds/fields/association_field_spec.rb +29 -0
  52. data/spec/storage_room/embeddeds/fields/associations/many_association_field_spec.rb +21 -0
  53. data/spec/storage_room/embeddeds/fields/associations/one_association_field_spec.rb +19 -0
  54. data/spec/storage_room/embeddeds/fields/atomic/boolean_field_spec.rb +5 -0
  55. data/spec/storage_room/embeddeds/fields/atomic/date_field_spec.rb +5 -0
  56. data/spec/storage_room/embeddeds/fields/atomic/float_field_spec.rb +5 -0
  57. data/spec/storage_room/embeddeds/fields/atomic/integer_field_spec.rb +5 -0
  58. data/spec/storage_room/embeddeds/fields/atomic/string_field_spec.rb +5 -0
  59. data/spec/storage_room/embeddeds/fields/atomic/time_field_spec.rb +5 -0
  60. data/spec/storage_room/embeddeds/fields/atomic_field_spec.rb +27 -0
  61. data/spec/storage_room/embeddeds/fields/compound/attachment_field_spec.rb +5 -0
  62. data/spec/storage_room/embeddeds/fields/compound/file_field_spec.rb +5 -0
  63. data/spec/storage_room/embeddeds/fields/compound/image_field_spec.rb +5 -0
  64. data/spec/storage_room/embeddeds/fields/compound/location_field_spec.rb +5 -0
  65. data/spec/storage_room/embeddeds/fields/compound_field_spec.rb +17 -0
  66. data/spec/storage_room/embeddeds/location_spec.rb +13 -1
  67. data/spec/storage_room/identity_map_spec.rb +53 -0
  68. data/spec/storage_room/model_spec.rb +70 -50
  69. data/spec/storage_room/models/collection_spec.rb +57 -14
  70. data/spec/storage_room/models/entry_spec.rb +16 -20
  71. data/spec/storage_room/proxy_spec.rb +58 -0
  72. data/spec/storage_room/resource_spec.rb +98 -0
  73. data/spec/storage_room_spec.rb +45 -9
  74. data/storage_room.gemspec +48 -9
  75. data/tasks/storage_room.rake +3 -0
  76. metadata +49 -10
  77. data/lib/storage_room/attributes.rb +0 -46
  78. data/lib/storage_room/field.rb +0 -8
  79. data/spec/storage_room/attributes_spec.rb +0 -82
  80. data/spec/storage_room/base_spec.rb +0 -118
  81. data/spec/storage_room/field_spec.rb +0 -5
@@ -1,5 +1,9 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
+ class PointOfInterest < StorageRoom::Model
4
+ key :value
5
+ end
6
+
3
7
  describe StorageRoom::Array do
4
8
  context "Class" do
5
9
  context "Configuration" do
@@ -22,10 +26,10 @@ describe StorageRoom::Array do
22
26
  end
23
27
  end
24
28
 
25
- describe "#set_from_api" do
29
+ describe "#set_from_response_data" do
26
30
  before(:each) do
27
- @hash = {'@page' => 1, 'resources' => [{'one' => 1, '@type' => 'Guidebook'}, {'two' => 2, '@type' => 'Guidebook'}]}
28
- @array.set_from_api(@hash)
31
+ @hash = {'@page' => 1, 'resources' => [{'value' => 1, '@type' => 'PointOfInterest'}, {'value' => 2, '@type' => 'PointOfInterest'}]}
32
+ @array.set_from_response_data(@hash)
29
33
  end
30
34
 
31
35
  it "should set meta data" do
@@ -34,10 +38,10 @@ describe StorageRoom::Array do
34
38
 
35
39
  it "should set resources" do
36
40
  @array.resources.should have(2).items
37
- @array.resources[0].should be_an_instance_of(Guidebook)
38
- @array.resources[0][:one].should == 1
39
- @array.resources[1].should be_an_instance_of(Guidebook)
40
- @array.resources[1][:two].should == 2
41
+ @array.resources[0].should be_an_instance_of(PointOfInterest)
42
+ @array.resources[0].value.should == 1
43
+ @array.resources[1].should be_an_instance_of(PointOfInterest)
44
+ @array.resources[1].value.should == 2
41
45
  end
42
46
  end
43
47
 
@@ -54,7 +58,7 @@ describe StorageRoom::Array do
54
58
  end
55
59
 
56
60
  it "should load when present" do
57
- @array[:@next_page_url] = "url"
61
+ @array.response_data[:@next_page_url] = "url"
58
62
  @array.stub(:reload)
59
63
  @array.should_receive(:reload)
60
64
  @array.load_next_page!.should be_true
@@ -67,7 +71,7 @@ describe StorageRoom::Array do
67
71
  end
68
72
 
69
73
  it "should load when present" do
70
- @array[:@previous_page_url] = "url"
74
+ @array.response_data[:@previous_page_url] = "url"
71
75
  @array.stub(:reload)
72
76
  @array.should_receive(:reload)
73
77
  @array.load_previous_page!.should be_true
@@ -1,5 +1,9 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe StorageRoom::Embedded do
4
-
4
+ context "Configuration" do
5
+ it "should include Accessors" do
6
+ StorageRoom::Embedded.should include(StorageRoom::Accessors)
7
+ end
8
+ end
5
9
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::Field do
4
+ before(:each) do
5
+ @field = StorageRoom::Field.new
6
+ end
7
+
8
+ context "Configuration" do
9
+ it "should have keys" do
10
+ keys = StorageRoom::Field.attribute_options.keys
11
+
12
+ [:name, :identifier, :hint, :input_type, :required, :unique, :maximum_length, :minimum_length, :minimum_number, :maximum_number, :minimum_size, :maximum_size].each do |key|
13
+ keys.should include(key)
14
+ end
15
+ end
16
+ end
17
+
18
+ context "Methods" do
19
+ describe "#add_to_entry_class" do
20
+ it "should have method" do
21
+ @field.add_to_entry_class(StorageRoom::Entry)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::AssociationField do
4
+ before(:each) do
5
+ @field = StorageRoom::AssociationField.new(:collection_url => 'URL')
6
+ end
7
+
8
+ context "Configuration" do
9
+ it "should have keys" do
10
+ keys = StorageRoom::AssociationField.attribute_options.keys
11
+
12
+ [:collection_url].each do |key|
13
+ keys.should include(key)
14
+ end
15
+ end
16
+ end
17
+
18
+ context "Methods" do
19
+ describe "#collection" do
20
+ it "should return collection" do
21
+ collection = StorageRoom::Collection.new
22
+ StorageRoom::Collection.stub(:load).and_return(collection)
23
+ StorageRoom::Collection.should_receive(:load).with('URL')
24
+
25
+ @field.collection.should == collection
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::ManyAssociationField do
4
+ describe StorageRoom::OneAssociationField do
5
+ before(:each) do
6
+ @field = StorageRoom::ManyAssociationField.new(:collection_url => 'URL', :identifier => 'identifier')
7
+ end
8
+
9
+ context "Methods" do
10
+ describe "#add_to_entry_class" do
11
+ it "should add many" do
12
+ StorageRoom::Collection.stub(:load)
13
+
14
+ klass = StorageRoom::Entry
15
+ klass.should_receive(:many).with('identifier')
16
+ @field.add_to_entry_class(klass)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::OneAssociationField do
4
+ before(:each) do
5
+ @field = StorageRoom::OneAssociationField.new(:collection_url => 'URL', :identifier => 'identifier')
6
+ end
7
+
8
+ context "Methods" do
9
+ describe "#add_to_entry_class" do
10
+ it "should add one" do
11
+ StorageRoom::Collection.stub(:load)
12
+
13
+ klass = StorageRoom::Entry
14
+ klass.should_receive(:one).with('identifier')
15
+ @field.add_to_entry_class(klass)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::BooleanField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::DateField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::FloatField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::IntegerField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::StringField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::TimeField do
4
+
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::AtomicField do
4
+ before(:each) do
5
+ @field = StorageRoom::AtomicField.new(:identifier => 'identifier')
6
+ end
7
+
8
+ context "Configuration" do
9
+ it "should have keys" do
10
+ keys = StorageRoom::AtomicField.attribute_options.keys
11
+
12
+ [:default_value, :choices, :include_blank_choice].each do |key|
13
+ keys.should include(key)
14
+ end
15
+ end
16
+ end
17
+
18
+ context "Methods" do
19
+ describe "#add_to_entry_class" do
20
+ it "should add key" do
21
+ klass = StorageRoom::Entry
22
+ klass.should_receive(:key).with('identifier')
23
+ @field.add_to_entry_class(klass)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::AttachmentField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::FileField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::ImageField do
4
+
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::LocationField do
4
+
5
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe StorageRoom::CompoundField do
4
+ before(:each) do
5
+ @field = StorageRoom::CompoundField.new(:identifier => 'identifier')
6
+ end
7
+
8
+ context "Methods" do
9
+ describe "#add_to_entry_class" do
10
+ it "should add one" do
11
+ klass = StorageRoom::Entry
12
+ klass.should_receive(:one).with('identifier')
13
+ @field.add_to_entry_class(klass)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,17 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
3
  describe StorageRoom::Location do
4
-
4
+ before(:each) do
5
+ @location = StorageRoom::Location.new(:lat => 1, :lng => 2)
6
+ end
7
+
8
+ context "Configuration" do
9
+ it "should have keys" do
10
+ keys = StorageRoom::Location.attribute_options.keys
11
+
12
+ [:lat, :lng].each do |key|
13
+ keys.should include(key)
14
+ end
15
+ end
16
+ end
5
17
  end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ class Recipe < StorageRoom::Entry
4
+ key :name
5
+ end
6
+
7
+ describe StorageRoom::IdentityMap do
8
+ before(:each) do
9
+ @response_data = {'@url' => 'URL', '@type' => 'Recipe', 'name' => 'NAME'}
10
+
11
+ @recipe = Recipe.new_from_response_data(@response_data)
12
+ end
13
+
14
+ context "Module Methods" do
15
+ describe "#models" do
16
+ it "should return set" do
17
+ set = StorageRoom::IdentityMap.models
18
+ set.should be_an_instance_of(Set)
19
+ set.should include(StorageRoom::Resource)
20
+ end
21
+ end
22
+
23
+ describe "#clear" do
24
+ it "should remove objects" do
25
+ StorageRoom::Resource.identity_map['URL'] = 1
26
+ StorageRoom::Resource.identity_map.should have(1).item
27
+
28
+ StorageRoom::IdentityMap.clear
29
+ StorageRoom::Resource.identity_map.should have(0).items
30
+ end
31
+ end
32
+ end
33
+
34
+ context "Class Methods" do
35
+ describe "#new_from_response_data" do
36
+ it "should return existing object from identity map" do
37
+ response_data = {'@url' => 'URL', '@type' => 'Recipe'}
38
+
39
+ recipe = Recipe.new_from_response_data(response_data)
40
+ recipe.should == @recipe
41
+ recipe.name.should == 'NAME'
42
+ end
43
+
44
+ it "should return new object" do
45
+ response_data = {'@url' => 'URL2', '@type' => 'Recipe', 'name' => 'NAME2'}
46
+
47
+ recipe = Recipe.new_from_response_data(response_data)
48
+ recipe.should_not == @recipe
49
+ recipe.name.should == 'NAME2'
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,6 +1,28 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
+ class Contributor < StorageRoom::Entry
4
+
5
+ end
6
+
7
+ class Author < StorageRoom::Entry
8
+
9
+ end
10
+
11
+ class Recipe < StorageRoom::Entry
12
+ key :name
13
+ key :ingredients
14
+
15
+ one :author
16
+ many :contributors
17
+ end
18
+
19
+
20
+
3
21
  describe StorageRoom::Model do
22
+ before(:each) do
23
+ @model = Recipe.new(:name => 'NAME')
24
+ end
25
+
4
26
  context "Class" do
5
27
  context "Methods" do
6
28
  describe "#show_path" do
@@ -59,15 +81,10 @@ describe StorageRoom::Model do
59
81
  end
60
82
  end
61
83
 
62
- context "Instance" do
63
- before(:each) do
64
- @model = StorageRoom::Model.new(:test => 1, :@attr => 2)
65
- end
66
-
84
+ context "Instance" do
67
85
  describe "#initialize" do
68
86
  it "should set attributes" do
69
- @model[:test].should == 1
70
- @model[:@attr].should == 2
87
+ @model.name.should == 'NAME'
71
88
  end
72
89
 
73
90
  it "should set new record" do
@@ -79,18 +96,17 @@ describe StorageRoom::Model do
79
96
  end
80
97
  end
81
98
 
82
- describe "#set_from_api" do
99
+ describe "#set_from_response_data" do
83
100
  before(:each) do
84
- @model.set_from_api(:test2 => 3)
101
+ @model.set_from_response_data('ingredients' => 'INGREDIENTS', '@version' => 2)
85
102
  end
86
103
 
87
104
  it "should reset attributes" do
88
- @model[:test].should be_nil
89
- @model[:@attr].should be_nil
105
+ @model.name.should be_nil
90
106
  end
91
107
 
92
108
  it "should set new attributes" do
93
- @model[:test2].should == 3
109
+ @model.ingredients.should == 'INGREDIENTS'
94
110
  end
95
111
 
96
112
  it "should set new record" do
@@ -127,9 +143,12 @@ describe StorageRoom::Model do
127
143
  end
128
144
 
129
145
  describe "#new_record?" do
130
- it "should be new record" do
146
+ it "should return true" do
131
147
  @model.should be_new_record
132
- @model.instance_variable_set :@new_record, false
148
+ end
149
+
150
+ it "should return false" do
151
+ @model.response_data['@version'] = 3
133
152
  @model.should_not be_new_record
134
153
  end
135
154
  end
@@ -146,26 +165,34 @@ describe StorageRoom::Model do
146
165
  end
147
166
 
148
167
  it "should update on existing record" do
149
- @model.instance_variable_set(:@new_record, false)
168
+ @model.stub(:new_record?).and_return(false)
150
169
  @model.should_receive(:update)
151
170
  @model.save
152
171
  end
153
172
  end
154
173
 
155
174
  describe "#as_json" do
156
- it "should return hash without meta data" do
157
- entry = StorageRoom::Entry.new(:field => 1, :@attr => 2)
175
+ it "should return hash" do
176
+ contributor = Contributor.new
177
+ contributor.response_data[:@url] = "CONTRIBUTOR_URL"
178
+
179
+ author = Author.new
180
+ author.response_data[:@url] = "AUTHOR_URL"
181
+
182
+ entry = Recipe.new(:name => "NAME", :ingredients => "INGREDIENTS", :contributors => [contributor], :author => author)
158
183
  hash = entry.as_json
159
184
 
160
- hash['entry'][:field].should == 1
161
- hash['entry'][:@attr].should_not be_present
185
+ hash['entry']['name'].should == "NAME"
186
+ hash['entry']['ingredients'].should == "INGREDIENTS"
187
+ hash['entry']['author']['url'].should == 'AUTHOR_URL'
188
+ hash['entry']['contributors'][0].should == {'url' => 'CONTRIBUTOR_URL'}
162
189
  end
163
190
  end
164
191
 
165
192
  describe "#reload" do
166
193
  it "should load" do
167
194
  collection = StorageRoom::Collection.new
168
- collection[:@url] = '/collections/1'
195
+ collection.response_data[:@url] = '/collections/1'
169
196
  stub_request(:get, stub_url('/collections/1')).to_return(:body => fixture_file('collection.json'), :status => 200)
170
197
 
171
198
  collection.reload
@@ -175,60 +202,53 @@ describe StorageRoom::Model do
175
202
 
176
203
  describe "#create" do
177
204
  it "should create" do
178
- collection_path = '/collections/4ddaf68b4d085d374a000003'
179
- klass = StorageRoom::Entry.class_with_options('Guidebook', :collection_path => collection_path)
180
- guidebook = klass.new
181
-
182
- stub_request(:post, stub_url(klass.index_path)).to_return(:body => fixture_file('collection.json'), :status => 200)
183
-
184
- guidebook.create
185
- guidebook[:name].should == 'Guidebooks'
205
+ guidebooks = StorageRoom::Collection.new
206
+ stub_request(:post, stub_url('/collections')).to_return(:body => fixture_file('collection.json'), :status => 201)
207
+
208
+ guidebooks.create
209
+ guidebooks.should_not be_new_record
186
210
  end
187
211
 
188
212
  it "should have errors on validation error" do
189
- collection_path = '/collections/4ddaf68b4d085d374a000003'
190
- klass = StorageRoom::Entry.class_with_options('Guidebook', :collection_path => collection_path)
191
- guidebook = klass.new
213
+ guidebooks = StorageRoom::Collection.new
192
214
 
193
- stub_request(:post, stub_url('/collections/4ddaf68b4d085d374a000003/entries')).to_return(:body => fixture_file('validation_error.json'), :status => 422)
215
+ stub_request(:post, stub_url('/collections')).to_return(:body => fixture_file('validation_error.json'), :status => 422)
194
216
 
195
- guidebook.create
196
- guidebook[:name].should be_nil
217
+ guidebooks.create
218
+ guidebooks.should be_new_record
197
219
 
198
- guidebook.errors.should have(1).items
220
+ guidebooks.errors.should have(1).items
199
221
  end
200
222
  end
201
223
 
202
224
  describe "#update" do
225
+ before(:each) do
226
+ @collection = StorageRoom::Collection.new
227
+ @collection.response_data[:@url] = '/collections/1'
228
+ @collection.response_data[:@version] = 1
229
+ end
230
+
203
231
  it "should update" do
204
- collection = StorageRoom::Collection.new
205
- collection.instance_variable_set(:@new_record, false)
206
- collection[:@url] = '/collections/1'
207
-
208
232
  stub_request(:put, stub_url('/collections/1')).to_return(:body => fixture_file('collection.json'), :status => 200)
209
233
 
210
- collection.update
211
- collection[:name].should == 'Guidebooks'
234
+ @collection.update
235
+ @collection.response_data[:@version].should == 2
212
236
  end
213
237
 
214
238
  it "should have errors on validation error" do
215
- collection = StorageRoom::Collection.new
216
- collection.instance_variable_set(:@new_record, false)
217
- collection[:@url] = '/collections/1'
218
-
219
239
  stub_request(:put, stub_url('/collections/1')).to_return(:body => fixture_file('validation_error.json'), :status => 422)
220
240
 
221
- collection.update
222
- collection[:name].should be_nil
223
- collection.errors.should have(1).items
241
+ @collection.update
242
+ @collection.response_data[:@version].should == 1
243
+ @collection.errors.should have(1).items
224
244
  end
225
245
  end
226
246
 
227
247
  describe "#destroy" do
228
248
  it "should destroy" do
229
249
  collection = StorageRoom::Collection.new
230
- collection.instance_variable_set(:@new_record, false)
231
- collection[:@url] = '/collections/1'
250
+ collection.response_data[:@url] = '/collections/1'
251
+ collection.response_data[:@version] = 1
232
252
 
233
253
  stub_request(:delete, stub_url('/collections/1')).to_return(:status => 200)
234
254