couch-quilt 0.2.1

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