leanback 0.2.7 → 0.2.8
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.
- 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"
|