couch-quilt 0.4.1 → 0.5.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.
@@ -1,50 +1,16 @@
1
1
  module Couchquilt
2
2
  module Mapper
3
- # regexp to check wheather a key should be mapped as part of an array
4
- ARRAY_MAPPING = /\A\d+i(\.js)?\z/
5
-
6
- # maps json contents into contents array
7
- def map_json(json = {})
8
- case json
9
- when Hash
10
- json.keys.sort.map { |k| name_for(k, json[k]) }
11
- when Array
12
- # using zip for backwards compatibily:
13
- # in Ruby 1.9 (and 1.8.7) we could simply use
14
- # json.each_with_index.map { |k,i| ... }
15
- json.zip((0..json.size).to_a).map { |v,i| name_for(i, v) }
16
- end
17
- end
18
-
19
- # recursively updates a part of a json hash from fs
20
- def map_fs(json, keys = [], value = :empty)
21
- return {} if keys.empty?
22
-
23
- insert_as_array = keys.last =~ /.+\.array\Z/
24
- key = key_for(keys.shift)
25
- if keys.empty?
26
- if value.nil? && json.is_a?(Hash)
27
- json.delete key
28
- elsif value.nil? && json.is_a?(Array)
29
- json.delete_at key
30
- elsif value == :empty && insert_as_array
31
- json[key] = []
32
- elsif value == :empty
33
- json[key] = {}
34
- else
35
- json[key] = value
36
- end
37
- else
38
- json[key] = map_fs(json[key], keys, value)
39
- end
40
-
41
- json
3
+ def to_parts(path = nil)
4
+ return [] unless path
5
+ parts = path.is_a?(Array) ? path.dup : path.split("/")
6
+ parts.map! { |p| key_for p }
42
7
  end
43
8
 
44
9
  # remove fs mapping extnames
45
10
  # and converts array entry mappings
46
11
  def key_for(name)
47
- if name =~ ARRAY_MAPPING
12
+ return name unless name.is_a?(String)
13
+ if name =~ /\A\d+i(\.js)?\z/
48
14
  name.to_i
49
15
  else
50
16
  name.sub(/((\.(f|i|b))?\.js|\.html|\.array)\z/, "")
@@ -57,8 +23,6 @@ module Couchquilt
57
23
  basename = key.is_a?(Integer) ? "%di" % key : key.to_s
58
24
 
59
25
  case value
60
- when Array
61
- "#{basename}.array"
62
26
  when Float
63
27
  "#{basename}.f.js"
64
28
  when Integer
@@ -1,3 +1,3 @@
1
1
  module Couchquilt
2
- VERSION = '0.4.1'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,111 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Hash and Array" do
4
+ describe "at_path" do
5
+ it "should retrieve top level" do
6
+ hash = { "a" => 1 }
7
+ hash.at_path("/").should == hash
8
+ end
9
+
10
+ it "should retrieve value at top level" do
11
+ hash = { "a" => 1 }
12
+ hash.at_path("a").should == 1
13
+ end
14
+
15
+ it "should retrieve value at nested level" do
16
+ hash = { "a" => { "b" => 1 } }
17
+ hash.at_path("a/b").should == 1
18
+ end
19
+
20
+ it "should retrieve value at deep nested level" do
21
+ hash = { "a" => { "b" => { "c" => 1 } } }
22
+ hash.at_path("a/b/c").should == 1
23
+ end
24
+
25
+ it "should return nil if not present" do
26
+ hash = { "a" => { "c" => { "c" => 1 } } }
27
+ hash.at_path("a/b/c").should == nil
28
+ end
29
+
30
+ it "should return part of an array" do
31
+ hash = { "a" => [1] }
32
+ hash.at_path("a/0i").should == 1
33
+ end
34
+
35
+ it "should return part of a nested array" do
36
+ hash = { "a" => [ { "b" => 1 } ] }
37
+ hash.at_path("a/0i/b").should == 1
38
+ end
39
+ end
40
+
41
+ describe "update_at_path" do
42
+ it "should insert value at top level" do
43
+ hash = { }
44
+ hash.update_at_path "a", 1
45
+ hash.should == { "a" => 1 }
46
+ end
47
+
48
+ it "should insert value at nested level" do
49
+ hash = { }
50
+ hash.update_at_path "a/b", 1
51
+ hash.should == { "a" => { "b" => 1 } }
52
+ end
53
+
54
+ it "should insert value at deep nested level" do
55
+ hash = { }
56
+ hash.update_at_path "a/b/c", 1
57
+ hash.should == { "a" => { "b" => { "c" => 1 } } }
58
+ end
59
+ end
60
+
61
+ describe "delete_at_path" do
62
+ it "should delete value at top level" do
63
+ hash = { "a" => 1, "b" => 1 }
64
+ hash.delete_at_path "a"
65
+ hash.should == { "b" => 1 }
66
+ end
67
+
68
+ it "should delete value at nested level" do
69
+ hash = { "a" => { "b" => 1, "c" => 1 } }
70
+ hash.delete_at_path "a/b"
71
+ hash.should == { "a" => { "c" => 1 } }
72
+ end
73
+ end
74
+
75
+ describe "to_fs" do
76
+ it "should map string value" do
77
+ hash = { "key" => "value" }
78
+ hash.to_fs.should == ["key.js"]
79
+ end
80
+
81
+ it "should map integer value" do
82
+ hash = { "key" => 1 }
83
+ hash.to_fs.should == ["key.i.js"]
84
+ end
85
+
86
+ it "should map float value" do
87
+ hash = { "key" => 1.1 }
88
+ hash.to_fs.should == ["key.f.js"]
89
+ end
90
+
91
+ it "should map false value" do
92
+ hash = { "key" => false }
93
+ hash.to_fs.should == ["key.b.js"]
94
+ end
95
+
96
+ it "should map true value" do
97
+ hash = { "key" => true }
98
+ hash.to_fs.should == ["key.b.js"]
99
+ end
100
+
101
+ it "should map hash value" do
102
+ hash = { "key" => {}}
103
+ hash.to_fs.should == ["key"]
104
+ end
105
+
106
+ it "should map array value" do
107
+ hash = { "key" => []}
108
+ hash.to_fs.should == ["key"]
109
+ end
110
+ end
111
+ end
@@ -35,476 +35,615 @@ describe Couchquilt::FS do
35
35
  }
36
36
  RestClient.put File.join(SERVER_NAME, TESTDB, @design_document["_id"]), @design_document.to_json
37
37
 
