couchrest 1.2.1 → 2.0.0.beta1
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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/.travis.yml +1 -0
- data/README.md +11 -7
- data/VERSION +1 -1
- data/couchrest.gemspec +7 -6
- data/history.txt +8 -0
- data/lib/couchrest.rb +26 -31
- data/lib/couchrest/connection.rb +251 -0
- data/lib/couchrest/database.rb +75 -79
- data/lib/couchrest/design.rb +1 -1
- data/lib/couchrest/exceptions.rb +108 -0
- data/lib/couchrest/helper/pager.rb +3 -1
- data/lib/couchrest/helper/stream_row_parser.rb +93 -0
- data/lib/couchrest/rest_api.rb +33 -134
- data/lib/couchrest/server.rb +34 -47
- data/spec/couchrest/connection_spec.rb +415 -0
- data/spec/couchrest/couchrest_spec.rb +61 -67
- data/spec/couchrest/database_spec.rb +151 -147
- data/spec/couchrest/design_spec.rb +28 -28
- data/spec/couchrest/document_spec.rb +72 -70
- data/spec/couchrest/exceptions_spec.rb +74 -0
- data/spec/couchrest/helpers/pager_spec.rb +22 -22
- data/spec/couchrest/helpers/stream_row_parser_spec.rb +154 -0
- data/spec/couchrest/rest_api_spec.rb +44 -208
- data/spec/couchrest/server_spec.rb +0 -29
- data/spec/spec_helper.rb +11 -6
- metadata +31 -17
- data/lib/couchrest/helper/streamer.rb +0 -63
- data/lib/couchrest/monkeypatches.rb +0 -25
- data/spec/couchrest/helpers/streamer_spec.rb +0 -134
@@ -6,8 +6,8 @@ describe CouchRest::Design do
|
|
6
6
|
it "should add a view to the design doc" do
|
7
7
|
@des = CouchRest::Design.new
|
8
8
|
method = @des.view_by :name
|
9
|
-
method.
|
10
|
-
@des["views"]["by_name"].
|
9
|
+
expect(method).to eql "by_name"
|
10
|
+
expect(@des["views"]["by_name"]).not_to be_nil
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -18,13 +18,13 @@ describe CouchRest::Design do
|
|
18
18
|
end
|
19
19
|
it "should accept a name" do
|
20
20
|
@des.name = "mytest"
|
21
|
-
@des.name.
|
21
|
+
expect(@des.name).to eql "mytest"
|
22
22
|
end
|
23
23
|
it "should not save on view definition" do
|
24
|
-
@des.rev.
|
24
|
+
expect(@des.rev).to be_nil
|
25
25
|
end
|
26
26
|
it "should freak out on view access" do
|
27
|
-
|
27
|
+
expect { @des.view :by_name }.to raise_error
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -35,7 +35,7 @@ describe CouchRest::Design do
|
|
35
35
|
@des.database = reset_test_db!
|
36
36
|
end
|
37
37
|
it "should fail without a name" do
|
38
|
-
lambda{@des.save}.
|
38
|
+
expect(lambda{@des.save}).to raise_error(ArgumentError)
|
39
39
|
end
|
40
40
|
it "should work with a name" do
|
41
41
|
@des.name = "myview"
|
@@ -55,14 +55,14 @@ describe CouchRest::Design do
|
|
55
55
|
@des.name = "mydesign"
|
56
56
|
@des.save
|
57
57
|
res = @des.view :by_name
|
58
|
-
res["rows"][0]["key"].
|
58
|
+
expect(res["rows"][0]["key"]).to eql "x"
|
59
59
|
end
|
60
60
|
it "should be queryable on specified database" do
|
61
61
|
@des.name = "mydesign"
|
62
62
|
@des.save
|
63
63
|
@des.database = nil
|
64
64
|
res = @des.view_on @db, :by_name
|
65
|
-
res["rows"][0]["key"].
|
65
|
+
expect(res["rows"][0]["key"]).to eql "x"
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -81,16 +81,16 @@ describe CouchRest::Design do
|
|
81
81
|
@des = @db.get "_design/test"
|
82
82
|
end
|
83
83
|
it "should be a Design" do
|
84
|
-
@des.
|
84
|
+
expect(@des).to be_an_instance_of(CouchRest::Design)
|
85
85
|
end
|
86
86
|
it "should have a modifiable name" do
|
87
|
-
@des.name.
|
87
|
+
expect(@des.name).to eql "test"
|
88
88
|
@des.name = "supertest"
|
89
|
-
@des.id.
|
89
|
+
expect(@des.id).to eql "_design/supertest"
|
90
90
|
end
|
91
91
|
it "should by queryable" do
|
92
92
|
res = @des.view :by_name
|
93
|
-
res["rows"][0]["key"].
|
93
|
+
expect(res["rows"][0]["key"]).to eql "a"
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -106,15 +106,15 @@ describe CouchRest::Design do
|
|
106
106
|
end
|
107
107
|
it "should save them" do
|
108
108
|
@d2 = @db.get(@des.id)
|
109
|
-
@d2["views"]["by_name"]["couchrest-defaults"].
|
109
|
+
expect(@d2["views"]["by_name"]["couchrest-defaults"]).to eql("descending" => true)
|
110
110
|
end
|
111
111
|
it "should use them" do
|
112
112
|
res = @des.view :by_name
|
113
|
-
res["rows"].first["key"].
|
113
|
+
expect(res["rows"].first["key"]).to eql "z"
|
114
114
|
end
|
115
115
|
it "should override them" do
|
116
116
|
res = @des.view :by_name, :descending => false
|
117
|
-
res["rows"].first["key"].
|
117
|
+
expect(res["rows"].first["key"]).to eql "a"
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
@@ -131,7 +131,7 @@ describe CouchRest::Design do
|
|
131
131
|
end
|
132
132
|
it "should work" do
|
133
133
|
res = @des.view :by_name_and_age
|
134
|
-
res["rows"].first["key"].
|
134
|
+
expect(res["rows"].first["key"]).to eql ["a",2]
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
@@ -148,9 +148,9 @@ describe CouchRest::Design do
|
|
148
148
|
end
|
149
149
|
it "should work" do
|
150
150
|
res = @des.view :by_code
|
151
|
-
res["rows"][0]["key"].
|
152
|
-
res["rows"][1]["key"].
|
153
|
-
res["rows"][2].
|
151
|
+
expect(res["rows"][0]["key"]).to eql 0
|
152
|
+
expect(res["rows"][1]["key"]).to eql "a"
|
153
|
+
expect(res["rows"][2]).to be_nil
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
@@ -167,9 +167,9 @@ describe CouchRest::Design do
|
|
167
167
|
end
|
168
168
|
it "should work" do
|
169
169
|
res = @des.view :by_code
|
170
|
-
res["rows"][0]["key"].
|
171
|
-
res["rows"][1]["key"].
|
172
|
-
res["rows"][2]["key"].
|
170
|
+
expect(res["rows"][0]["key"]).to be_nil
|
171
|
+
expect(res["rows"][1]["key"]).to eql 0
|
172
|
+
expect(res["rows"][2]["key"]).to eql "a"
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
@@ -186,19 +186,19 @@ describe CouchRest::Design do
|
|
186
186
|
{"code" => 'b', "age" => 4},{"code" => 'c', "age" => 9}])
|
187
187
|
end
|
188
188
|
it "should not set a default parameter" do
|
189
|
-
@des['views']['by_code']['couchrest-defaults'].
|
189
|
+
expect(@des['views']['by_code']['couchrest-defaults']).to be_nil
|
190
190
|
end
|
191
191
|
it "should include reduce parameter in query" do
|
192
192
|
# this would fail without it
|
193
193
|
res = @des.view :by_code
|
194
|
-
res["rows"][0]["key"].
|
194
|
+
expect(res["rows"][0]["key"]).to eql 'a'
|
195
195
|
end
|
196
196
|
it "should allow reduce to be performed" do
|
197
197
|
res = @des.view :by_code, :reduce => true
|
198
|
-
res["rows"][0]["value"].
|
198
|
+
expect(res["rows"][0]["value"]).to eql(3)
|
199
199
|
end
|
200
200
|
it "does not allow string keys to be passed to view as options" do
|
201
|
-
lambda{ @des.view :by_code, 'reduce' => true }.
|
201
|
+
expect(lambda{ @des.view :by_code, 'reduce' => true }).to raise_error(ArgumentError, /set as symbols/)
|
202
202
|
end
|
203
203
|
end
|
204
204
|
|
@@ -217,8 +217,8 @@ describe CouchRest::Design do
|
|
217
217
|
|
218
218
|
it "should provide a summary info hash" do
|
219
219
|
info = @des.info
|
220
|
-
info['name'].
|
221
|
-
info.
|
220
|
+
expect(info['name']).to eql("test")
|
221
|
+
expect(info).to include("view_index")
|
222
222
|
end
|
223
223
|
|
224
224
|
end
|
@@ -12,20 +12,20 @@ describe CouchRest::Document do
|
|
12
12
|
describe "#new" do
|
13
13
|
it "should not be a Hash" do
|
14
14
|
@doc = CouchRest::Document.new
|
15
|
-
@doc.class.
|
16
|
-
@doc.is_a?(Hash).
|
15
|
+
expect(@doc.class).to eql(CouchRest::Document)
|
16
|
+
expect(@doc.is_a?(Hash)).to be_false
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should be possible to initialize a new Document with attributes" do
|
20
20
|
@doc = CouchRest::Document.new('foo' => 'bar', :test => 'foo')
|
21
|
-
@doc['foo'].
|
22
|
-
@doc['test'].
|
21
|
+
expect(@doc['foo']).to eql('bar')
|
22
|
+
expect(@doc['test']).to eql('foo')
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should accept new with _id" do
|
26
26
|
@doc = CouchRest::Document.new('_id' => 'sample', 'foo' => 'bar')
|
27
|
-
@doc['_id'].
|
28
|
-
@doc['foo'].
|
27
|
+
expect(@doc['_id']).to eql('sample')
|
28
|
+
expect(@doc['foo']).to eql('bar')
|
29
29
|
end
|
30
30
|
|
31
31
|
context "replacing initalize" do
|
@@ -48,7 +48,7 @@ describe CouchRest::Document do
|
|
48
48
|
@doc = CouchRest::Document.new(:foo => 'bar')
|
49
49
|
[:to_a, :==, :eql?, :keys, :values, :each, :reject, :reject!, :empty?,
|
50
50
|
:clear, :merge, :merge!, :encode_json, :as_json, :to_json, :frozen?].each do |call|
|
51
|
-
@doc.
|
51
|
+
expect(@doc).to respond_to(call)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -58,18 +58,18 @@ describe CouchRest::Document do
|
|
58
58
|
@doc = CouchRest::Document.new
|
59
59
|
end
|
60
60
|
it "should work" do
|
61
|
-
@doc["enamel"].
|
61
|
+
expect(@doc["enamel"]).to be_nil
|
62
62
|
@doc["enamel"] = "Strong"
|
63
|
-
@doc["enamel"].
|
63
|
+
expect(@doc["enamel"]).to eql "Strong"
|
64
64
|
end
|
65
65
|
it "[]= should convert to string" do
|
66
|
-
@doc["enamel"].
|
66
|
+
expect(@doc["enamel"]).to be_nil
|
67
67
|
@doc[:enamel] = "Strong"
|
68
|
-
@doc["enamel"].
|
68
|
+
expect(@doc["enamel"]).to eql "Strong"
|
69
69
|
end
|
70
70
|
it "should read as a string" do
|
71
71
|
@doc[:enamel] = "Strong"
|
72
|
-
@doc[:enamel].
|
72
|
+
expect(@doc[:enamel]).to eql "Strong"
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -79,12 +79,12 @@ describe CouchRest::Document do
|
|
79
79
|
end
|
80
80
|
it "should confirm existance of key" do
|
81
81
|
@doc[:test] = 'example'
|
82
|
-
@doc.has_key?('test').
|
83
|
-
@doc.has_key?(:test).
|
82
|
+
expect(@doc.has_key?('test')).to be_true
|
83
|
+
expect(@doc.has_key?(:test)).to be_true
|
84
84
|
end
|
85
85
|
it "should deny existance of key" do
|
86
|
-
@doc.has_key?(:bardom).
|
87
|
-
@doc.has_key?('bardom').
|
86
|
+
expect(@doc.has_key?(:bardom)).to be_false
|
87
|
+
expect(@doc.has_key?('bardom')).to be_false
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
@@ -93,8 +93,8 @@ describe CouchRest::Document do
|
|
93
93
|
@doc = CouchRest::Document.new('foo' => 'bar')
|
94
94
|
@doc2 = @doc.dup
|
95
95
|
@doc2.delete('foo')
|
96
|
-
@doc2['foo'].
|
97
|
-
@doc['foo'].
|
96
|
+
expect(@doc2['foo']).to be_nil
|
97
|
+
expect(@doc['foo']).to eql('bar')
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -103,8 +103,8 @@ describe CouchRest::Document do
|
|
103
103
|
@doc = CouchRest::Document.new('foo' => 'bar')
|
104
104
|
@doc2 = @doc.clone
|
105
105
|
@doc2.delete('foo')
|
106
|
-
@doc2['foo'].
|
107
|
-
@doc['foo'].
|
106
|
+
expect(@doc2['foo']).to be_nil
|
107
|
+
expect(@doc['foo']).to eql('bar')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -114,8 +114,8 @@ describe CouchRest::Document do
|
|
114
114
|
klass.class_eval { attr_accessor :test_attr }
|
115
115
|
@doc = klass.new('foo' => 'bar')
|
116
116
|
@doc.freeze
|
117
|
-
lambda { @doc['foo'] = 'bar2' }.
|
118
|
-
lambda { @doc.test_attr = "bar3" }.
|
117
|
+
expect(lambda { @doc['foo'] = 'bar2' }).to raise_error(/frozen/)
|
118
|
+
expect(lambda { @doc.test_attr = "bar3" }).not_to raise_error
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
@@ -123,30 +123,30 @@ describe CouchRest::Document do
|
|
123
123
|
it "should provide a hash of data from normal document" do
|
124
124
|
@doc = CouchRest::Document.new('foo' => 'bar')
|
125
125
|
h = @doc.as_couch_json
|
126
|
-
h.
|
127
|
-
h['foo'].
|
126
|
+
expect(h).to be_a(Hash)
|
127
|
+
expect(h['foo']).to eql('bar')
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should handle nested documents" do
|
131
131
|
@doc = CouchRest::Document.new('foo' => 'bar', 'doc' => CouchRest::Document.new('foo2' => 'bar2'))
|
132
132
|
h = @doc.as_couch_json
|
133
|
-
h['doc'].
|
134
|
-
h['doc']['foo2'].
|
133
|
+
expect(h['doc']).to be_a(Hash)
|
134
|
+
expect(h['doc']['foo2']).to eql('bar2')
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
138
138
|
describe "#inspect" do
|
139
139
|
it "should provide a string of keys and values of the Response" do
|
140
140
|
@doc = CouchRest::Document.new('foo' => 'bar')
|
141
|
-
@doc.inspect.
|
141
|
+
expect(@doc.inspect).to eql("#<CouchRest::Document foo: \"bar\">")
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
145
|
describe "responding to Hash methods" do
|
146
146
|
it "should delegate requests" do
|
147
147
|
@doc = CouchRest::Document.new('foo' => 'bar')
|
148
|
-
@doc.keys.
|
149
|
-
@doc.values.
|
148
|
+
expect(@doc.keys).to eql(['foo'])
|
149
|
+
expect(@doc.values).to eql(['bar'])
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -155,19 +155,19 @@ describe CouchRest::Document do
|
|
155
155
|
Video.use_database nil
|
156
156
|
end
|
157
157
|
it "should be set using use_database on the model" do
|
158
|
-
Video.new.database.
|
158
|
+
expect(Video.new.database).to be_nil
|
159
159
|
Video.use_database @db
|
160
|
-
Video.new.database.
|
160
|
+
expect(Video.new.database).to eql @db
|
161
161
|
Video.use_database nil
|
162
162
|
end
|
163
163
|
|
164
164
|
it "should be overwritten by instance" do
|
165
165
|
db = @couch.database('test')
|
166
166
|
article = Video.new
|
167
|
-
article.database.
|
167
|
+
expect(article.database).to be_nil
|
168
168
|
article.database = db
|
169
|
-
article.database.
|
170
|
-
article.database.
|
169
|
+
expect(article.database).not_to be_nil
|
170
|
+
expect(article.database).to eql db
|
171
171
|
end
|
172
172
|
end
|
173
173
|
|
@@ -176,20 +176,20 @@ describe CouchRest::Document do
|
|
176
176
|
@doc = CouchRest::Document.new("key" => [1,2,3], :more => "values")
|
177
177
|
end
|
178
178
|
it "should create itself from a Hash" do
|
179
|
-
@doc["key"].
|
180
|
-
@doc["more"].
|
179
|
+
expect(@doc["key"]).to eql [1,2,3]
|
180
|
+
expect(@doc["more"]).to eql "values"
|
181
181
|
end
|
182
182
|
it "should not have rev and id" do
|
183
|
-
@doc.rev.
|
184
|
-
@doc.id.
|
183
|
+
expect(@doc.rev).to be_nil
|
184
|
+
expect(@doc.id).to be_nil
|
185
185
|
end
|
186
186
|
it "should be possible to set id" do
|
187
187
|
@doc.id = 1
|
188
|
-
@doc.id.
|
188
|
+
expect(@doc.id).to eql(1)
|
189
189
|
end
|
190
190
|
|
191
191
|
it "should freak out when saving without a database" do
|
192
|
-
lambda{@doc.save}.
|
192
|
+
expect(lambda{@doc.save}).to raise_error(ArgumentError)
|
193
193
|
end
|
194
194
|
|
195
195
|
end
|
@@ -202,19 +202,19 @@ describe CouchRest::Document do
|
|
202
202
|
@resp = @db.save_doc(@doc)
|
203
203
|
end
|
204
204
|
it "should apply the database" do
|
205
|
-
@doc.database.
|
205
|
+
expect(@doc.database).to eql @db
|
206
206
|
end
|
207
207
|
it "should get id and rev" do
|
208
|
-
@doc.id.
|
209
|
-
@doc.rev.
|
208
|
+
expect(@doc.id).to eql @resp["id"]
|
209
|
+
expect(@doc.rev).to eql @resp["rev"]
|
210
210
|
end
|
211
211
|
it "should generate a correct URI" do
|
212
|
-
@doc.uri.
|
213
|
-
URI.parse(@doc.uri).to_s.
|
212
|
+
expect(@doc.uri).to eql "#{@db.root}/#{@doc.id}"
|
213
|
+
expect(URI.parse(@doc.uri).to_s).to eql @doc.uri
|
214
214
|
end
|
215
215
|
it "should generate a correct URI with revision" do
|
216
|
-
@doc.uri(true).
|
217
|
-
URI.parse(@doc.uri(true)).to_s.
|
216
|
+
expect(@doc.uri(true)).to eql "#{@db.root}/#{@doc.id}?rev=#{@doc.rev}"
|
217
|
+
expect(URI.parse(@doc.uri(true)).to_s).to eql @doc.uri(true)
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
@@ -227,9 +227,9 @@ describe CouchRest::Document do
|
|
227
227
|
doc = CouchRest::Document.new({"_id" => "bulkdoc", "val" => 3})
|
228
228
|
doc.database = @db
|
229
229
|
doc.save(true)
|
230
|
-
lambda { doc.database.get(doc["_id"]) }.
|
230
|
+
expect(lambda { doc.database.get(doc["_id"]) }).to raise_error(CouchRest::NotFound)
|
231
231
|
doc.database.bulk_save
|
232
|
-
doc.database.get(doc["_id"])["val"].
|
232
|
+
expect(doc.database.get(doc["_id"])["val"]).to eql doc["val"]
|
233
233
|
end
|
234
234
|
end
|
235
235
|
|
@@ -242,18 +242,18 @@ describe CouchRest::Document do
|
|
242
242
|
@doc = @db.get @resp['id']
|
243
243
|
end
|
244
244
|
it "should return a document" do
|
245
|
-
@doc.
|
245
|
+
expect(@doc).to be_an_instance_of(CouchRest::Document)
|
246
246
|
end
|
247
247
|
it "should have a database" do
|
248
|
-
@doc.database.
|
248
|
+
expect(@doc.database).to eql @db
|
249
249
|
end
|
250
250
|
it "should be saveable and resavable" do
|
251
251
|
@doc["more"] = "keys"
|
252
252
|
@doc.save
|
253
|
-
@db.get(@resp['id'])["more"].
|
253
|
+
expect(@db.get(@resp['id'])["more"]).to eql "keys"
|
254
254
|
@doc["more"] = "these keys"
|
255
255
|
@doc.save
|
256
|
-
@db.get(@resp['id'])["more"].
|
256
|
+
expect(@db.get(@resp['id'])["more"]).to eql "these keys"
|
257
257
|
end
|
258
258
|
end
|
259
259
|
|
@@ -267,11 +267,11 @@ describe CouchRest::Document do
|
|
267
267
|
end
|
268
268
|
it "should make it disappear" do
|
269
269
|
@doc.destroy
|
270
|
-
lambda{@db.get @resp['id']}.
|
270
|
+
expect(lambda{@db.get @resp['id']}).to raise_error
|
271
271
|
end
|
272
272
|
it "should error when there's no db" do
|
273
273
|
@doc = CouchRest::Document.new("key" => [1,2,3], :more => "values")
|
274
|
-
lambda{@doc.destroy}.
|
274
|
+
expect(lambda{@doc.destroy}).to raise_error(ArgumentError)
|
275
275
|
end
|
276
276
|
end
|
277
277
|
|
@@ -286,11 +286,11 @@ describe CouchRest::Document do
|
|
286
286
|
end
|
287
287
|
it "should defer actual deletion" do
|
288
288
|
@doc.destroy(true)
|
289
|
-
@doc['_id'].
|
290
|
-
@doc['_rev'].
|
291
|
-
lambda{@db.get @resp['id']}.
|
289
|
+
expect(@doc['_id']).to be_nil
|
290
|
+
expect(@doc['_rev']).to be_nil
|
291
|
+
expect(lambda{@db.get @resp['id']}).not_to raise_error
|
292
292
|
@db.bulk_save
|
293
|
-
lambda{@db.get @resp['id']}.
|
293
|
+
expect(lambda{@db.get @resp['id']}).to raise_error
|
294
294
|
end
|
295
295
|
end
|
296
296
|
|
@@ -305,10 +305,10 @@ describe CouchRest::Document do
|
|
305
305
|
it "should work" do
|
306
306
|
@doc.copy @docid
|
307
307
|
newdoc = @db.get(@docid)
|
308
|
-
newdoc['key'].
|
308
|
+
expect(newdoc['key']).to eql 'value'
|
309
309
|
end
|
310
310
|
it "should fail without a database" do
|
311
|
-
lambda{CouchRest::Document.new({"not"=>"a real doc"}).copy}.
|
311
|
+
expect(lambda{CouchRest::Document.new({"not"=>"a real doc"}).copy}).to raise_error(ArgumentError)
|
312
312
|
end
|
313
313
|
end
|
314
314
|
describe "to an existing location" do
|
@@ -316,19 +316,19 @@ describe CouchRest::Document do
|
|
316
316
|
@db.save_doc({'_id' => @docid, 'will-exist' => 'here'})
|
317
317
|
end
|
318
318
|
it "should fail without a rev" do
|
319
|
-
lambda{@doc.copy @docid}.
|
319
|
+
expect(lambda{@doc.copy @docid}).to raise_error(CouchRest::RequestFailed)
|
320
320
|
end
|
321
321
|
it "should succeed with a rev" do
|
322
322
|
@to_be_overwritten = @db.get(@docid)
|
323
323
|
@doc.copy "#{@docid}?rev=#{@to_be_overwritten['_rev']}"
|
324
324
|
newdoc = @db.get(@docid)
|
325
|
-
newdoc['key'].
|
325
|
+
expect(newdoc['key']).to eql 'value'
|
326
326
|
end
|
327
327
|
it "should succeed given the doc to overwrite" do
|
328
328
|
@to_be_overwritten = @db.get(@docid)
|
329
329
|
@doc.copy @to_be_overwritten
|
330
330
|
newdoc = @db.get(@docid)
|
331
|
-
newdoc['key'].
|
331
|
+
expect(newdoc['key']).to eql 'value'
|
332
332
|
end
|
333
333
|
end
|
334
334
|
end
|
@@ -358,17 +358,17 @@ describe "dealing with attachments" do
|
|
358
358
|
end
|
359
359
|
|
360
360
|
it "is there" do
|
361
|
-
@db.fetch_attachment(@doc, 'test.html').
|
361
|
+
expect(@db.fetch_attachment(@doc, 'test.html')).to eql @attach
|
362
362
|
end
|
363
363
|
|
364
364
|
it "updates the revision" do
|
365
|
-
@doc[:_rev].
|
365
|
+
expect(@doc[:_rev]).not_to eql @rev
|
366
366
|
end
|
367
367
|
|
368
368
|
it "updates attachments" do
|
369
369
|
@attach2 = "<html><head><title>My Doc</title></head><body><p>Is Different.</p></body></html>"
|
370
370
|
@doc.put_attachment('test.html', @attach2)
|
371
|
-
@db.fetch_attachment(@doc, 'test.html').
|
371
|
+
expect(@db.fetch_attachment(@doc, 'test.html')).to eql @attach2
|
372
372
|
end
|
373
373
|
end
|
374
374
|
|
@@ -378,7 +378,7 @@ describe "dealing with attachments" do
|
|
378
378
|
end
|
379
379
|
|
380
380
|
it "pulls the attachment" do
|
381
|
-
@doc.fetch_attachment('test.html').
|
381
|
+
expect(@doc.fetch_attachment('test.html')).to eql @attach
|
382
382
|
end
|
383
383
|
end
|
384
384
|
|
@@ -389,11 +389,13 @@ describe "dealing with attachments" do
|
|
389
389
|
end
|
390
390
|
|
391
391
|
it "removes it" do
|
392
|
-
|
392
|
+
expect {
|
393
|
+
@db.fetch_attachment(@doc, 'test.html')
|
394
|
+
}.to raise_error(CouchRest::NotFound)
|
393
395
|
end
|
394
396
|
|
395
397
|
it "updates the revision" do
|
396
|
-
@doc[:_rev].
|
398
|
+
expect(@doc[:_rev]).not_to eql @rev
|
397
399
|
end
|
398
400
|
end
|
399
401
|
|