storage_room 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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