38
- @quilt = Couchquilt::DebuggedFS.new("http://127.0.0.1:5984")
38
+ @quilt = Couchquilt::DebuggedFS.new(SERVER_NAME)
39
39
  end
40
40
 
41
41
  after :all do
42
42
  RestClient.delete(File.join(SERVER_NAME, TESTDB))
43
43
  end
44
44
 
45
+ # /
45
46
  describe "/" do
47
+ before do
48
+ @path = "/"
49
+ end
50
+
46
51
  it "directory? should return true" do
47
- @quilt.directory?("/").should be_true
52
+ @quilt.directory?(@path).should be_true
48
53
  end
49
54
  it "file? should return false" do
50
- @quilt.file?("/").should be_false
55
+ @quilt.file?(@path).should be_false
51
56
  end
52
57
  it "contents should list databases" do
53
- @quilt.contents("/").should include(TESTDB)
58
+ @quilt.contents(@path).should include(TESTDB)
54
59
  end
55
60
  it "contents should include _uuids" do
56
- @quilt.contents("/").should include("_uuids")
61
+ @quilt.contents(@path).should include("_uuids")
57
62
  end
58
63
  it "can_mkdir? should return false" do
59
- @quilt.can_mkdir?("/").should be_false
64
+ @quilt.can_mkdir?(@path).should be_false
60
65
  end
61
66
  it "can_rmdir? should return false" do
62
- @quilt.can_rmdir?("/").should be_false
67
+ @quilt.can_rmdir?(@path).should be_false
63
68
  end
64
69
 
65
70
  # /unknown_database
66
71
  describe "unknown_database/" do
72
+ before do
73
+ @path = "/unknown_database"
74
+ end
75
+
67
76
  it "directory? should return false" do
68
- @quilt.directory?("/unknown_database").should be_false
77
+ @quilt.directory?(@path).should be_false
69
78
  end
70
79
  it "file? should return false" do
71
- @quilt.file?("/unknown_database").should be_false
80
+ @quilt.file?(@path).should be_false
72
81
  end
73
82
  it "can_mkdir? should return true" do
74
- @quilt.can_mkdir?("/unknown_database").should be_true
83
+ @quilt.can_mkdir?(@path).should be_true
75
84
  end
76
85
  end
77
86
 
78
87
  # /new_database
79
88
  describe "#{TESTDB}-new/" do
80
89
  before do
81
- @new_database = "#{TESTDB}-new"
90
+ @path = "/#{TESTDB}-new"
82
91
  end
83
92
 
84
93
  it "mkdir should create database which touch _delete should remove" do
85
- @quilt.directory?("/#{@new_database}").should be_false
86
- @quilt.mkdir("/#{@new_database}").should be_true
87
- @quilt.directory?("/#{@new_database}").should be_true
88
- @quilt.touch("/#{@new_database}/_delete").should be_true
89
- @quilt.directory?("/#{@new_database}").should be_false
94
+ @quilt.directory?(@path).should be_false
95
+ @quilt.mkdir(@path).should be_true
96
+ @quilt.directory?(@path).should be_true
97
+ @quilt.touch("#{@path}/_delete").should be_true
98
+ @quilt.directory?(@path).should be_false
90
99
  end
91
100
  end
92
101
 
93
102
  # /database_id
94
103
  describe "database_id/" do
104
+ before do
105
+ @path = "/#{TESTDB}"
106
+ end
107
+
95
108
  it "directory? should return true" do
96
- @quilt.directory?("/#{TESTDB}").should be_true
109
+ @quilt.directory?(@path).should be_true
97
110
  end
98
111
  it "file? should return false" do
99
- @quilt.file?("/#{TESTDB}").should be_false
112
+ @quilt.file?(@path).should be_false
100
113
  end
101
114
  it "contents should list documents" do
102
- @quilt.contents("/#{TESTDB}").should == ["_design", "compact_running.b.js", "db_name.js", "disk_format_version.i.js", "disk_size.i.js", "doc_count.i.js", "doc_del_count.i.js", "document_id", "instance_start_time.js", "purge_seq.i.js", "update_seq.i.js"]
115
+ @quilt.contents(@path).should == ["_design", "compact_running.b.js", "db_name.js", "disk_format_version.i.js", "disk_size.i.js", "doc_count.i.js", "doc_del_count.i.js", "document_id", "instance_start_time.js", "purge_seq.i.js", "update_seq.i.js"]
103
116
  end
104
117
  it "can_mkdir? should return false" do
105
- @quilt.can_mkdir?("/#{TESTDB}").should be_false
118
+ @quilt.can_mkdir?(@path).should be_false
106
119
  end
107
120
  it "can_rmdir? should return false" do
108
- @quilt.can_rmdir?("/#{TESTDB}").should be_false
121
+ @quilt.can_rmdir?(@path).should be_false
109
122
  end
110
123
 
111
124
  # /database_id/db_name.js
112
125
  describe "db_name.js" do
126
+ before do
127
+ @path = "/#{TESTDB}/db_name.js"
128
+ end
129
+
113
130
  it "directory? should return false" do
114
- @quilt.directory?("/#{TESTDB}/db_name.js").should be_false
131
+ @quilt.directory?(@path).should be_false
115
132
  end
116
133
  it "file? should return true" do
117
- @quilt.file?("/#{TESTDB}/db_name.js").should be_true
134
+ @quilt.file?(@path).should be_true
118
135
  end
119
136
  it "read_file should return contents" do
120
- @quilt.read_file("/#{TESTDB}/db_name.js").should == TESTDB
137
+ @quilt.read_file(@path).should == TESTDB
121
138
  end
122
139
  it "can_write? should return false" do
123
- @quilt.can_write?("/#{TESTDB}/db_name.js").should be_false
140
+ @quilt.can_write?(@path).should be_false
124
141
  end
125
142
  it "can_delete? should return false" do
126
- @quilt.can_delete?("/#{TESTDB}/db_name.js").should be_false
143
+ @quilt.can_delete?(@path).should be_false
127
144
  end
128
145
  end
129
146
 
130
147
  # /database_id/doc_count.i.js
131
148
  describe "doc_count.i.js" do
149
+ before do
150
+ @path = "/#{TESTDB}/doc_count.i.js"
151
+ end
152
+
132
153
  it "directory? should return false" do
133
- @quilt.directory?("/#{TESTDB}/doc_count.i.js").should be_false
154
+ @quilt.directory?(@path).should be_false
134
155
  end
135
156
  it "file? should return true" do
136
- @quilt.file?("/#{TESTDB}/doc_count.i.js").should be_true
157
+ @quilt.file?(@path).should be_true
137
158
  end
138
159
  it "read_file should return contents" do
