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.
Files changed (43) hide show
  1. data/CHANGE +3 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +89 -0
  4. data/Rakefile +37 -0
  5. data/TODOLIST +5 -0
  6. data/init.rb +4 -0
  7. data/lib/cute_kv/adapters/light_cloud.rb +22 -0
  8. data/lib/cute_kv/adapters/tokyo_cabinet.rb +33 -0
  9. data/lib/cute_kv/adapters/tokyo_tyrant.rb +22 -0
  10. data/lib/cute_kv/associations.rb +285 -0
  11. data/lib/cute_kv/connector.rb +27 -0
  12. data/lib/cute_kv/document.rb +328 -0
  13. data/lib/cute_kv/ext/string.rb +34 -0
  14. data/lib/cute_kv/ext/symbol.rb +9 -0
  15. data/lib/cute_kv/indexer.rb +102 -0
  16. data/lib/cute_kv/serialization.rb +95 -0
  17. data/lib/cute_kv/serializers/json_serializer.rb +75 -0
  18. data/lib/cute_kv/serializers/xml_serializer.rb +325 -0
  19. data/lib/cute_kv/timestamp.rb +56 -0
  20. data/lib/cute_kv/validations.rb +68 -0
  21. data/lib/cutekv.rb +17 -0
  22. data/spec/asso.yml +23 -0
  23. data/spec/asso_sin_plural.yml +36 -0
  24. data/spec/case/associations_test.rb +313 -0
  25. data/spec/case/document_docking_test.rb +103 -0
  26. data/spec/case/document_test.rb +184 -0
  27. data/spec/case/indexer_test.rb +40 -0
  28. data/spec/case/serialization_test.rb +78 -0
  29. data/spec/case/sin_plu_dic_test.rb +29 -0
  30. data/spec/case/symmetry_test.rb +80 -0
  31. data/spec/case/timestamp_test.rb +65 -0
  32. data/spec/case/validations_test.rb +74 -0
  33. data/spec/helper.rb +29 -0
  34. data/spec/light_cloud.yml +9 -0
  35. data/spec/model/Account.rb +5 -0
  36. data/spec/model/Book.rb +6 -0
  37. data/spec/model/Friend.rb +4 -0
  38. data/spec/model/Icon.rb +5 -0
  39. data/spec/model/Project.rb +5 -0
  40. data/spec/model/Topic.rb +26 -0
  41. data/spec/model/User.rb +6 -0
  42. data/tags +322 -0
  43. 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