5 require File.dirname(__FILE__) + '/couchdb'
8 class DatabaseTest < Test::Unit::TestCase
11 connection = Net::HTTP.new('localhost', '5984')
12 connection.request Net::HTTP::Put.new('/test1')
13 connection.request Net::HTTP::Delete.new('/test2')
17 assert Database.new('test1').exists?
18 assert !Database.new('test2').exists?
22 db = Database.new('test2')
28 class DocumentTest < Test::Unit::TestCase
31 @db = Database.new('test1')
32 connection = Net::HTTP.new('localhost', '5984')
33 connection.request Net::HTTP::Delete.new('/test1/something')
37 doc = Document.new('hello' => 'world')
44 assert_equal 1, doc.attributes.size
45 doc['something'] = 'else'
46 doc['hello'] = 'blah!'
50 assert_equal 'else', doc['something']
51 assert_equal 'blah!', doc['hello']
52 assert_equal 2, doc.attributes.size
57 Document.new('a' => 1),
58 Document.new('b' => 2),
59 Document.new('c' => 3)
64 docs.each { |doc| doc.reload }
66 assert_equal 1, docs[0]['a']
67 assert_equal 2, docs[1]['b']
68 assert_equal 3, docs[2]['c']
76 docs.each { |doc| doc.reload }
77 assert_equal 11, docs[0]['a']
78 assert_equal 22, docs[1]['b']
79 assert_equal 33, docs[2]['c']
84 class ViewTest < Test::Unit::TestCase
87 connection = Net::HTTP.new('localhost', '5984')
88 connection.request Net::HTTP::Delete.new('/test1')
89 @db = Database.new('test1')
93 def test_view_creation
94 assert view = @db.view('overview', 'view1')
95 source = "function (doc) { map(doc._id, doc); }"
99 overview = @db.retrieve('_design/overview')
100 assert_equal overview['views']['view1'], source
102 view2 = @db.view('overview', 'view1')
103 assert_equal view.source, view2.source
106 Document.new('a' => 1),
107 Document.new('b' => 2),
108 Document.new('c' => 3)
111 view = @db.view('overview', 'view1')
114 assert_equal 3, docs.length
117 assert_equal 1, d['a'] if d['a']
118 assert_equal 2, d['b'] if d['b']
119 assert_equal 3, d['c'] if d['c']
122 docs2 = view.find(:key => docs.first.id)
123 assert_equal 1, docs2.length