139
- @quilt.read_file("/#{TESTDB}/doc_count.i.js").should == "2"
160
+ @quilt.read_file(@path).should == "2"
140
161
  end
141
162
  it "can_write? should return false" do
142
- @quilt.can_write?("/#{TESTDB}/doc_count.i.js").should be_false
163
+ @quilt.can_write?(@path).should be_false
143
164
  end
144
165
  it "can_delete? should return false" do
145
- @quilt.can_delete?("/#{TESTDB}/doc_count.i.js").should be_false
166
+ @quilt.can_delete?(@path).should be_false
146
167
  end
147
168
  end
148
169
 
149
170
  # /database_id/unknown_document
150
171
  describe "unknown_document/" do
172
+ before do
173
+ @path = "/#{TESTDB}/unknown_document"
174
+ end
175
+
151
176
  it "directory? should return false" do
152
- @quilt.directory?("/#{TESTDB}/unknown_document").should be_false
177
+ @quilt.directory?(@path).should be_false
153
178
  end
154
179
  it "file? should return false" do
155
- @quilt.file?("/#{TESTDB}/unknown_document").should be_false
180
+ @quilt.file?(@path).should be_false
156
181
  end
157
182
  it "can_mkdir? should return true" do
158
- @quilt.can_mkdir?("/#{TESTDB}/unknown_document").should be_true
183
+ @quilt.can_mkdir?(@path).should be_true
159
184
  end
160
185
  it "can_rmdir? should return false" do
161
- @quilt.can_rmdir?("/#{TESTDB}/unknown_document").should be_false
186
+ @quilt.can_rmdir?(@path).should be_false
162
187
  end
163
188
  end
164
189
 
165
190
  # /database_id/document_id
166
191
  describe "document_id/" do
192
+ before do
193
+ @path = "/#{TESTDB}/document_id"
194
+ end
195
+
167
196
  it "directory? should return true" do
168
- @quilt.directory?("/#{TESTDB}/document_id").should be_true
197
+ @quilt.directory?(@path).should be_true
169
198
  end
170
199
  it "file? should return false" do
171
- @quilt.file?("/#{TESTDB}/document_id").should be_false
200
+ @quilt.file?(@path).should be_false
172
201
  end
173
202
  it "contents should list documents content" do
174
- @quilt.contents("/#{TESTDB}/document_id").should == ["_id.js", "_rev.js", "array.array", "boolean.b.js", "empty", "float.f.js", "integer.i.js", "name.js", "object"]
203
+ @quilt.contents(@path).should == ["_id.js", "_rev.js", "array", "boolean.b.js", "empty", "float.f.js", "integer.i.js", "name.js", "object"]
175
204
  end
176
205
  it "can_mkdir? should return false" do
177
- @quilt.can_mkdir?("/#{TESTDB}/document_id").should be_false
206
+ @quilt.can_mkdir?(@path).should be_false
178
207
  end
179
208
  it "can_rmdir? should return false" do
180
- @quilt.can_rmdir?("/#{TESTDB}/document_id").should be_false
209
+ @quilt.can_rmdir?(@path).should be_false
181
210
  end
182
211
  it "touch _delete should delete document" do
183
- @quilt.touch("/#{TESTDB}/document_id/_delete").should be_true
184
- @quilt.directory?("/#{TESTDB}/document_id").should be_false
212
+ @quilt.touch("#{@path}/_delete").should be_true
213
+ @quilt.directory?(@path).should be_false
185
214
  end
186
215
 
187
216
  # /database_id/document_id/unknown_attribute
188
217
  describe "unknown_attribute/" do
218
+ before do
219
+ @path = "/#{TESTDB}/document_id/unknown_attribute"
220
+ end
221
+
189
222
  it "directory? should return false" do
190
- @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_false
223
+ @quilt.directory?(@path).should be_false
191
224
  end
192
225
  it "file? should return false" do
193
- @quilt.file?("/#{TESTDB}/document_id/unknown_attribute").should be_false
226
+ @quilt.file?(@path).should be_false
194
227
  end
195
228
  it "can_mkdir? should return true" do
196
- @quilt.can_mkdir?("/#{TESTDB}/document_id/unknown_attribute").should be_true
229
+ @quilt.can_mkdir?(@path).should be_true
197
230
  end
198
231
  it "mkdir should update document while rmdir should reset it" do
199
- @quilt.mkdir("/#{TESTDB}/document_id/unknown_attribute").should be_true
200
- @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_true
201
- @quilt.rmdir("/#{TESTDB}/document_id/unknown_attribute").should be_true
202
- @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_false
232
+ @quilt.mkdir(@path).should be_true
233
+ @quilt.directory?(@path).should be_true
234
+ @quilt.rmdir(@path).should be_true
235
+ @quilt.directory?(@path).should be_false
236
+ end
237
+
238
+ describe "0i.js" do
239
+ before do
240
+ @base_path = "/#{TESTDB}/document_id/unknown_attribute"
241
+ @path = "#{@base_path}/0i.js"
242
+ @quilt.mkdir(@base_path)
243
+ end
244
+
245
+ after do
246
+ @quilt.rmdir(@base_path)
247
+ end
248
+
249
+ it "directory? should return true for base path" do
250
+ @quilt.directory?(@base_path).should be_true
251
+ end
252
+ it "directory? should return false" do
253
+ @quilt.directory?(@path).should be_false
254
+ end
255
+ it "file? should return false" do
256
+ @quilt.file?(@path).should be_false
257
+ end
258
+ it "can_write? should return true" do
259
+ @quilt.can_write?(@path).should be_true
260
+ end
261
+
262
+ describe "write should change base path to array" do
263
+ before do
264
+ @quilt.write_to(@path, "value")
265
+ end
266
+
267
+ after do
268
+ @quilt.delete(@path)
269
+ end
270
+
271
+ it "should be a file" do
272
+ @quilt.file?(@path).should be_true
273
+ end
274
+
275
+ it "should be an array" do
276
+ couch = Couchquilt::CouchClient.new(SERVER_NAME)
277
+ doc = couch.get("/#{TESTDB}/document_id")
278
+ doc["unknown_attribute"].should be_an(Array)
279
+ end
280
+ end
203
281
  end
204
282
  end
205
283
 
206
284
  # /database_id/document_id/_id.js
207
285
  describe "_id.js" do
286
+ before do
287
+ @path = "/#{TESTDB}/document_id/_id.js"
288
+ end
289
+
208
290
  it "directory? should return false" do
209
- @quilt.directory?("/#{TESTDB}/document_id/_id.js").should be_false
291
+ @quilt.directory?(@path).should be_false
210
292
  end
