couch-quilt 0.2.1

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.
@@ -0,0 +1,3 @@
1
+ module Couchquilt
2
+ VERSION = '0.2.1'
3
+ end
@@ -0,0 +1,691 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
+
3
+ # Note: databases, documents and keys with slashes are not supported by now
4
+ describe "Quilt" do
5
+ before :all do
6
+ RestClient.put(File.join(SERVER_NAME, TESTDB), nil)
7
+
8
+ @document = {
9
+ "_id" => "document_id",
10
+ "name" => "This is a name",
11
+ "integer" => 12,
12
+ "float" => 1.2,
13
+ "boolean" => true,
14
+ "object" => { "key" => "this is a value" },
15
+ "array" => ["this is another value"],
16
+ "empty" => {}
17
+ }
18
+ RestClient.put File.join(SERVER_NAME, TESTDB, @document["_id"]), @document.to_json
19
+
20
+ @design_document = {
21
+ "_id" => "_design/design_document_id",
22
+ "language" => "javascript",
23
+ "name" => "This is a name",
24
+ "shows" => {
25
+ "show_function_name" => "function(doc, req) { return 'Hello World!'; }",
26
+ },
27
+ "lists" => {
28
+ "list_function_name" => "function(head, req) { return 'Hello World!'; }",
29
+ },
30
+ "views" => {
31
+ "view_function_name" => {
32
+ "map" => "function(doc) { if(doc.name) { emit(doc.name, null); } }"
33
+ }
34
+ },
35
+ }
36
+ RestClient.put File.join(SERVER_NAME, TESTDB, @design_document["_id"]), @design_document.to_json
37
+
38
+ @quilt = Couchquilt::DebuggedFS.new("http://127.0.0.1:5984")
39
+ end
40
+
41
+ after :all do
42
+ RestClient.delete(File.join(SERVER_NAME, TESTDB))
43
+ end
44
+
45
+ describe "/" do
46
+ it "directory? should return true" do
47
+ @quilt.directory?("/").should be_true
48
+ end
49
+ it "file? should return false" do
50
+ @quilt.file?("/").should be_false
51
+ end
52
+ it "contents should list databases" do
53
+ @quilt.contents("/").should include(TESTDB)
54
+ end
55
+ it "can_mkdir? should return false" do
56
+ @quilt.can_mkdir?("/").should be_false
57
+ end
58
+ it "can_rmdir? should return false" do
59
+ @quilt.can_rmdir?("/").should be_false
60
+ end
61
+
62
+ # /unknown_database
63
+ describe "unknown_database/" do
64
+ it "directory? should return false" do
65
+ @quilt.directory?("/unknown_database").should be_false
66
+ end
67
+ it "file? should return false" do
68
+ @quilt.file?("/unknown_database").should be_false
69
+ end
70
+ it "can_mkdir? should return true" do
71
+ @quilt.can_mkdir?("/unknown_database").should be_true
72
+ end
73
+ end
74
+
75
+ # /new_database
76
+ describe "#{TESTDB}-new/" do
77
+ before do
78
+ @new_database = "#{TESTDB}-new"
79
+ end
80
+
81
+ it "mkdir should create database which touch _delete should remove" do
82
+ @quilt.directory?("/#{@new_database}").should be_false
83
+ @quilt.mkdir("/#{@new_database}").should be_true
84
+ @quilt.directory?("/#{@new_database}").should be_true
85
+ @quilt.touch("/#{@new_database}/_delete").should be_true
86
+ @quilt.directory?("/#{@new_database}").should be_false
87
+ end
88
+ end
89
+
90
+ # /database_id
91
+ describe "database_id/" do
92
+ it "directory? should return true" do
93
+ @quilt.directory?("/#{TESTDB}").should be_true
94
+ end
95
+ it "file? should return false" do
96
+ @quilt.file?("/#{TESTDB}").should be_false
97
+ end
98
+ it "contents should list documents" do
99
+ @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"]
100
+ end
101
+ it "can_mkdir? should return false" do
102
+ @quilt.can_mkdir?("/#{TESTDB}").should be_false
103
+ end
104
+ it "can_rmdir? should return false" do
105
+ @quilt.can_rmdir?("/#{TESTDB}").should be_false
106
+ end
107
+
108
+ # /database_id/db_name.js
109
+ describe "db_name.js" do
110
+ it "directory? should return false" do
111
+ @quilt.directory?("/#{TESTDB}/db_name.js").should be_false
112
+ end
113
+ it "file? should return true" do
114
+ @quilt.file?("/#{TESTDB}/db_name.js").should be_true
115
+ end
116
+ it "read_file should return contents" do
117
+ @quilt.read_file("/#{TESTDB}/db_name.js").should == TESTDB
118
+ end
119
+ it "can_write? should return false" do
120
+ @quilt.can_write?("/#{TESTDB}/db_name.js").should be_false
121
+ end
122
+ it "can_delete? should return false" do
123
+ @quilt.can_delete?("/#{TESTDB}/db_name.js").should be_false
124
+ end
125
+ end
126
+
127
+ # /database_id/doc_count.i.js
128
+ describe "doc_count.i.js" do
129
+ it "directory? should return false" do
130
+ @quilt.directory?("/#{TESTDB}/doc_count.i.js").should be_false
131
+ end
132
+ it "file? should return true" do
133
+ @quilt.file?("/#{TESTDB}/doc_count.i.js").should be_true
134
+ end
135
+ it "read_file should return contents" do
136
+ @quilt.read_file("/#{TESTDB}/doc_count.i.js").should == "2"
137
+ end
138
+ it "can_write? should return false" do
139
+ @quilt.can_write?("/#{TESTDB}/doc_count.i.js").should be_false
140
+ end
141
+ it "can_delete? should return false" do
142
+ @quilt.can_delete?("/#{TESTDB}/doc_count.i.js").should be_false
143
+ end
144
+ end
145
+
146
+ # /database_id/unknown_document
147
+ describe "unknown_document/" do
148
+ it "directory? should return false" do
149
+ @quilt.directory?("/#{TESTDB}/unknown_document").should be_false
150
+ end
151
+ it "file? should return false" do
152
+ @quilt.file?("/#{TESTDB}/unknown_document").should be_false
153
+ end
154
+ it "can_mkdir? should return true" do
155
+ @quilt.can_mkdir?("/#{TESTDB}/unknown_document").should be_true
156
+ end
157
+ it "can_rmdir? should return false" do
158
+ @quilt.can_rmdir?("/#{TESTDB}/unknown_document").should be_false
159
+ end
160
+ end
161
+
162
+ # /database_id/document_id
163
+ describe "document_id/" do
164
+ it "directory? should return true" do
165
+ @quilt.directory?("/#{TESTDB}/document_id").should be_true
166
+ end
167
+ it "file? should return false" do
168
+ @quilt.file?("/#{TESTDB}/document_id").should be_false
169
+ end
170
+ it "contents should list documents content" do
171
+ @quilt.contents("/#{TESTDB}/document_id").should == ["_id.js", "_rev.js", "array", "boolean.b.js", "empty", "float.f.js", "integer.i.js", "name.js", "object"]
172
+ end
173
+ it "can_mkdir? should return false" do
174
+ @quilt.can_mkdir?("/#{TESTDB}/document_id").should be_false
175
+ end
176
+ it "can_rmdir? should return false" do
177
+ @quilt.can_rmdir?("/#{TESTDB}/document_id").should be_false
178
+ end
179
+ it "touch _delete should delete document" do
180
+ @quilt.touch("/#{TESTDB}/document_id/_delete").should be_true
181
+ @quilt.directory?("/#{TESTDB}/document_id").should be_false
182
+ end
183
+
184
+ # /database_id/document_id/unknown_attribute
185
+ describe "unknown_attribute/" do
186
+ it "directory? should return false" do
187
+ @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_false
188
+ end
189
+ it "file? should return false" do
190
+ @quilt.file?("/#{TESTDB}/document_id/unknown_attribute").should be_false
191
+ end
192
+ it "can_mkdir? should return true" do
193
+ @quilt.can_mkdir?("/#{TESTDB}/document_id/unknown_attribute").should be_true
194
+ end
195
+ it "mkdir should update document while rmdir should reset it" do
196
+ @quilt.mkdir("/#{TESTDB}/document_id/unknown_attribute").should be_true
197
+ @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_true
198
+ @quilt.rmdir("/#{TESTDB}/document_id/unknown_attribute").should be_true
199
+ @quilt.directory?("/#{TESTDB}/document_id/unknown_attribute").should be_false
200
+ end
201
+ end
202
+
203
+ # /database_id/document_id/_id.js
204
+ describe "_id.js" do
205
+ it "directory? should return false" do
206
+ @quilt.directory?("/#{TESTDB}/document_id/_id.js").should be_false
207
+ end
208
+ it "file? should return true" do
209
+ @quilt.file?("/#{TESTDB}/document_id/_id.js").should be_true
210
+ end
211
+ it "read_file should return contents" do
212
+ @quilt.read_file("/#{TESTDB}/document_id/_id.js").should == "document_id"
213
+ end
214
+ it "can_write? should return false" do
215
+ @quilt.can_write?("/#{TESTDB}/document_id/_id.js").should be_false
216
+ end
217
+ it "can_delete? should return false" do
218
+ @quilt.can_delete?("/#{TESTDB}/document_id/_id.js").should be_false
219
+ end
220
+ end
221
+
222
+ # /database_id/document_id/name.js
223
+ describe "name.js" do
224
+ it "directory? should return false" do
225
+ @quilt.directory?("/#{TESTDB}/document_id/name.js").should be_false
226
+ end
227
+ it "file? should return true" do
228
+ @quilt.file?("/#{TESTDB}/document_id/name.js").should be_true
229
+ end
230
+ it "read_file should return contents" do
231
+ @quilt.read_file("/#{TESTDB}/document_id/name.js").should == @document["name"]
232
+ end
233
+ it "can_write? should return true" do
234
+ @quilt.can_write?("/#{TESTDB}/document_id/name.js").should be_true
235
+ end
236
+ it "write_to should update document" do
237
+ @quilt.write_to("/#{TESTDB}/document_id/name.js", "value").should be_true
238
+ end
239
+ it "can_delete? should return false" do
240
+ @quilt.can_delete?("/#{TESTDB}/document_id/name.js").should be_true
241
+ end
242
+ it "delete should update document" do
243
+ @quilt.delete("/#{TESTDB}/document_id/name.js").should be_true
244
+ @quilt.file?("/#{TESTDB}/document_id/name.js").should be_false
245
+ end
246
+ end
247
+
248
+ # /database_id/document_id/boolean.b.js
249
+ describe "boolean.b.js" do
250
+ it "directory? should return false" do
251
+ @quilt.directory?("/#{TESTDB}/document_id/boolean.b.js").should be_false
252
+ end
253
+ it "file? should return true" do
254
+ @quilt.file?("/#{TESTDB}/document_id/boolean.b.js").should be_true
255
+ end
256
+ it "read_file should return contents" do
257
+ @quilt.read_file("/#{TESTDB}/document_id/boolean.b.js").should == @document["boolean"].to_s
258
+ end
259
+ it "can_write? should return true" do
260
+ @quilt.can_write?("/#{TESTDB}/document_id/boolean.b.js").should be_true
261
+ end
262
+ it "write_to should update document" do
263
+ @quilt.write_to("/#{TESTDB}/document_id/boolean.b.js", "value").should be_true
264
+ end
265
+ it "can_delete? should return false" do
266
+ @quilt.can_delete?("/#{TESTDB}/document_id/boolean.b.js").should be_true
267
+ end
268
+ it "delete should update document" do
269
+ @quilt.delete("/#{TESTDB}/document_id/boolean.b.js").should be_true
270
+ @quilt.file?("/#{TESTDB}/document_id/boolean.b.js").should be_false
271
+ end
272
+ end
273
+
274
+
275
+ # /database_id/document_id/object
276
+ describe "object/" do
277
+ it "directory? should return true" do
278
+ @quilt.directory?("/#{TESTDB}/document_id/object").should be_true
279
+ end
280
+ it "file? should return false" do
281
+ @quilt.file?("/#{TESTDB}/document_id/object").should be_false
282
+ end
283
+ it "contents should list object content" do
284
+ @quilt.contents("/#{TESTDB}/document_id/object").should == ["key.js"]
285
+ end
286
+ it "can_mkdir? should return false" do
287
+ @quilt.can_mkdir?("/#{TESTDB}/document_id/object").should be_false
288
+ end
289
+ it "can_rmdir? should return false when not empty" do
290
+ @quilt.can_rmdir?("/#{TESTDB}/document_id/object").should be_false
291
+ end
292
+ end
293
+
294
+ # /database_id/document_id/array
295
+ describe "array/" do
296
+ it "directory? should return true" do
297
+ @quilt.directory?("/#{TESTDB}/document_id/array").should be_true
298
+ end
299
+ it "file? should return false" do
300
+ @quilt.file?("/#{TESTDB}/document_id/array").should be_false
301
+ end
302
+ it "contents should list array content" do
303
+ @quilt.contents("/#{TESTDB}/document_id/array").should == ["000.js"]
304
+ end
305
+ it "can_mkdir? should return false" do
306
+ @quilt.can_mkdir?("/#{TESTDB}/document_id/array").should be_false
307
+ end
308
+ it "can_rmdir? should return false when not empty" do
309
+ @quilt.can_rmdir?("/#{TESTDB}/document_id/array").should be_false
310
+ end
311
+ end
312
+
313
+ # /database_id/document_id/empty
314
+ describe "empty/" do
315
+ it "directory? should return true" do
316
+ @quilt.directory?("/#{TESTDB}/document_id/empty").should be_true
317
+ end
318
+ it "file? should return false" do
319
+ @quilt.file?("/#{TESTDB}/document_id/empty").should be_false
320
+ end
321
+ it "contents should list empty content" do
322
+ @quilt.contents("/#{TESTDB}/document_id/empty").should == []
323
+ end
324
+ it "can_mkdir? should return false" do
325
+ @quilt.can_mkdir?("/#{TESTDB}/document_id/empty").should be_false
326
+ end
327
+ it "can_rmdir? should return true when empty" do
328
+ @quilt.can_rmdir?("/#{TESTDB}/document_id/empty").should be_true
329
+ end
330
+ it "rmdir should remove empty from document tree when empty" do
331
+ @quilt.rmdir("/#{TESTDB}/document_id/empty").should be_true
332
+ @quilt.directory?("/#{TESTDB}/document_id/empty").should be_false
333
+ end
334
+ end
335
+ end
336
+
337
+ # /database_id/_design
338
+ describe "_design/" do
339
+ it "directory? should return true" do
340
+ @quilt.directory?("/#{TESTDB}/_design").should be_true
341
+ end
342
+ it "file? should return false" do
343
+ @quilt.file?("/#{TESTDB}/_design").should be_false
344
+ end
345
+ it "contents should list design documents" do
346
+ @quilt.contents("/#{TESTDB}/_design").should == ["design_document_id"]
347
+ end
348
+ it "can_mkdir? should return false" do
349
+ @quilt.can_mkdir?("/#{TESTDB}/_design").should be_false
350
+ end
351
+ it "can_rmdir? should return false" do
352
+ @quilt.can_rmdir?("/#{TESTDB}/_design").should be_false
353
+ end
354
+
355
+ # /database_id/_design/new_design_document_id
356
+ describe "new_design_document_id/" do
357
+ it "mkdir should create design document which touch _delete should remove" do
358
+ @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_false
359
+ @quilt.mkdir("/#{TESTDB}/_design/new_design_document_id").should be_true
360
+ @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_true
361
+ @quilt.touch("/#{TESTDB}/_design/new_design_document_id/_delete").should be_true
362
+ @quilt.directory?("/#{TESTDB}/_design/new_design_document_id").should be_false
363
+ end
364
+ end
365
+
366
+ # /database_id/_design/design_document_id
367
+ describe "design_document_id/" do
368
+ it "directory? should return true" do
369
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id").should be_true
370
+ end
371
+ it "file? should return false" do
372
+ @quilt.file?("/#{TESTDB}/_design/design_document_id").should be_false
373
+ end
374
+ it "contents should list design documents content" do
375
+ @quilt.contents("/#{TESTDB}/_design/design_document_id").should == ["_id.js", "_list", "_rev.js", "_show", "_view", "language.js", "lists", "name.js", "shows", "views"]
376
+ end
377
+ it "can_mkdir? should return false" do
378
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id").should be_false
379
+ end
380
+ it "can_rmdir? should return false" do
381
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id").should be_false
382
+ end
383
+
384
+ # /database_id/_design/design_document_id/_id.js
385
+ describe "_id.js" do
386
+ it "directory? should return false" do
387
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
388
+ end
389
+ it "file? should return true" do
390
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_id.js").should be_true
391
+ end
392
+ it "read_file should return value" do
393
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_id.js").should == @design_document["_id"]
394
+ end
395
+ it "can_write? should return false" do
396
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
397
+ end
398
+ it "can_delete? should return false" do
399
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_id.js").should be_false
400
+ end
401
+ end
402
+
403
+ # /database_id/_design/design_document_id/name.js
404
+ describe "name.js" do
405
+ it "directory? should return false" do
406
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/name.js").should be_false
407
+ end
408
+ it "file? should return true" do
409
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
410
+ end
411
+ it "read_file should return value" do
412
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/name.js").should == @design_document["name"]
413
+ end
414
+ it "can_write? should return true" do
415
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
416
+ end
417
+ it "write_to should update _design/design_document_id" do
418
+ @quilt.write_to("/#{TESTDB}/_design/design_document_id/name.js", "value").should be_true
419
+ end
420
+ it "can_delete? should return true" do
421
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/name.js").should be_true
422
+ end
423
+ it "delete should update design document" do
424
+ @quilt.delete("/#{TESTDB}/_design/design_document_id/name.js").should be_true
425
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/name.js").should be_false
426
+ end
427
+ end
428
+
429
+ # /database_id/_design/design_document_id/_list
430
+ describe "_list/" do
431
+ it "directory? should return true" do
432
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list").should be_true
433
+ end
434
+ it "file? should return false" do
435
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_list").should be_false
436
+ end
437
+ it "contents should list list functions" do
438
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_list").should == ["list_function_name"]
439
+ end
440
+ it "can_mkdir? should return false" do
441
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_list").should be_false
442
+ end
443
+ it "can_rmdir? should return false" do
444
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_list").should be_false
445
+ end
446
+
447
+ # /database_id/_design/design_document_id/_list/list_function_name
448
+ describe "list_function_name/" do
449
+ it "directory? should return true" do
450
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_true
451
+ end
452
+ it "file? should return false" do
453
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
454
+ end
455
+ it "contents should list views" do
456
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should == ["view_function_name.html"]
457
+ end
458
+ it "can_mkdir? should return false" do
459
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
460
+ end
461
+ it "can_rmdir? should return false" do
462
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_list/list_function_name").should be_false
463
+ end
464
+
465
+ # /database_id/_design/design_document_id/_list/list_function_name/view_function_name.html
466
+ describe "view_function_name.html" do
467
+ it "directory? should return false" do
468
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
469
+ end
470
+ it "file? should return true" do
471
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_true
472
+ end
473
+ it "read_file should return contents" do
474
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should == "Hello World!"
475
+ end
476
+ it "can_write? should return false" do
477
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
478
+ end
479
+ it "can_delete? should return false" do
480
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_list/list_function_name/view_function_name.html").should be_false
481
+ end
482
+ end
483
+ end
484
+ end
485
+
486
+ # /database_id/_design/design_document_id/_show
487
+ describe "_show/" do
488
+ it "directory? should return true" do
489
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show").should be_true
490
+ end
491
+ it "file? should return false" do
492
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_show").should be_false
493
+ end
494
+ it "contents should list show functions" do
495
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_show").should == ["show_function_name"]
496
+ end
497
+ it "can_mkdir? should return false" do
498
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_show").should be_false
499
+ end
500
+ it "can_rmdir? should return false" do
501
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_show").should be_false
502
+ end
503
+
504
+ # /database_id/_design/design_document_id/_show/show_function_name
505
+ describe "show_function_name/" do
506
+ it "directory? should return true" do
507
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_true
508
+ end
509
+ it "file? should return false" do
510
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
511
+ end
512
+ it "contents should list documents" do
513
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should == ["document_id.html"]
514
+ end
515
+ it "can_mkdir? should return false" do
516
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
517
+ end
518
+ it "can_rmdir? should return false" do
519
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_show/show_function_name").should be_false
520
+ end
521
+
522
+ # /database_id/_design/design_document_id/_show/show_function_name/document_id.html
523
+ describe "document_id.html" do
524
+ it "directory? should return false" do
525
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
526
+ end
527
+ it "file? should return true" do
528
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_true
529
+ end
530
+ it "read_file should return contents" do
531
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should == "Hello World!"
532
+ end
533
+ it "can_write? should return false" do
534
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
535
+ end
536
+ it "can_delete? should return false" do
537
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_show/show_function_name/document_id.html").should be_false
538
+ end
539
+ end
540
+ end
541
+ end
542
+
543
+ # /database_id/_design/design_document_id/_view
544
+ describe "_view/" do
545
+ it "directory? should return true" do
546
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view").should be_true
547
+ end
548
+ it "file? should return false" do
549
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view").should be_false
550
+ end
551
+ it "contents should list view functions" do
552
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_view").should == ["view_function_name"]
553
+ end
554
+ it "can_mkdir? should return false" do
555
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view").should be_false
556
+ end
557
+ it "can_rmdir? should return false" do
558
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view").should be_false
559
+ end
560
+
561
+ # /database_id/_design/design_document_id/_view/view_function_name
562
+ describe "view_function_name/" do
563
+ it "directory? should return true" do
564
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_true
565
+ end
566
+ it "file? should return false" do
567
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
568
+ end
569
+ it "contents should list view result document contents" do
570
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should == ["offset.i.js", "rows", "total_rows.i.js"]
571
+ end
572
+ it "can_mkdir? should return false" do
573
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
574
+ end
575
+ it "can_rmdir? should return false" do
576
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name").should be_false
577
+ end
578
+ describe "offset.i.js" do
579
+ it "directory? should return false" do
580
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_false
581
+ end
582
+ it "file? should return true" do
583
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_true
584
+ end
585
+ it "can_delete? should return false" do
586
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/offset.i.js").should be_false
587
+ end
588
+ end
589
+ describe "total_rows.i.js" do
590
+ it "directory? should return false" do
591
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_false
592
+ end
593
+ it "file? should return true" do
594
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_true
595
+ end
596
+ it "can_delete? should return false" do
597
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/total_rows.i.js").should be_false
598
+ end
599
+ end
600
+ describe "rows/" do
601
+ it "directory? should return true" do
602
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows").should be_true
603
+ end
604
+ it "file? should return false" do
605
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows").should be_false
606
+ end
607
+ it "contents should list view rows" do
608
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows").should == ["000"]
609
+ end
610
+ it "can_mkdir? should return false" do
611
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows").should be_false
612
+ end
613
+ it "can_rmdir? should return false" do
614
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows").should be_false
615
+ end
616
+ describe "000/" do
617
+ it "directory? should return true" do
618
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000").should be_true
619
+ end
620
+ it "file? should return false" do
621
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000").should be_false
622
+ end
623
+ it "contents should list view result row content" do
624
+ @quilt.contents("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000").should == ["id.js", "key.js", "value.js"]
625
+ end
626
+ it "can_mkdir? should return false" do
627
+ @quilt.can_mkdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000").should be_false
628
+ end
629
+ it "can_rmdir? should return false" do
630
+ @quilt.can_rmdir?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000").should be_false
631
+ end
632
+ describe "id.js" do
633
+ it "directory? should return false" do
634
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/id.js").should be_false
635
+ end
636
+ it "file? should return true" do
637
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/id.js").should be_true
638
+ end
639
+ it "read_file should return contents" do
640
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/id.js").should == "document_id"
641
+ end
642
+ it "can_write? should return false" do
643
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/id.js").should be_false
644
+ end
645
+ it "can_delete? should return false" do
646
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/id.js").should be_false
647
+ end
648
+ end
649
+ describe "key.js" do
650
+ it "directory? should return false" do
651
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/key.js").should be_false
652
+ end
653
+ it "file? should return true" do
654
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/key.js").should be_true
655
+ end
656
+ it "read_file should return contents" do
657
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/key.js").should == "This is a name"
658
+ end
659
+ it "can_write? should return false" do
660
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/key.js").should be_false
661
+ end
662
+ it "can_delete? should return false" do
663
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/key.js").should be_false
664
+ end
665
+ end
666
+ describe "value.js" do
667
+ it "directory? should return false" do
668
+ @quilt.directory?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/value.js").should be_false
669
+ end
670
+ it "file? should return true" do
671
+ @quilt.file?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/value.js").should be_true
672
+ end
673
+ it "read_file should return contents" do
674
+ @quilt.read_file("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/value.js").should == ""
675
+ end
676
+ it "can_write? should return false" do
677
+ @quilt.can_write?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/value.js").should be_false
678
+ end
679
+ it "can_delete? should return false" do
680
+ @quilt.can_delete?("/#{TESTDB}/_design/design_document_id/_view/view_function_name/rows/000/value.js").should be_false
681
+ end
682
+ end
683
+ end
684
+ end
685
+ end
686
+ end
687
+ end
688
+ end
689
+ end
690
+ end
691
+ end