leanback 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -0
- data/VERSION +1 -1
- data/leanback.gemspec +2 -2
- data/test/test_leanback.rb +116 -73
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -214,6 +214,8 @@ Leanback parses the native JSON results to return only the data values.
|
|
214
214
|
# => [{"_id"=>"Nancy", "_rev"=>"2-4404d0a5a1a3dff103fd46faf1e46c30", "firstname"=>"Nancy", "lastname"=>"Lee",
|
215
215
|
"phone"=>"347-808-3734", "email"=>"nancy@mail.com", "gender"=>"female", "age"=>"36"}]
|
216
216
|
|
217
|
+
The above example will return all contacts with age = 36.
|
218
|
+
|
217
219
|
This is similar to sending a
|
218
220
|
GET http://127.0.0.1:5984/[database]/_design/[design_doc]/_view/[view_name]?key="searchterm"
|
219
221
|
For the above example
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
data/leanback.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{leanback}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Obi Akubue"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-09-14}
|
13
13
|
s.description = %q{lightweight Ruby interface to CouchDB}
|
14
14
|
s.email = %q{obioraakubue@yahoo.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_leanback.rb
CHANGED
@@ -9,77 +9,85 @@ class TestLeanback < Test::Unit::TestCase
|
|
9
9
|
|
10
10
|
|
11
11
|
should "create a database if it doesn't already exist" do
|
12
|
-
|
13
|
-
|
12
|
+
hash = Couchdb.create 'staff'
|
13
|
+
assert_equal '{"ok"=>true}', hash.to_s
|
14
|
+
response = RestClient.get 'http://127.0.0.1:5984/_all_dbs', {:content_type => :json}
|
15
|
+
assert_equal true,response.include?("staff")
|
14
16
|
end
|
15
17
|
|
16
18
|
should "create a database if it doesn't already exist, and handle exception if it exists" do
|
17
19
|
begin
|
18
20
|
hash = Couchdb.create 'contacts'
|
19
|
-
|
21
|
+
assert_equal '{"ok"=>true}', hash.to_s
|
20
22
|
rescue => e
|
21
|
-
|
22
|
-
|
23
|
+
assert_equal "CouchDB: Error - file_exists. Reason - The database could not be created, the file already exists.", e.to_s
|
24
|
+
assert_equal "file_exists", e.error
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
26
|
-
should "delete a database that doesn't exist and handle the exception" do
|
28
|
+
should "try to delete a database that doesn't exist and handle the exception" do
|
27
29
|
begin
|
28
30
|
hash = Couchdb.delete 'buildings'
|
29
31
|
#puts hash.inspect
|
30
32
|
rescue CouchdbException => e
|
31
|
-
|
32
|
-
|
33
|
+
assert_equal "CouchDB: Error - not_found. Reason - missing", e.to_s
|
34
|
+
assert_equal "not_found", e.error
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
38
|
should "add a finder method to the database or handle exception if a finder already exists" do
|
37
|
-
begin
|
38
39
|
hash = Couchdb.add_finder(:database => 'contacts', :key => 'email')
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
assert_equal true,hash.include?("_design/email_finder")
|
41
|
+
assert_equal true,hash.include?("true")
|
42
|
+
assert_equal true,hash.include?("rev")
|
43
|
+
|
44
|
+
doc = {:database => 'contacts', :doc_id => '_design/email_finder'}
|
45
|
+
hash = Couchdb.view doc
|
46
|
+
assert_equal '_design/email_finder', hash["_id"]
|
44
47
|
end
|
45
48
|
|
46
49
|
should "find items by key" do
|
47
50
|
#docs = Couchdb.find_by( :database => 'contacts', :email => 'nancy@mail.com')
|
48
51
|
docs = Couchdb.find_by( :database => 'contacts', :lastname => 'smith')
|
49
52
|
#docs = Couchdb.find_by( :database => 'contacts', :country => 'female')
|
50
|
-
|
53
|
+
|
54
|
+
d = docs[0]
|
55
|
+
assert_equal "smith", d["lastname"]
|
51
56
|
end
|
52
57
|
|
53
|
-
should "view document doc
|
58
|
+
should "create and view document doc" do
|
59
|
+
|
60
|
+
data = {:firstname => 'John',
|
61
|
+
:lastname =>'smith',
|
62
|
+
:phone => '202-234-1234',
|
63
|
+
:email =>'james@mail.com',
|
64
|
+
:age =>'34',
|
65
|
+
:gender =>'male'}
|
66
|
+
|
67
|
+
doc = {:database => 'contacts', :doc_id => 'john', :data => data}
|
68
|
+
Document.create doc
|
54
69
|
|
55
|
-
doc = {:database => '
|
56
|
-
begin
|
70
|
+
doc = {:database => 'contacts', :doc_id => 'john'}
|
57
71
|
hash = Couchdb.view doc
|
58
|
-
|
59
|
-
rescue CouchdbException => e
|
60
|
-
#puts e.inspect
|
61
|
-
#puts e.error
|
62
|
-
end
|
72
|
+
assert_equal 'john', hash["_id"]
|
63
73
|
end
|
64
74
|
|
65
75
|
should "Query a permanent view that doesn't exist and handle exception" do
|
66
76
|
begin
|
67
|
-
#puts 'viewing design doc...'
|
68
77
|
view = { :database => "contacts", :design_doc => 'more_views', :view => 'get_user_email'}
|
69
|
-
|
70
|
-
#puts hash.inspect
|
78
|
+
Couchdb.find view
|
71
79
|
rescue CouchdbException => e
|
72
|
-
|
73
|
-
|
80
|
+
assert_equal "CouchDB: Error - not_found. Reason - missing_named_view", e.to_s
|
81
|
+
assert_equal "not_found", e.error
|
74
82
|
end
|
75
83
|
end
|
76
84
|
|
77
85
|
|
78
86
|
should "Query a permanent view" do
|
79
87
|
view = { :database => "contacts", :design_doc => 'more_views', :view => 'get_email'}
|
80
|
-
|
81
|
-
|
82
|
-
|
88
|
+
docs = Couchdb.find view
|
89
|
+
assert_equal true,docs[0].include?("Email")
|
90
|
+
assert_equal true,docs[0].include?("Lastname")
|
83
91
|
end
|
84
92
|
|
85
93
|
|
@@ -88,9 +96,14 @@ class TestLeanback < Test::Unit::TestCase
|
|
88
96
|
:design_doc => 'my_views',
|
89
97
|
:view => 'get_emails',
|
90
98
|
:json_doc => '/home/obi/bin/my_views.json'}
|
91
|
-
|
92
|
-
|
93
|
-
|
99
|
+
|
100
|
+
docs = Couchdb.find_on_fly(view)
|
101
|
+
assert_equal true,docs[0].include?("Email")
|
102
|
+
assert_equal true,docs[0].include?("Name")
|
103
|
+
#verify that the view was created
|
104
|
+
doc = {:database => 'contacts', :doc_id => '_design/my_views'}
|
105
|
+
hash = Couchdb.view doc
|
106
|
+
assert_equal '_design/my_views', hash["_id"]
|
94
107
|
end
|
95
108
|
|
96
109
|
should "Query a permanent view by key and create the view on the fly, if it doesn't already exist" do
|
@@ -100,82 +113,112 @@ class TestLeanback < Test::Unit::TestCase
|
|
100
113
|
:json_doc => '/home/obi/bin/view_age.json'}
|
101
114
|
|
102
115
|
age = '36'
|
103
|
-
|
104
|
-
|
116
|
+
docs = Couchdb.find_on_fly(view,key = age)
|
117
|
+
assert_equal true,docs[0].include?("age")
|
118
|
+
d = docs[0]
|
119
|
+
assert_equal '36', d["age"]
|
120
|
+
#verify that the view was created
|
121
|
+
doc = {:database => 'contacts', :doc_id => '_design/the_view'}
|
122
|
+
hash = Couchdb.view doc
|
123
|
+
assert_equal '_design/the_view', hash["_id"]
|
105
124
|
end
|
106
125
|
|
107
126
|
should "Create a design doc/permanent view or handle exception" do
|
108
127
|
doc = { :database => 'contacts', :design_doc => 'more_views', :json_doc => '/home/obi/bin/leanback/test/my_views.json' }
|
109
|
-
begin
|
110
128
|
hash = Couchdb.create_design doc
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
129
|
+
assert_equal '_design/more_views', hash["id"]
|
130
|
+
assert_equal true, hash["ok"]
|
131
|
+
|
132
|
+
doc = {:database => 'contacts', :doc_id => '_design/more_views'}
|
133
|
+
hash = Couchdb.view doc
|
134
|
+
assert_equal '_design/more_views', hash["_id"]
|
116
135
|
end
|
117
136
|
|
118
137
|
should "return a display a list of all databases" do
|
119
138
|
databases = Couchdb.all
|
120
|
-
|
121
|
-
# puts db_name
|
122
|
-
end
|
139
|
+
assert_equal true,databases.include?("contacts")
|
123
140
|
end
|
124
141
|
|
125
142
|
should "delete a database" do
|
126
143
|
hash = Couchdb.delete 'staff'
|
127
|
-
|
144
|
+
assert_equal true, hash["ok"]
|
145
|
+
response = RestClient.get 'http://127.0.0.1:5984/_all_dbs', {:content_type => :json}
|
146
|
+
assert_equal false,response.include?("staff")
|
128
147
|
end
|
129
148
|
|
130
149
|
should "create a document and handle exception if one occurs" do
|
131
|
-
begin
|
132
150
|
data = {:firstname => 'Nancy', :lastname =>'Lee', :phone => '347-808-3734',:email =>'nancy@mail.com',:gender => 'female'}
|
133
151
|
doc = {:database => 'contacts', :doc_id => 'Nancy', :data => data}
|
134
|
-
hash = Document.create doc
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
152
|
+
hash = Document.create doc
|
153
|
+
assert_equal 'Nancy', hash["id"]
|
154
|
+
assert_equal true, hash["ok"]
|
155
|
+
|
156
|
+
doc = {:database => 'contacts', :doc_id => 'Nancy'}
|
157
|
+
hash = Couchdb.view doc
|
158
|
+
assert_equal 'Nancy', hash["_id"]
|
159
|
+
assert_equal 'Nancy', hash["firstname"]
|
160
|
+
assert_equal 'Lee', hash["lastname"]
|
161
|
+
assert_equal '347-808-3734', hash["phone"]
|
140
162
|
end
|
141
163
|
|
142
164
|
should "update the document" do
|
143
165
|
#data = {"age" => "42", "lastname" => "arnold", "phone" => "202-456-1234", "hobbies" => "football,running, video gamess" }
|
144
166
|
data = {:age => "41", :lastname => "Stevens" }
|
145
167
|
doc = { :database => 'contacts', :doc_id => 'john', :data => data}
|
146
|
-
Document.update doc
|
168
|
+
hash = Document.update doc
|
169
|
+
assert_equal 'john', hash["id"]
|
170
|
+
assert_equal true, hash["ok"]
|
171
|
+
|
172
|
+
doc = {:database => 'contacts', :doc_id => 'john'}
|
173
|
+
hash = Couchdb.view doc
|
174
|
+
assert_equal 'john', hash["_id"]
|
175
|
+
assert_equal '41', hash["age"]
|
176
|
+
assert_equal 'Stevens', hash["lastname"]
|
177
|
+
Document.delete :database => 'contacts', :doc_id => 'john'
|
178
|
+
end
|
179
|
+
|
180
|
+
should "delete sample documents - ready for next test run" do
|
181
|
+
Document.delete :database => 'contacts', :doc_id => 'Nancy'
|
182
|
+
Document.delete :database => 'contacts', :doc_id => '_design/more_views'
|
183
|
+
Document.delete :database => 'contacts', :doc_id => '_design/the_view'
|
184
|
+
Document.delete :database => 'contacts', :doc_id => '_design/my_views'
|
185
|
+
Document.delete :database => 'contacts', :doc_id => '_design/email_finder'
|
147
186
|
end
|
148
187
|
|
149
188
|
should "edit a document - handle exceptions" do
|
150
189
|
begin
|
190
|
+
#see delete without _rev above
|
151
191
|
data = {:firstname => 'john', :lastname =>'smith', :email => 'john@mail.com',:gender=>'male', :_rev=>'2-e813a0e902e3ac114400ff3959a2adde'}
|
152
192
|
doc = {:database => 'contacts', :doc_id => 'john', :data => data}
|
153
193
|
hash = Document.edit doc
|
154
194
|
#puts hash.inspect
|
155
195
|
rescue CouchdbException => e
|
156
|
-
|
157
|
-
|
196
|
+
assert_equal "CouchDB: Error - conflict. Reason - Document update conflict.", e.to_s
|
197
|
+
assert_equal "conflict", e.error
|
158
198
|
end
|
159
199
|
end
|
160
200
|
|
161
|
-
should "create and delete a document
|
162
|
-
|
163
|
-
|
164
|
-
data = {:firstname => 'James',
|
201
|
+
should "create and delete a document" do
|
202
|
+
data = {:firstname => 'Sun',
|
165
203
|
:lastname =>'Nova',
|
166
204
|
:phone => '212-234-1234',
|
167
205
|
:email =>'james@mail.com'}
|
168
206
|
|
169
|
-
doc = {:database => 'contacts', :doc_id => '
|
170
|
-
|
207
|
+
doc = {:database => 'contacts', :doc_id => 'Sun', :data => data}
|
208
|
+
Document.create doc
|
171
209
|
|
172
|
-
doc = {:database => 'contacts', :doc_id => '
|
210
|
+
doc = {:database => 'contacts', :doc_id => 'Sun'}
|
173
211
|
hash = Document.delete doc
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
212
|
+
|
213
|
+
assert_equal 'Sun', hash["id"]
|
214
|
+
assert_equal true, hash["ok"]
|
215
|
+
begin
|
216
|
+
doc = {:database => 'contacts', :doc_id => 'Sun'}
|
217
|
+
Couchdb.view doc
|
218
|
+
rescue CouchdbException => e
|
219
|
+
assert_equal "CouchDB: Error - not_found. Reason - deleted", e.to_s
|
220
|
+
assert_equal "not_found", e.error
|
221
|
+
end
|
179
222
|
end
|
180
223
|
|
181
224
|
should "delete a document with revision number - any handle exceptions" do
|
@@ -184,17 +227,17 @@ class TestLeanback < Test::Unit::TestCase
|
|
184
227
|
hash = Document.delete_rev doc
|
185
228
|
#puts hash.inspect
|
186
229
|
rescue CouchdbException => e
|
187
|
-
|
188
|
-
|
230
|
+
assert_equal "CouchDB: Error - conflict. Reason - Document update conflict.", e.to_s
|
231
|
+
assert_equal "conflict", e.error
|
189
232
|
end
|
190
233
|
end
|
191
234
|
|
192
|
-
should "display all documents in the database that doesn't exist and handle exception" do
|
235
|
+
should "attempt to display all documents in the database that doesn't exist and handle exception" do
|
193
236
|
begin
|
194
237
|
docs = Couchdb.docs_from 'buildings'
|
195
238
|
rescue CouchdbException => e
|
196
|
-
|
197
|
-
|
239
|
+
assert_equal "CouchDB: Error - not_found. Reason - no_db_file", e.to_s
|
240
|
+
assert_equal "not_found", e.error
|
198
241
|
end
|
199
242
|
end
|
200
243
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 8
|
9
|
+
version: 0.2.8
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Obi Akubue
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-09-14 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -136,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
136
|
requirements:
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
hash: -
|
139
|
+
hash: -211762291
|
140
140
|
segments:
|
141
141
|
- 0
|
142
142
|
version: "0"
|