211
293
  it "file? should return true" do
212
- @quilt.file?("/#{TESTDB}/document_id/_id.js").should be_true
294
+ @quilt.file?(@path).should be_true
213
295
  end
214
296
  it "read_file should return contents" do
215
- @quilt.read_file("/#{TESTDB}/document_id/_id.js").should == "document_id"
297
+ @quilt.read_file(@path).should == "document_id"
216
298
  end
217
299
  it "can_write? should return false" do
218
- @quilt.can_write?("/#{TESTDB}/document_id/_id.js").should be_false
300
+ @quilt.can_write?(@path).should be_false
219
301
  end
220
302
  it "can_delete? should return false" do
221
- @quilt.can_delete?("/#{TESTDB}/document_id/_id.js").should be_false
303
+ @quilt.can_delete?(@path).should be_false
222
304
  end
223
305
  end
224
306
 
225
307
  # /database_id/document_id/name.js
226
308
  describe "name.js" do
309
+ before do
310
+ @path = "/#{TESTDB}/document_id/name.js"
311
+ end
312
+
227
313
  it "directory? should return false" do
228
- @quilt.directory?("/#{TESTDB}/document_id/name.js").should be_false
314
+ @quilt.directory?(@path).should be_false
229
315
  end
230
316
  it "file? should return true" do
231
- @quilt.file?("/#{TESTDB}/document_id/name.js").should be_true
317
+ @quilt.file?(@path).should be_true
232
318
  end
233
319
  it "read_file should return contents" do
234
- @quilt.read_file("/#{TESTDB}/document_id/name.js").should == @document["name"]
320
+ @quilt.read_file(@path).should == @document["name"]
235
321
  end
236
322
  it "can_write? should return true" do
237
- @quilt.can_write?("/#{TESTDB}/document_id/name.js").should be_true
323
+ @quilt.can_write?(@path).should be_true
238
324
  end
239
325
  it "write_to should update document" do
240
- @quilt.write_to("/#{TESTDB}/document_id/name.js", "value").should be_true
326
+ @quilt.write_to(@path, "value").should be_true
241
327
  end
242
328
  it "can_delete? should return false" do
243
- @quilt.can_delete?("/#{TESTDB}/document_id/name.js").should be_true
329
+ @quilt.can_delete?(@path).should be_true
244
330
  end
245
331
  it "delete should update document" do
246
- @quilt.delete("/#{TESTDB}/document_id/name.js").should be_true
247
- @quilt.file?("/#{TESTDB}/document_id/name.js").should be_false
332
+ @quilt.delete(@path).should be_true
333
+ @quilt.file?(@path).should be_false
248
334
  end
249
335
  end
250
336
 
251
337
  # /database_id/document_id/boolean.b.js
252
338
  describe "boolean.b.js" do
339
+ before do
340
+ @path = "/#{TESTDB}/document_id/boolean.b.js"
341
+ end
342
+
253
343
  it "directory? should return false" do
254
- @quilt.directory?("/#{TESTDB}/document_id/boolean.b.js").should be_false
344
+ @quilt.directory?(@path).should be_false
255
345
  end
256
346
  it "file? should return true" do
257
- @quilt.file?("/#{TESTDB}/document_id/boolean.b.js").should be_true
347
+ @quilt.file?(@path).should be_true
258
348
  end
259
349
  it "read_file should return contents" do
260
- @quilt.read_file("/#{TESTDB}/document_id/boolean.b.js").should == @document["boolean"].to_s
350
+ @quilt.read_file(@path).should == @document["boolean"].to_s
261
351
  end
262
352
  it "can_write? should return true" do
263
- @quilt.can_write?("/#{TESTDB}/document_id/boolean.b.js").should be_true
353
+ @quilt.can_write?(@path).should be_true
264
354
  end
265
355
  it "write_to should update document" do
266
- @quilt.write_to("/#{TESTDB}/document_id/boolean.b.js", "value").should be_true
356
+ @quilt.write_to(@path, "value").should be_true
267
357
  end
268
358
  it "can_delete? should return true" do
269
- @quilt.can_delete?("/#{TESTDB}/document_id/boolean.b.js").should be_true
359
+ @quilt.can_delete?(@path).should be_true
270
360
  end
271
361
  it "delete should update document" do
272
- @quilt.delete("/#{TESTDB}/document_id/boolean.b.js").should be_true
273
- @quilt.file?("/#{TESTDB}/document_id/boolean.b.js").should be_false
362
+ @quilt.delete(@path).should be_true
363
+ @quilt.file?(@path).should be_false
274
364
  end
275
365
  end
276
366
 
277
-
278
367
  # /database_id/document_id/object
279
368
  describe "object/" do
369
+ before do
370
+ @path = "/#{TESTDB}/document_id/object"
371
+ end
372
+
280
373
  it "directory? should return true" do
281
- @quilt.directory?("/#{TESTDB}/document_id/object").should be_true
374
+ @quilt.directory?(@path).should be_true
282
375
  end
283
376
  it "file? should return false" do
284
- @quilt.file?("/#{TESTDB}/document_id/object").should be_false
377
+ @quilt.file?(@path).should be_false
285
378
  end
286
379
  it "contents should list object content" do
287
- @quilt.contents("/#{TESTDB}/document_id/object").should == ["key.js"]
380
+ @quilt.contents(@path).should == ["key.js"]
288
381
  end
289
382
  it "can_mkdir? should return false" do
290
- @quilt.can_mkdir?("/#{TESTDB}/document_id/object").should be_false
383
+ @quilt.can_mkdir?(@path).should be_false
291
384
  end
292
385
  it "can_rmdir? should return false when not empty" do
293
- @quilt.can_rmdir?("/#{TESTDB}/document_id/object").should be_false
386
+ @quilt.can_rmdir?(@path).should be_false
294
387
  end
295
388
  end
296
389
 
297
390
  # /database_id/document_id/array
298
- describe "array.array/" do
391
+ describe "array/" do
392
+ before do
393
+ @path = "/#{TESTDB}/document_id/array"
394
+ end
395
+
299
396
  it "directory? should return true" do
300
- @quilt.directory?("/#{TESTDB}/document_id/array.array").should be_true
397
+ @quilt.directory?(@path).should be_true
301
398
  end
302
399
  it "file? should return false" do
303
- @quilt.file?("/#{TESTDB}/document_id/array.array").should be_false
400
+ @quilt.file?(@path).should be_false
304
401
  end
305
402
  it "contents should list array content" do
