zeng 0.0.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.
- data/CHANGE +3 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +89 -0
- data/Rakefile +37 -0
- data/TODOLIST +5 -0
- data/init.rb +4 -0
- data/lib/cute_kv/adapters/light_cloud.rb +22 -0
- data/lib/cute_kv/adapters/tokyo_cabinet.rb +33 -0
- data/lib/cute_kv/adapters/tokyo_tyrant.rb +22 -0
- data/lib/cute_kv/associations.rb +285 -0
- data/lib/cute_kv/connector.rb +27 -0
- data/lib/cute_kv/document.rb +328 -0
- data/lib/cute_kv/ext/string.rb +34 -0
- data/lib/cute_kv/ext/symbol.rb +9 -0
- data/lib/cute_kv/indexer.rb +102 -0
- data/lib/cute_kv/serialization.rb +95 -0
- data/lib/cute_kv/serializers/json_serializer.rb +75 -0
- data/lib/cute_kv/serializers/xml_serializer.rb +325 -0
- data/lib/cute_kv/timestamp.rb +56 -0
- data/lib/cute_kv/validations.rb +68 -0
- data/lib/cutekv.rb +17 -0
- data/spec/asso.yml +23 -0
- data/spec/asso_sin_plural.yml +36 -0
- data/spec/case/associations_test.rb +313 -0
- data/spec/case/document_docking_test.rb +103 -0
- data/spec/case/document_test.rb +184 -0
- data/spec/case/indexer_test.rb +40 -0
- data/spec/case/serialization_test.rb +78 -0
- data/spec/case/sin_plu_dic_test.rb +29 -0
- data/spec/case/symmetry_test.rb +80 -0
- data/spec/case/timestamp_test.rb +65 -0
- data/spec/case/validations_test.rb +74 -0
- data/spec/helper.rb +29 -0
- data/spec/light_cloud.yml +9 -0
- data/spec/model/Account.rb +5 -0
- data/spec/model/Book.rb +6 -0
- data/spec/model/Friend.rb +4 -0
- data/spec/model/Icon.rb +5 -0
- data/spec/model/Project.rb +5 -0
- data/spec/model/Topic.rb +26 -0
- data/spec/model/User.rb +6 -0
- data/tags +322 -0
- metadata +124 -0
@@ -0,0 +1,313 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','helper')
|
2
|
+
AA = CuteKV
|
3
|
+
|
4
|
+
ModelDivider.divide "User", "Icon", "Project", "Book"
|
5
|
+
Project.select_serializer(:marshal)
|
6
|
+
|
7
|
+
class RubymapTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
clear_database
|
11
|
+
@aaron = User.create(:name=>'aaron', :email=>'aaron@nonobo.com')
|
12
|
+
@rita = User.create(:name=>'rita')
|
13
|
+
@jack = User.create(:name=>'jack', :email=>'jack@nonobo.com')
|
14
|
+
@icon = Icon.create(:name=>"aaron.jpg", :path=>'/tmp/aaron.jpg')
|
15
|
+
@icon2 = Icon.create(:name=>"jack.jpg", :path=>'/tmp/jack.jpg')
|
16
|
+
@book = Book.create(:name=>"Deep hole")
|
17
|
+
@book2 = Book.create(:name=>"css")
|
18
|
+
@book3 = Book.create(:name=>"ruby on rails")
|
19
|
+
@project_nonobo = Project.create(:name=>"无书网")
|
20
|
+
@project_forum = Project.create(:name=>"多论坛")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_relations_by_self_friends_friends
|
24
|
+
CuteKV::Associations::map(User=>:friends)
|
25
|
+
assert_equal @jack.friends.size, 0
|
26
|
+
assert_equal @aaron.friends.size, 0
|
27
|
+
@jack.friends << @aaron
|
28
|
+
jack = User.find(@jack.id)
|
29
|
+
assert_equal jack.friends[0].id, @aaron.id
|
30
|
+
aaron = User.find(@aaron.id)
|
31
|
+
assert_equal aaron.friends[0].id, jack.id
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_relations_by_self_copy_icon
|
35
|
+
CuteKV::Associations::map(Icon=>:copy)
|
36
|
+
assert @icon.copy.nil?
|
37
|
+
@icon.copy = @icon2
|
38
|
+
icon = Icon.find(@icon.id)
|
39
|
+
icon2 = Icon.find(@icon2.id)
|
40
|
+
assert_equal icon.copy.id, @icon2.id
|
41
|
+
assert_equal icon2.copy.id, @icon.id
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_relations_husband_and_wife
|
45
|
+
CuteKV::Associations::map(User=>[:wife, :husband])
|
46
|
+
assert @aaron.wife.nil?
|
47
|
+
assert @rita.husband.nil?
|
48
|
+
@aaron.wife = @rita
|
49
|
+
aaron = User.find(@aaron.id)
|
50
|
+
rita = User.find(@rita.id)
|
51
|
+
assert_equal aaron.wife.id, rita.id
|
52
|
+
assert_equal rita.husband.id, aaron.id
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_relaions_map_one_to_many
|
56
|
+
AA::Associations.map(Book=>:owner, User=>:books)
|
57
|
+
assert_equal @jack.books.size, 0
|
58
|
+
assert_equal @aaron.books.size, 0
|
59
|
+
@jack.books << @book
|
60
|
+
@jack.books << @book2
|
61
|
+
@jack.books << @book3
|
62
|
+
jack = User.find(@jack.id)
|
63
|
+
assert_equal @book.owner.id, @jack.id
|
64
|
+
assert_equal @book2.owner.id, @jack.id
|
65
|
+
assert_equal @book3.owner.id, @jack.id
|
66
|
+
book_ids = @jack.books.map(&:id)
|
67
|
+
assert book_ids.include?(@book.id)
|
68
|
+
assert book_ids.include?(@book2.id)
|
69
|
+
assert book_ids.include?(@book3.id)
|
70
|
+
@book.owner = @aaron
|
71
|
+
assert_equal @book.owner.id, @aaron.id
|
72
|
+
assert_equal @aaron.books.size, 1
|
73
|
+
aaron = User.find(@aaron.id)
|
74
|
+
assert aaron.books.map(&:id).include?(@book.id)
|
75
|
+
assert_equal @jack.books.size, 2
|
76
|
+
assert !@jack.books.map(&:id).include?(@book.id)
|
77
|
+
@book2.owner = @aaron
|
78
|
+
assert_equal @aaron.books.size, 2
|
79
|
+
assert @aaron.books.map(&:id).include?(@book2.id)
|
80
|
+
assert_equal @jack.books.size, 1
|
81
|
+
assert !@jack.books.map(&:id).include?(@book2.id)
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
def test_relations_map_one_to_one
|
87
|
+
AA::Associations.map(User=>:icon, Icon=>:user)
|
88
|
+
user_icon_test
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_relations_map_one_to_one_set_singular
|
92
|
+
AA::Associations.map(User=>:icons, Icon=>:users, :singular=>[:icons, :users])
|
93
|
+
users_icons_test
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_relations_map_one_to_many_set_singular_plural
|
97
|
+
AA::Associations.map(Book=>:owner, User=>:books, :singular=>:owner, :plural=>:books)
|
98
|
+
owner_books_test
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_relations_map_many_to_many_set_plural
|
102
|
+
AA::Associations.map(User=>:project, Project=>:member, :plural=>[:project, :member])
|
103
|
+
member_project_test
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_relations_map_one_to_many
|
107
|
+
AA::Associations.map(Book=>:owner, User=>:books)
|
108
|
+
owner_books_test
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_relations_map_many_to_many
|
112
|
+
AA::Associations.map(User=>:projects, Project=>:members)
|
113
|
+
members_projects_test
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_relations_map_many_to_many_set_plural
|
117
|
+
AA::Associations.map(User=>:projects, Project=>:members, :plural=>[:projects, :members])
|
118
|
+
members_projects_test
|
119
|
+
end
|
120
|
+
|
121
|
+
def owner_books_test
|
122
|
+
assert_equal @aaron.books.size, 0
|
123
|
+
assert_equal @book.owner, nil
|
124
|
+
@aaron.books << @book
|
125
|
+
aaron = User.find(@aaron.id)
|
126
|
+
assert_equal @aaron.books.size, 1
|
127
|
+
assert_equal aaron.books.size, 1
|
128
|
+
assert_equal aaron.books[0].id, @book.id
|
129
|
+
assert_equal @book.owner.id, aaron.id
|
130
|
+
book = Book.find(@book.id)
|
131
|
+
assert_equal book.owner.id, aaron.id
|
132
|
+
aaron.books.remove(book)
|
133
|
+
assert_equal aaron.books.size, 0
|
134
|
+
assert_equal book.owner, nil
|
135
|
+
end
|
136
|
+
|
137
|
+
def user_icon_test
|
138
|
+
assert @aaron.respond_to?(:icon=)
|
139
|
+
@aaron.icon = @icon
|
140
|
+
aaron = User.find(@aaron.id)
|
141
|
+
assert_equal aaron.icon.id, @icon.id
|
142
|
+
assert_equal aaron.icon.path, @icon.path
|
143
|
+
assert_equal aaron.icon.name, @icon.name
|
144
|
+
assert_equal @icon.user.id, aaron.id
|
145
|
+
@aaron.icon.remove(@icon)
|
146
|
+
assert @aaron.icon.nil?
|
147
|
+
assert @icon.user.nil?
|
148
|
+
@aaron.icon = @icon
|
149
|
+
aaron = User.find(@aaron.id)
|
150
|
+
assert_equal aaron.icon.id, @icon.id
|
151
|
+
assert_equal @icon.user.id, aaron.id
|
152
|
+
@aaron.icon = @icon2
|
153
|
+
assert @icon.user.nil?
|
154
|
+
assert_equal @icon2.user.id, aaron.id
|
155
|
+
@icon2.user = @jack
|
156
|
+
assert @aaron.icon.nil?
|
157
|
+
end
|
158
|
+
|
159
|
+
def users_icons_test
|
160
|
+
assert @aaron.respond_to?(:icons=)
|
161
|
+
@aaron.icons = @icon
|
162
|
+
aaron = User.find(@aaron.id)
|
163
|
+
assert_equal aaron.icons.id, @icon.id
|
164
|
+
assert_equal @icon.users.id, aaron.id
|
165
|
+
assert_equal @icon.users.name, aaron.name
|
166
|
+
end
|
167
|
+
|
168
|
+
def member_project_test
|
169
|
+
assert_equal @aaron.project.size, 0
|
170
|
+
assert_equal @project_nonobo.member.size, 0
|
171
|
+
@aaron.project << @project_nonobo
|
172
|
+
assert_equal @aaron.project.size, 1
|
173
|
+
assert_equal @project_nonobo.member.size, 1
|
174
|
+
aaron = User.find(@aaron.id)
|
175
|
+
project = aaron.project.last
|
176
|
+
member = @project_nonobo.member.last
|
177
|
+
assert_equal member.id, aaron.id
|
178
|
+
assert_equal project.id, @project_nonobo.id
|
179
|
+
end
|
180
|
+
|
181
|
+
def members_projects_test
|
182
|
+
assert_equal @aaron.projects.size, 0
|
183
|
+
assert_equal @project_nonobo.members.size, 0
|
184
|
+
@aaron.projects << @project_nonobo
|
185
|
+
assert_equal @aaron.projects.size, 1
|
186
|
+
assert_equal @project_nonobo.members.size, 1
|
187
|
+
aaron = User.find(@aaron.id)
|
188
|
+
project = aaron.projects.last
|
189
|
+
member = @project_nonobo.members.last
|
190
|
+
assert_equal member.id, aaron.id
|
191
|
+
assert_equal project.id, @project_nonobo.id
|
192
|
+
aaron.projects.remove(@project_nonobo)
|
193
|
+
assert_equal @project_nonobo.members.size, 0
|
194
|
+
assert_equal @aaron.projects.size, 0
|
195
|
+
@aaron.projects << @project_nonobo
|
196
|
+
@aaron.projects << @project_forum
|
197
|
+
aaron = User.find(@aaron.id)
|
198
|
+
assert_equal aaron.projects.size, 2
|
199
|
+
nonobo = Project.find(@project_nonobo.id)
|
200
|
+
forum = Project.find(@project_forum.id)
|
201
|
+
assert_equal nonobo.members.size, 1
|
202
|
+
assert_equal forum.members.size, 1
|
203
|
+
assert_equal nonobo.members[0].id, aaron.id
|
204
|
+
assert_equal forum.members[0].id, aaron.id
|
205
|
+
aaron.projects.remove(nonobo)
|
206
|
+
aaron = User.find(@aaron.id)
|
207
|
+
assert_equal aaron.projects.size, 1
|
208
|
+
assert_equal nonobo.members.size, 0
|
209
|
+
forum.members.remove(aaron)
|
210
|
+
assert_equal aaron.projects.size, 0
|
211
|
+
assert_equal forum.members.size, 0
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_robust_of_many_to_many
|
215
|
+
AA::Associations.map(User=>:projects, Project=>:members)
|
216
|
+
robust_many_to_many_test
|
217
|
+
end
|
218
|
+
|
219
|
+
def robust_many_to_many_test
|
220
|
+
@aaron.projects << "aadd"
|
221
|
+
@aaron.projects << @jack
|
222
|
+
@aaron.projects.remove("bbbbbb")
|
223
|
+
@aaron.projects.remove(@jack)
|
224
|
+
assert @aaron.projects.empty?
|
225
|
+
@aaron.projects << @project_nonobo
|
226
|
+
assert_equal @aaron.projects.size, 1
|
227
|
+
assert @project_nonobo.destroy
|
228
|
+
assert_equal @aaron.projects.size, 0
|
229
|
+
end
|
230
|
+
|
231
|
+
def test_Associations_map_from_yml
|
232
|
+
yml_path = "#{File.dirname(__FILE__)}/../asso.yml"
|
233
|
+
assert AA::Associations.map(yml_path)
|
234
|
+
robust_many_to_many_test
|
235
|
+
setup
|
236
|
+
members_projects_test
|
237
|
+
setup
|
238
|
+
user_icon_test
|
239
|
+
setup
|
240
|
+
owner_books_test
|
241
|
+
setup
|
242
|
+
project_master_test
|
243
|
+
end
|
244
|
+
|
245
|
+
def project_master_test
|
246
|
+
assert @jack.projects.size==0
|
247
|
+
@jack.projects << @project_nonobo
|
248
|
+
assert_equal @jack.projects.size, 1
|
249
|
+
assert @project_nonobo.master.nil?
|
250
|
+
@project_nonobo.master = @aaron
|
251
|
+
assert_equal @aaron.project.id, @project_nonobo.id
|
252
|
+
assert_equal @aaron.projects.size, 0
|
253
|
+
assert_equal @project_nonobo.master.id, @aaron.id
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_Associations_map_from_yml_sin_plural
|
257
|
+
yml_path = "#{File.dirname(__FILE__)}/../asso_sin_plural.yml"
|
258
|
+
assert AA::Associations.map(yml_path)
|
259
|
+
robust_many_to_many_test
|
260
|
+
setup
|
261
|
+
members_projects_test
|
262
|
+
setup
|
263
|
+
users_icons_test
|
264
|
+
setup
|
265
|
+
owner_book_test
|
266
|
+
setup
|
267
|
+
husband_wife_test
|
268
|
+
end
|
269
|
+
|
270
|
+
def husband_wife_test
|
271
|
+
assert @aaron.wife.nil?
|
272
|
+
assert @rita.husband.nil?
|
273
|
+
@aaron.wife = @rita
|
274
|
+
aaron = User.find(@aaron.id)
|
275
|
+
assert_equal aaron.wife.id, @rita.id
|
276
|
+
rita = User.find(@rita.id)
|
277
|
+
assert_equal @aaron.wife.id, rita.id
|
278
|
+
@lucy = User.create(:name=>"lucy")
|
279
|
+
assert @lucy.husband.nil?
|
280
|
+
@aaron.wife = @lucy
|
281
|
+
assert_equal @aaron.wife.name, "lucy"
|
282
|
+
assert_equal @aaron.wife.id, @lucy.id
|
283
|
+
assert @rita.husband.nil?
|
284
|
+
assert @lucy.husband.id==@aaron.id
|
285
|
+
end
|
286
|
+
|
287
|
+
|
288
|
+
def clear_database
|
289
|
+
User.clear
|
290
|
+
Icon.clear
|
291
|
+
Project.clear
|
292
|
+
Book.clear
|
293
|
+
end
|
294
|
+
|
295
|
+
def owner_book_test
|
296
|
+
#User.select_serializer(:marshal)
|
297
|
+
#Book.select_serializer(:json)
|
298
|
+
assert_equal @aaron.book.size, 0
|
299
|
+
assert_equal @book.owner, nil
|
300
|
+
@aaron.book << @book
|
301
|
+
aaron = User.find(@aaron.id)
|
302
|
+
assert_equal @aaron.book.size, 1
|
303
|
+
assert_equal aaron.book.size, 1
|
304
|
+
assert_equal aaron.book[0].id, @book.id
|
305
|
+
assert_equal @book.owner.id, aaron.id
|
306
|
+
book = Book.find(@book.id)
|
307
|
+
assert_equal book.owner.id, aaron.id
|
308
|
+
aaron.book.remove(book)
|
309
|
+
assert_equal aaron.book.size, 0
|
310
|
+
assert_equal book.owner, nil
|
311
|
+
end
|
312
|
+
|
313
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','helper')
|
2
|
+
|
3
|
+
module Validation
|
4
|
+
def self.included(base)
|
5
|
+
base.extend ClassMethods
|
6
|
+
base.send :include, InstanceMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module InstanceMethods
|
10
|
+
def valid
|
11
|
+
"instance valid"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def valid
|
17
|
+
"class valid"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module Observer
|
23
|
+
def self.included(base)
|
24
|
+
base.extend ClassMethods
|
25
|
+
base.send :include, InstanceMethods
|
26
|
+
end
|
27
|
+
module InstanceMethods
|
28
|
+
def observe
|
29
|
+
"instance observe"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module ClassMethods
|
34
|
+
def observe
|
35
|
+
"class observe"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
ModelDivider.divide "User", "Icon", "Project", "Book"
|
42
|
+
|
43
|
+
|
44
|
+
class DockingTest < Test::Unit::TestCase
|
45
|
+
|
46
|
+
def setup
|
47
|
+
@jim = User.create(:name=>"jim")
|
48
|
+
@icon = Icon.create(:name=>"flower")
|
49
|
+
@project = Project.create(:name=>"nonobo")
|
50
|
+
@book = Book.create(:name=>"ruby")
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_docking_module
|
54
|
+
assert CuteKV::Document.respond_to?(:docking)
|
55
|
+
respond_test(false)
|
56
|
+
CuteKV::Document::docking(Validation)
|
57
|
+
CuteKV::Document::docking(Observer)
|
58
|
+
clients = CuteKV::Document::clients
|
59
|
+
CuteKV::Document::docking(Validation)
|
60
|
+
CuteKV::Document::docking(Observer)
|
61
|
+
assert_equal CuteKV::Document::clients, clients
|
62
|
+
respond_test(true)
|
63
|
+
|
64
|
+
assert_equal @jim.valid, "instance valid"
|
65
|
+
assert_equal @icon.valid, "instance valid"
|
66
|
+
assert_equal @project.valid, "instance valid"
|
67
|
+
assert_equal @book.valid, "instance valid"
|
68
|
+
assert_equal User.valid, "class valid"
|
69
|
+
assert_equal Icon.valid, "class valid"
|
70
|
+
assert_equal Project.valid, "class valid"
|
71
|
+
assert_equal Book.valid, "class valid"
|
72
|
+
assert_equal @jim.observe, "instance observe"
|
73
|
+
assert_equal @icon.observe, "instance observe"
|
74
|
+
assert_equal @project.observe, "instance observe"
|
75
|
+
assert_equal @book.observe, "instance observe"
|
76
|
+
assert_equal User.observe, "class observe"
|
77
|
+
assert_equal Icon.observe, "class observe"
|
78
|
+
assert_equal Project.observe, "class observe"
|
79
|
+
assert_equal Book.observe, "class observe"
|
80
|
+
end
|
81
|
+
|
82
|
+
def respond_test(opt=false)
|
83
|
+
assert_equal User.respond_to?(:observe),opt
|
84
|
+
assert_equal User.respond_to?(:valid), opt
|
85
|
+
assert_equal Icon.respond_to?(:observe), opt
|
86
|
+
assert_equal Icon.respond_to?(:valid), opt
|
87
|
+
assert_equal Project.respond_to?(:observe), opt
|
88
|
+
assert_equal Project.respond_to?(:valid), opt
|
89
|
+
assert_equal Book.respond_to?(:observe), opt
|
90
|
+
assert_equal Book.respond_to?(:valid), opt
|
91
|
+
assert_equal @jim.respond_to?(:observe), opt
|
92
|
+
assert_equal @jim.respond_to?(:valid), opt
|
93
|
+
assert_equal @icon.respond_to?(:observe), opt
|
94
|
+
assert_equal @icon.respond_to?(:valid), opt
|
95
|
+
assert_equal @project.respond_to?(:observe), opt
|
96
|
+
assert_equal @project.respond_to?(:valid), opt
|
97
|
+
assert_equal @book.respond_to?(:observe), opt
|
98
|
+
assert_equal @book.respond_to?(:valid), opt
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','helper')
|
2
|
+
ModelDivider.divide "User", "Account"
|
3
|
+
|
4
|
+
class DocumentTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
User.backend_configure(:TT, '127.0.0.1:1985')
|
8
|
+
Account.backend_configure(:TT, :host=>'127.0.0.1', "port"=>1984)
|
9
|
+
User.assign(:name, :age=>25, :gender=>"male")
|
10
|
+
Account.assign(:email, :password, :country=>"China")
|
11
|
+
User.clear
|
12
|
+
Account.clear
|
13
|
+
@jim = User.new(:name=>"jim")
|
14
|
+
@a_jim = Account.new(:email=>"jim@nonobo.com")
|
15
|
+
@attrs_group = [{:name=>"jim"}, {:name=>"jack"}, {:name=>"nancy"}, {:name=>"kame"}]
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_assign_attributes_to_persistence
|
19
|
+
assert User.assign(:name, :age=>25, :gender=>[])
|
20
|
+
assert Account.assign(:email, :password, :country=>{})
|
21
|
+
@jim = User.new(:name=>"jim")
|
22
|
+
assert_equal @jim.name, "jim"
|
23
|
+
assert_equal @jim.age, 25
|
24
|
+
assert_equal @jim.gender, []
|
25
|
+
@jack = User.new(:name=>"jack"){|u| u.gender="female"; u.age=36}
|
26
|
+
assert_equal @jack.name, "jack"
|
27
|
+
assert_equal @jack.age, 36
|
28
|
+
assert_equal @jack.gender, "female"
|
29
|
+
@account_jim = Account.new(:email=>"jim@nonobo.com")
|
30
|
+
assert_equal @account_jim.email, "jim@nonobo.com"
|
31
|
+
assert_equal @account_jim.country, {}
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_set_backend
|
35
|
+
assert User.backend_configure(:TT, '127.0.0.1:1985')
|
36
|
+
assert Account.backend_configure(:TT, :host=>'127.0.0.1', "port"=>1984)
|
37
|
+
assert User.clear
|
38
|
+
assert Account.clear
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_persistence_assigned_attributes_and_id
|
42
|
+
assert @jim.save
|
43
|
+
assert @a_jim.save
|
44
|
+
jim = User.find(@jim.id)
|
45
|
+
a_jim = Account.find(@a_jim.id)
|
46
|
+
assert_equal jim.id, @jim.id
|
47
|
+
assert_equal jim.name, @jim.name
|
48
|
+
assert_equal jim.gender, @jim.gender
|
49
|
+
jim.age = 30
|
50
|
+
jim.save
|
51
|
+
j = User.find(@jim.id)
|
52
|
+
assert_equal j.id, @jim.id
|
53
|
+
assert_equal j.age, 30
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_create_single_object
|
57
|
+
jack = User.create(:name=>"jack")
|
58
|
+
assert_equal jack.name, "jack"
|
59
|
+
assert_equal jack.gender, "male"
|
60
|
+
assert_equal jack.age, 25
|
61
|
+
jim = User.create(:name=>'jim') {|u| u.age=55; u.gender="female" }
|
62
|
+
assert_equal jim.age, 55
|
63
|
+
assert_equal jim.gender, 'female'
|
64
|
+
jm = User.find(jim.id)
|
65
|
+
assert_equal jm.id, jim.id
|
66
|
+
assert_equal jm.age, 55
|
67
|
+
assert_equal jm.gender, 'female'
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
def test_destroy_object
|
72
|
+
jim = User.create(:name=>"jim")
|
73
|
+
a_jim = Account.create(:email=>"jim@nonobo.com")
|
74
|
+
assert_equal jim.name, "jim"
|
75
|
+
assert_equal a_jim.email, "jim@nonobo.com"
|
76
|
+
assert User.destroy(jim)
|
77
|
+
assert_equal User.destroy(a_jim), nil
|
78
|
+
jm = User.find(jim.id)
|
79
|
+
assert jm.nil?
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_update_object
|
83
|
+
jim = User.create(:name=>'jim')
|
84
|
+
assert_equal jim.age, 25
|
85
|
+
assert_equal jim.gender, 'male'
|
86
|
+
jim.update(:age=>52, :gender=>'female')
|
87
|
+
assert_equal jim.age, 52
|
88
|
+
assert_equal jim.gender, 'female'
|
89
|
+
jm = User.find(jim.id)
|
90
|
+
assert_equal jm.age, 25
|
91
|
+
assert_equal jm.gender, 'male'
|
92
|
+
jim.save
|
93
|
+
jm = User.find(jim.id)
|
94
|
+
assert_equal jm.age, 52
|
95
|
+
assert_equal jm.gender, 'female'
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_reload_object
|
99
|
+
jim = User.new(:name=>'jim')
|
100
|
+
jim_id = jim.id
|
101
|
+
assert jim.name == 'jim'
|
102
|
+
assert jim.age == 25
|
103
|
+
assert jim.reload.nil?
|
104
|
+
jim.save
|
105
|
+
jm = User.find(jim.id)
|
106
|
+
jm.age = 59
|
107
|
+
jm.save
|
108
|
+
assert_equal jim.age, 25
|
109
|
+
assert_equal jm.age, 59
|
110
|
+
assert jim.reload
|
111
|
+
assert_equal jim.age, 59
|
112
|
+
assert_equal jim.id, jim_id
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_class_method_save
|
116
|
+
jim = User.new(:name=>"jim")
|
117
|
+
a_jim = Account.new(:email=>"jim@nonobo.com")
|
118
|
+
assert_equal jim.age, 25
|
119
|
+
assert jim.id
|
120
|
+
assert User.find(jim.id).nil?
|
121
|
+
assert User.save(jim)
|
122
|
+
assert User.find(jim.id)
|
123
|
+
assert User.save("jim").nil?
|
124
|
+
assert User.save(a_jim).nil?
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_class_method_update
|
128
|
+
jim = User.new(:name=>"jim")
|
129
|
+
a_jim = Account.new(:email=>"jim@nonobo.com")
|
130
|
+
assert User.update(jim, :age=>36, :gender=>'female')
|
131
|
+
assert_equal jim.age, 36
|
132
|
+
assert_equal jim.gender, 'female'
|
133
|
+
assert User.update(jim, :age=>45)
|
134
|
+
assert_equal jim.age, 45
|
135
|
+
assert User.update(jim)
|
136
|
+
assert_equal jim.age, 45
|
137
|
+
assert_equal jim.gender, 'female'
|
138
|
+
assert User.update(a_jim).nil?
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_class_reload
|
142
|
+
jim = User.new(:name=>"jim")
|
143
|
+
a_jim = Account.new(:email=>"jim@nonobo.com")
|
144
|
+
assert_equal jim.age, 25
|
145
|
+
assert_equal jim.gender, 'male'
|
146
|
+
jim.update(:age=>58, :gender=>'female')
|
147
|
+
jim.save
|
148
|
+
jim_id = jim.id
|
149
|
+
assert User.reload(jim)
|
150
|
+
assert_equal jim.id, jim_id
|
151
|
+
assert jim.age, 58
|
152
|
+
assert jim.gender, 'female'
|
153
|
+
assert User.reload(a_jim).nil?
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_select_serializers
|
157
|
+
assert User.select_serializer(:json)
|
158
|
+
assert Account.select_serializer(:marshal)
|
159
|
+
assert User.serializer_type=="json"
|
160
|
+
assert Account.serializer_type=="marshal"
|
161
|
+
a_jim = Account.create(:email=>"jim@nonobo.com")
|
162
|
+
a_j = Account.find(a_jim.id)
|
163
|
+
assert_equal a_jim.email, "jim@nonobo.com"
|
164
|
+
assert_equal a_j.email, "jim@nonobo.com"
|
165
|
+
assert Account.select_serializer(:marshal)
|
166
|
+
assert Account.serializer_type=="marshal"
|
167
|
+
a_jack = Account.create(:email=>"jack@nonobo.com")
|
168
|
+
a_jk = Account.find(a_jack.id)
|
169
|
+
assert_equal a_jk.email, "jack@nonobo.com"
|
170
|
+
assert_equal a_jk.id, a_jack.id
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_backend_configurations
|
174
|
+
assert User.backend_configure(:TT, '127.0.0.1:1984')
|
175
|
+
assert Account.backend_configure(:TT, '127.0.0.1:1985')
|
176
|
+
assert_equal User.backend_configurations, {:adapter=>:TT, :host=>'127.0.0.1', :port=>1984}
|
177
|
+
assert_equal Account.backend_configurations, {:adapter=>:TT, :host=>'127.0.0.1', :port=>1985}
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_fresh_object
|
181
|
+
lili = User.new(:name=>'lili')
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','helper')
|
2
|
+
ModelDivider.divide "User", "Icon", "Project"
|
3
|
+
|
4
|
+
class IndexerTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
User.clear
|
8
|
+
Project.clear
|
9
|
+
@aaron = User.create(:name=>'aaron', :email=>'aaron@nonobo.com')
|
10
|
+
@jim = User.create(:name=>'jim', :email=>'jim@nonobo.com')
|
11
|
+
@jim_d = User.create(:name=>'jim', :email=>'aaron@nonobo.com')
|
12
|
+
@jack = User.create(:name=>'jack', :email=>'jack@nonobo.com')
|
13
|
+
@kame = User.create(:name=>'kame', :email=>'kame@nonobo.com')
|
14
|
+
@nonobo = Project.create(:name=>"nonobo")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_indexer_base
|
18
|
+
assert CuteKV::Indexer::map(User=>['name', 'email'])
|
19
|
+
assert CuteKV::Indexer::map(Project=>'created_at')
|
20
|
+
assert User.indexes == []
|
21
|
+
User.indexes << @aaron
|
22
|
+
User.indexes << @jim
|
23
|
+
User.indexes << @jim_d
|
24
|
+
User.indexes << @jack
|
25
|
+
User.indexes << @jim
|
26
|
+
User.indexes << @aaron
|
27
|
+
assert User.indexes.size==4
|
28
|
+
assert User.indexes.include?([@aaron.id,{"id"=>@aaron.id, "name"=>@aaron.name, "email"=>@aaron.email}])
|
29
|
+
assert User.indexes.include?([@jim.id,{"id"=>@jim.id, "name"=>@jim.name, "email"=>@jim.email}])
|
30
|
+
assert User.indexes.include?([@jim_d.id,{"id"=>@jim_d.id, "name"=>@jim_d.name, "email"=>@jim_d.email}])
|
31
|
+
assert User.indexes.include?([@jack.id,{"id"=>@jack.id, "name"=>@jack.name, "email"=>@jack.email}])
|
32
|
+
assert User.respond_to?(:find_all_by_email)
|
33
|
+
assert User.find_all_by_name("aaron")[0].name=="aaron"
|
34
|
+
assert User.find_all_by_name("jim").size==2
|
35
|
+
assert_equal User.find_all_by_email("aaron@nonobo.com").size,2
|
36
|
+
assert_equal User.find_all_by_email("aaron@nonobo.com")[0].email, "aaron@nonobo.com"
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|