zeng 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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