306
- @quilt.contents("/#{TESTDB}/document_id/array.array").should == ["0i.js"]
403
+ @quilt.contents(@path).should == ["0i.js"]
307
404
  end
308
405
  it "can_mkdir? should return false" do
309
- @quilt.can_mkdir?("/#{TESTDB}/document_id/array.array").should be_false
406
+ @quilt.can_mkdir?(@path).should be_false
310
407
  end
311
408
  it "can_rmdir? should return false when not empty" do
312
- @quilt.can_rmdir?("/#{TESTDB}/document_id/array.array").should be_false
409
+ @quilt.can_rmdir?(@path).should be_false
313
410
  end
411
+
412
+ # /database_id/document_id/array/0i.js
314
413
  describe "0i.js" do
414
+ before do
415
+ @path = "/#{TESTDB}/document_id/array/0i.js"
416
+ end
417
+
315
418
  it "directory? should return false" do
316
- @quilt.directory?("/#{TESTDB}/document_id/array.array/0i.js").should be_false
419
+ @quilt.directory?(@path).should be_false
317
420
  end
318
421
  it "file? should return true" do
319
- @quilt.file?("/#{TESTDB}/document_id/array.array/0i.js").should be_true
422
+ @quilt.file?(@path).should be_true
320
423
  end
321
424
  it "read_file should return contents" do
322
- @quilt.read_file("/#{TESTDB}/document_id/array.array/0i.js").should == @document["array"].first
425
+ @quilt.read_file(@path).should == @document["array"].first
323
426
  end
324
427
  it "can_write? should return true" do
325
- @quilt.can_write?("/#{TESTDB}/document_id/array.array/0i.js").should be_true
428
+ @quilt.can_write?(@path).should be_true
326
429
  end
327
430
  it "write_to should update document" do
328
- @quilt.write_to("/#{TESTDB}/document_id/array.array/0i.js", "value").should be_true
431
+ @quilt.write_to(@path, "value").should be_true
329
432
  end
330
433
  it "can_delete? should return true" do
331
- @quilt.can_delete?("/#{TESTDB}/document_id/array.array/0i.js").should be_true
434
+ @quilt.can_delete?(@path).should be_true
332
435
  end
333
436
  it "delete should update document" do
334
- @quilt.delete("/#{TESTDB}/document_id/array.array/0i.js").should be_true
335
- @quilt.file?("/#{TESTDB}/document_id/array.array/0i.js").should be_false
437
+ @quilt.delete(@path).should be_true
438
+ @quilt.file?(@path).should be_false
336
439
  end
337
440
  end
338
441
  end
339
442
 
340
443
  # /database_id/document_id/empty
341
444
  describe "empty/" do
445
+ before do
446
+ @path = "/#{TESTDB}/document_id/empty"
447
+ end
448
+
342
449
  it "directory? should return true" do
343
- @quilt.directory?("/#{TESTDB}/document_id/empty").should be_true
450
+ @quilt.directory?(@path).should be_true
344
451
  end
345
452
  it "file? should return false" do
346
- @quilt.file?("/#{TESTDB}/document_id/empty").should be_false
453
+ @quilt.file?(@path).should be_false
347
454
  end
348
455
  it "contents should list empty content" do
349
- @quilt.contents("/#{TESTDB}/document_id/empty").should == []
456
+ @quilt.contents(@path).should == []
350
457
  end
351
458
  it "can_mkdir? should return false" do
352
- @quilt.can_mkdir?("/#{TESTDB}/document_id/empty").should be_false
459
+ @quilt.can_mkdir?(@path).should be_false
353
460
  end
354
461
  it "can_rmdir? should return true when empty" do
355
- @quilt.can_rmdir?("/#{TESTDB}/document_id/empty").should be_true
462
+ @quilt.can_rmdir?(@path).should be_true
356
463
  end
357
464
  it "rmdir should remove empty from document tree when empty" do
358
- @quilt.rmdir("/#{TESTDB}/document_id/empty").should be_true
359
- @quilt.directory?("/#{TESTDB}/document_id/empty").should be_false
465
+ @quilt.rmdir(@path).should be_true
466
+ @quilt.directory?(@path).should be_false
360
467
  end
361
468
  end
362
469
  end
363
470
 
364
471
  # /database_id/_design
365
472
  describe "_design/" do
473
+ before do
474
+ @path = "/#{TESTDB}/_design"
475
+ end
476
+
366
477
  it "directory? should return true" do
367
- @quilt.directory?("/#{TESTDB}/_design").should be_true
478
+ @quilt.directory?(@path).should be_true
368
479
  end
369
480
  it "file? should return false" do
370
- @quilt.file?("/#{TESTDB}/_design").should be_false
481
+ @quilt.file?(@path).should be_false
371
482
  end
372
483
  it "contents should list design documents" do
373
- @quilt.contents("/#{TESTDB}/_design").should == ["design_document_id"]
484
+ @quilt.contents(@path).should == ["design_document_id"]
374
485
  end
375
486
  it "can_mkdir? should return false" do
376
- @quilt.can_mkdir?("/#{TESTDB}/_design").should be_false
487
+ @quilt.can_mkdir?(@path).should be_false
377
488
  end
378
489
  it "can_rmdir? should return false" do
379
- @quilt.can_rmdir?("/#{TESTDB}/_design").should be_false
490
+ @quilt.can_rmdir?(@path).should be_false
380
491
  end
381
492
 
382
493
  # /database_id/_design/new_design_document_id
383
494
  describe "new_design_document_id/" do
495
+ before do
496
+ @path = "/#{TESTDB}/_design/new_design_document_id"
497
+ end
498
+
384
499
  it "mkdir should create design document which touch _delete should remove" do
385
- @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_false
386
- @quilt.mkdir("/#{TESTDB}/_design/new_design_document_id").should be_true
387
- @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_true
388
- @quilt.touch("/#{TESTDB}/_design/new_design_document_id/_delete").should be_true
389
- @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_false
500
+ @quilt.directory?(@path).should be_false
501
+ @quilt.mkdir(@path).should be_true
502
+ @quilt.directory?(@path).should be_true
503
+ @quilt.touch("#{@path}/_delete").should be_true
504
+ @quilt.directory?(@path).should be_false
390
505
  end
391
506
  end
392
507
 
393
508
  # /database_id/_design/design_document_id
394
509
  describe "design_document_id/" do
510
+ before do
511
+ @path = "/#{TESTDB}/_design/design_document_id"
512
+ end
513
+
395
514
  it "directory? should return true" do
396
- @quilt.directory?("/#{TESTDB}/_design/design_document_id").should be_true
515
+ @quilt.directory?(@path).should be_true
397
516
  end
398
517
  it "file? should return false" do
399
- @quilt.file?("/#{TESTDB}/_design/design_document_id").should be_false
518
+ @quilt.file?(@path).should be_false
400
519
  end
401
520
  it "contents should list design documents content" do
402
- @quilt.contents("/#{TESTDB}/_design/design_document_id").should == ["_id.js", "_list", "_rev.js", "_show", "_view", "language.js", "lists", "name.js", "shows", "views"]
521
+ @quilt.contents(@path).should == ["_id.js", "_list", "_rev.js", "_show", "_view", "language.js", "lists", "name.js", "shows", "views"]
403
522
  end
404
523
  it "can_mkdir? should return false" do
405
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id").should be_false
524
+ @quilt.can_mkdir?(@path).should be_false
406
525
  end
407
526
  it "can_rmdir? should return false" do
408
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id").should be_false
527
+ @quilt.can_rmdir?(@path).should be_false
409
528
  end
410
529
 
411
530
  # /database_id/_design/design_document_id/_id.js
412
531
  describe "_id.js" do
532
+ before do
533
+ @path = "/#{TESTDB}/_design/design_document_id/_id.js"
534
+ end
535
+
413
536
  it "directory? should return false" do
414
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
537
+ @quilt.directory?(@path).should be_false
415
538
  end
416
539
  it "file? should return true" do
417
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_id.js").should be_true
540
+ @quilt.file?(@path).should be_true
418
541
  end
419
542
  it "read_file should return value" do
420
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_id.js").should == @design_document["_id"]
543
+ @quilt.read_file(@path).should == @design_document["_id"]
421
544
  end
422
545
  it "can_write? should return false" do
423
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
546
+ @quilt.can_write?(@path).should be_false
424
547
  end
425
548
  it "can_delete? should return false" do
426
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
549
+ @quilt.can_delete?(@path).should be_false
427
550
  end
428
551
  end
429
552
 
430
553
  # /database_id/_design/design_document_id/name.js
431
554
  describe "name.js" do
555
+ before do
556
+ @path = "/#{TESTDB}/_design/design_document_id/name.js"
557
+ end
558
+
432
559
  it "directory? should return false" do
433
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/name.js").should be_false
560
+ @quilt.directory?(@path).should be_false
434
561
  end
435
562
  it "file? should return true" do
436
- @quilt.file?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
563
+ @quilt.file?(@path).should be_true
437
564
  end
438
565
  it "read_file should return value" do
439
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/name.js").should == @design_document["name"]
566
+ @quilt.read_file(@path).should == @design_document["name"]
440
567
  end
441
568
  it "can_write? should return true" do
442
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
569
+ @quilt.can_write?(@path).should be_true
443
570
  end
444
571
  it "write_to should update _design/design_document_id" do
445
- @quilt.write_to("/#{TESTDB}/_design/design_document_id/name.js", "value").should be_true
572
+ @quilt.write_to(@path, "value").should be_true
446
573
  end
447
574
  it "can_delete? should return true" do
448
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
575
+ @quilt.can_delete?(@path).should be_true
449
576
  end
450
577
  it "delete should update design document" do
451
- @quilt.delete("/#{TESTDB}/_design/design_document_id/name.js").should be_true
452
- @quilt.file?("/#{TESTDB}/_design/design_document_id/name.js").should be_false
578
+ @quilt.delete(@path).should be_true
579
+ @quilt.file?(@path).should be_false
453
580
  end
454
581
  end
455
582
 
456
583
  # /database_id/_design/design_document_id/_list
457
584
  describe "_list/" do
585
+ before do
586
+ @path = "/#{TESTDB}/_design/design_document_id/_list"
587
+ end
588
+
458
589
  it "directory? should return true" do
459
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list").should be_true
590
+ @quilt.directory?(@path).should be_true
460
591
  end
461
592
  it "file? should return false" do
462
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_list").should be_false
593
+ @quilt.file?(@path).should be_false
463
594
  end
464
595
  it "contents should list list functions" do
465
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_list").should == ["list_function_name"]
596
+ @quilt.contents(@path).should == ["list_function_name"]
466
597
  end
467
598
  it "can_mkdir? should return false" do
468
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_list").should be_false
599
+ @quilt.can_mkdir?(@path).should be_false
469
600
  end
470
601
  it "can_rmdir? should return false" do
471
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_list").should be_false
602
+ @quilt.can_rmdir?(@path).should be_false
472
603
  end
473
604
 
474
605
  # /database_id/_design/design_document_id/_list/list_function_name
475
606
  describe "list_function_name/" do
607
+ before do
608
+ @path = "/#{TESTDB}/_design/design_document_id/_list/list_function_name"
609
+ end
610
+
476
611
  it "directory? should return true" do
477
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_true
612
+ @quilt.directory?(@path).should be_true
478
613
  end
479
614
  it "file? should return false" do
480
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
615
+ @quilt.file?(@path).should be_false
481
616
  end
482
617
  it "contents should list views" do
483
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should == ["view_function_name.html"]
618
+ @quilt.contents(@path).should == ["view_function_name.html"]
484
619
  end
485
620
  it "can_mkdir? should return false" do
486
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
621
+ @quilt.can_mkdir?(@path).should be_false
487
622
  end
488
623
  it "can_rmdir? should return false" do
489
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
624
+ @quilt.can_rmdir?(@path).should be_false
490
625
  end
491
626
 
492
627
  # /database_id/_design/design_document_id/_list/list_function_name/view_function_name.html
493
628
  describe "view_function_name.html" do
629
+ before do
630
+ @path = "/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html"
631
+ end
632
+
494
633
  it "directory? should return false" do
495
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
634
+ @quilt.directory?(@path).should be_false
496
635
  end
497
636
  it "file? should return true" do
498
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_true
637
+ @quilt.file?(@path).should be_true
499
638
  end
500
639
  it "read_file should return contents" do
501
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should == "Hello World!"
640
+ @quilt.read_file(@path).should == "Hello World!"
502
641
  end
503
642
  it "can_write? should return false" do
504
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
643
+ @quilt.can_write?(@path).should be_false
505
644
  end
506
645
  it "can_delete? should return false" do
507
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
646
+ @quilt.can_delete?(@path).should be_false
508
647
  end
509
648
  end
510
649
  end
@@ -512,56 +651,68 @@ describe Couchquilt::FS do
512
651
 
513
652
  # /database_id/_design/design_document_id/_show
514
653
  describe "_show/" do
654
+ before do
655
+ @path = "/#{TESTDB}/_design/design_document_id/_show"
656
+ end
657
+
515
658
  it "directory? should return true" do
516
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show").should be_true
659
+ @quilt.directory?(@path).should be_true
517
660
  end
518
661
  it "file? should return false" do
519
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_show").should be_false
662
+ @quilt.file?(@path).should be_false
520
663
  end
521
664
  it "contents should list show functions" do
522
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_show").should == ["show_function_name"]
665
+ @quilt.contents(@path).should == ["show_function_name"]
523
666
  end
524
667
  it "can_mkdir? should return false" do
525
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_show").should be_false
668
+ @quilt.can_mkdir?(@path).should be_false
526
669
  end
527
670
  it "can_rmdir? should return false" do
528
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_show").should be_false
671
+ @quilt.can_rmdir?(@path).should be_false
529
672
  end
530
673
 
531
674
  # /database_id/_design/design_document_id/_show/show_function_name
532
675
  describe "show_function_name/" do
676
+ before do
677
+ @path = "/#{TESTDB}/_design/design_document_id/_show/show_function_name"
678
+ end
679
+
533
680
  it "directory? should return true" do
534
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_true
681
+ @quilt.directory?(@path).should be_true
535
682
  end
536
683
  it "file? should return false" do
537
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
684
+ @quilt.file?(@path).should be_false
538
685
  end
539
686
  it "contents should list documents" do
540
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should == ["document_id.html"]
687
+ @quilt.contents(@path).should == ["document_id.html"]
541
688
  end
542
689
  it "can_mkdir? should return false" do
543
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
690
+ @quilt.can_mkdir?(@path).should be_false
544
691
  end
545
692
  it "can_rmdir? should return false" do
546
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
693
+ @quilt.can_rmdir?(@path).should be_false
547
694
  end
548
695
 
549
696
  # /database_id/_design/design_document_id/_show/show_function_name/document_id.html
550
697
  describe "document_id.html" do
698
+ before do
699
+ @path = "/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html"
700
+ end
701
+
551
702
  it "directory? should return false" do
552
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
703
+ @quilt.directory?(@path).should be_false
553
704
  end
554
705
  it "file? should return true" do
555
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_true
706
+ @quilt.file?(@path).should be_true
556
707
  end
557
708
  it "read_file should return contents" do
558
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should == "Hello World!"
709
+ @quilt.read_file(@path).should == "Hello World!"
559
710
  end
560
711
  it "can_write? should return false" do
561
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
712
+ @quilt.can_write?(@path).should be_false
562
713
  end
563
714
  it "can_delete? should return false" do
564
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
715
+ @quilt.can_delete?(@path).should be_false
565
716
  end
566
717
  end
567
718
  end
@@ -569,142 +720,192 @@ describe Couchquilt::FS do
569
720
 
570
721
  # /database_id/_design/design_document_id/_view
571
722
  describe "_view/" do
723
+ before do
724
+ @path = "/#{TESTDB}/_design/design_document_id/_view"
725
+ end
726
+
572
727
  it "directory? should return true" do
573
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view").should be_true
728
+ @quilt.directory?(@path).should be_true
574
729
  end
575
730
  it "file? should return false" do
576
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view").should be_false
731
+ @quilt.file?(@path).should be_false
577
732
  end
578
733
  it "contents should list view functions" do
579
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_view").should == ["view_function_name"]
734
+ @quilt.contents(@path).should == ["view_function_name"]
580
735
  end
581
736
  it "can_mkdir? should return false" do
582
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view").should be_false
737
+ @quilt.can_mkdir?(@path).should be_false
583
738
  end
584
739
  it "can_rmdir? should return false" do
585
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view").should be_false
740
+ @quilt.can_rmdir?(@path).should be_false
586
741
  end
587
742
 
588
743
  # /database_id/_design/design_document_id/_view/view_function_name
589
744
  describe "view_function_name/" do
745
+ before do
746
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name"
747
+ end
748
+
590
749
  it "directory? should return true" do
591
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_true
750
+ @quilt.directory?(@path).should be_true
592
751
  end
593
752
  it "file? should return false" do
594
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
753
+ @quilt.file?(@path).should be_false
595
754
  end
596
755
  it "contents should list view result document contents" do
597
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should == ["offset.i.js", "rows.array", "total_rows.i.js"]
756
+ @quilt.contents(@path).should == ["offset.i.js", "rows", "total_rows.i.js"]
598
757
  end
599
758
  it "can_mkdir? should return false" do
600
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
759
+ @quilt.can_mkdir?(@path).should be_false
601
760
  end
602
761
  it "can_rmdir? should return false" do
603
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
762
+ @quilt.can_rmdir?(@path).should be_false
604
763
  end
764
+
765
+ # /database_id/_design/design_document_id/_view/view_function_name/offset.i.js
605
766
  describe "offset.i.js" do
767
+ before do
768
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js"
769
+ end
770
+
606
771
  it "directory? should return false" do
607
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_false
772
+ @quilt.directory?(@path).should be_false
608
773
  end
609
774
  it "file? should return true" do
610
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_true
775
+ @quilt.file?(@path).should be_true
611
776
  end
612
777
  it "can_delete? should return false" do
613
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_false
778
+ @quilt.can_delete?(@path).should be_false
614
779
  end
615
780
  end
781
+
782
+ # /database_id/_design/design_document_id/_view/view_function_name/total_rows.i.js
616
783
  describe "total_rows.i.js" do
784
+ before do
785
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js"
786
+ end
787
+
617
788
  it "directory? should return false" do
618
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_false
789
+ @quilt.directory?(@path).should be_false
619
790
  end
620
791
  it "file? should return true" do
621
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_true
792
+ @quilt.file?(@path).should be_true
622
793
  end
623
794
  it "can_delete? should return false" do
624
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_false
795
+ @quilt.can_delete?(@path).should be_false
625
796
  end
626
797
  end
627
- describe "rows.array/" do
798
+
799
+ # /database_id/_design/design_document_id/_view/view_function_name/rows
800
+ describe "rows/" do
801
+ before do
802
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows"
803
+ end
804
+
628
805
  it "directory? should return true" do
629
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array").should be_true
806
+ @quilt.directory?(@path).should be_true
630
807
  end
631
808
  it "file? should return false" do
632
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array").should be_false
809
+ @quilt.file?(@path).should be_false
633
810
  end
634
811
  it "contents should list view rows" do
635
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array").should == ["0i"]
812
+ @quilt.contents(@path).should == ["0i"]
636
813
  end
637
814
  it "can_mkdir? should return false" do
638
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array").should be_false
815
+ @quilt.can_mkdir?(@path).should be_false
639
816
  end
640
817
  it "can_rmdir? should return false" do
641
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array").should be_false
818
+ @quilt.can_rmdir?(@path).should be_false
642
819
  end
820
+
821
+ # /database_id/_design/design_document_id/_view/view_function_name/rows/0i
643
822
  describe "0i/" do
823
+ before do
824
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/0i"
825
+ end
826
+
644
827
  it "directory? should return true" do
645
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i").should be_true
828
+ @quilt.directory?(@path).should be_true
646
829
  end
647
830
  it "file? should return false" do
648
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i").should be_false
831
+ @quilt.file?(@path).should be_false
649
832
  end
650
833
  it "contents should list view result row content" do
651
- @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i").should == ["id.js", "key.js", "value.js"]
834
+ @quilt.contents(@path).should == ["id.js", "key.js", "value.js"]
652
835
  end
653
836
  it "can_mkdir? should return false" do
654
- @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i").should be_false
837
+ @quilt.can_mkdir?(@path).should be_false
655
838
  end
656
839
  it "can_rmdir? should return false" do
657
- @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i").should be_false
840
+ @quilt.can_rmdir?(@path).should be_false
658
841
  end
842
+
843
+ # /database_id/_design/design_document_id/_view/view_function_name/rows/0i/id.js
659
844
  describe "id.js" do
845
+ before do
846
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/0i/id.js"
847
+ end
848
+
660
849
  it "directory? should return false" do
661
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/id.js").should be_false
850
+ @quilt.directory?(@path).should be_false
662
851
  end
663
852
  it "file? should return true" do
664
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/id.js").should be_true
853
+ @quilt.file?(@path).should be_true
665
854
  end
666
855
  it "read_file should return contents" do
667
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/id.js").should == "document_id"
856
+ @quilt.read_file(@path).should == "document_id"
668
857
  end
669
858
  it "can_write? should return false" do
670
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/id.js").should be_false
859
+ @quilt.can_write?(@path).should be_false
671
860
  end
672
861
  it "can_delete? should return false" do
673
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/id.js").should be_false
862
+ @quilt.can_delete?(@path).should be_false
674
863
  end
675
864
  end
865
+
866
+ # /database_id/_design/design_document_id/_view/view_function_name/rows/0i/key.js
676
867
  describe "key.js" do
868
+ before do
869
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/0i/key.js"
870
+ end
871
+
677
872
  it "directory? should return false" do
678
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/key.js").should be_false
873
+ @quilt.directory?(@path).should be_false
679
874
  end
680
875
  it "file? should return true" do
681
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/key.js").should be_true
876
+ @quilt.file?(@path).should be_true
682
877
  end
683
878
  it "read_file should return contents" do
684
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/key.js").should == "This is a name"
879
+ @quilt.read_file(@path).should == "This is a name"
685
880
  end
686
881
  it "can_write? should return false" do
687
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/key.js").should be_false
882
+ @quilt.can_write?(@path).should be_false
688
883
  end
689
884
  it "can_delete? should return false" do
690
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/key.js").should be_false
885
+ @quilt.can_delete?(@path).should be_false
691
886
  end
692
887
  end
888
+
889
+ # /database_id/_design/design_document_id/_view/view_function_name/rows/0i/value.js
693
890
  describe "value.js" do
891
+ before do
892
+ @path = "/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/0i/value.js"
893
+ end
894
+
694
895
  it "directory? should return false" do
695
- @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/value.js").should be_false
896
+ @quilt.directory?(@path).should be_false
696
897
  end
697
898
  it "file? should return true" do
698
- @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/value.js").should be_true
899
+ @quilt.file?(@path).should be_true
699
900
  end
700
901
  it "read_file should return contents" do
701
- @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/value.js").should == ""
902
+ @quilt.read_file(@path).should == ""
702
903
  end
703
904
  it "can_write? should return false" do
704
- @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/value.js").should be_false
905
+ @quilt.can_write?(@path).should be_false
705
906
  end
706
907
  it "can_delete? should return false" do
707
- @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows.array/0i/value.js").should be_false
908
+ @quilt.can_delete?(@path).should be_false
708
909
  end
709
910
  end
710
911
  end
@@ -717,36 +918,46 @@ describe Couchquilt::FS do
717
918
 
718
919
  # /_uuids
719
920
  describe "_uuids/" do
921
+ before do
922
+ @path = "/_uuids"
923
+ end
924
+
720
925
  it "directory? should return true" do
721
- @quilt.directory?("/_uuids").should be_true
926
+ @quilt.directory?(@path).should be_true
722
927
  end
723
928
  it "file? should return false" do
724
- @quilt.file?("/_uuids").should be_false
929
+ @quilt.file?(@path).should be_false
725
930
  end
726
931
  it "can_mkdir? should return false" do
727
- @quilt.can_mkdir?("/_uuids").should be_false
932
+ @quilt.can_mkdir?(@path).should be_false
728
933
  end
729
934
  it "can_rmdir? should return false" do
730
- @quilt.can_rmdir?("/_uuids").should be_false
935
+ @quilt.can_rmdir?(@path).should be_false
731
936
  end
732
937
  it "contents should include 0i.js" do
733
- @quilt.contents("/_uuids").should == ["0i.js"]
938
+ @quilt.contents(@path).should == ["0i.js"]
734
939
  end
940
+
941
+ # /_uuids/0i.js
735
942
  describe "0i.js" do
943
+ before do
944
+ @path = "/_uuids/0i.js"
945
+ end
946
+
736
947
  it "directory? should return false" do
737
- @quilt.directory?("/_uuids/0i.js").should be_false
948
+ @quilt.directory?(@path).should be_false
738
949
  end
739
950
  it "file? should return true" do
740
- @quilt.file?("/_uuids/0i.js").should be_true
951
+ @quilt.file?(@path).should be_true
741
952
  end
742
953
  it "can_delete? should return false" do
743
- @quilt.can_delete?("/_uuids/0i.js").should be_false
954
+ @quilt.can_delete?(@path).should be_false
744
955
  end
745
956
  it "can_write? should return false" do
746
- @quilt.can_write?("/_uuids/0i.js").should be_false
957
+ @quilt.can_write?(@path).should be_false
747
958
  end
748
959
  it "read_file should return contents" do
749
- @quilt.read_file("/_uuids/0i.js").should =~ /\A[a-z0-9]{32}\z/
960
+ @quilt.read_file(@path).should =~ /\A[a-z0-9]{32}\z/
750
961
  end
751
962
  end
752
963
  end