redis_orm 0.7 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -1
  3. data/lib/redis_orm.rb +8 -13
  4. data/lib/redis_orm/associations/has_many.rb +7 -3
  5. data/lib/redis_orm/redis_orm.rb +3 -5
  6. metadata +64 -124
  7. data/Gemfile +0 -10
  8. data/Manifest +0 -74
  9. data/Rakefile +0 -25
  10. data/benchmarks/sortable_benchmark.rb +0 -45
  11. data/redis_orm.gemspec +0 -45
  12. data/spec/generators/model_generator_spec.rb +0 -29
  13. data/spec/spec_helper.rb +0 -17
  14. data/test/association_indices_test.rb +0 -168
  15. data/test/associations_test.rb +0 -294
  16. data/test/atomicity_test.rb +0 -36
  17. data/test/basic_functionality_test.rb +0 -204
  18. data/test/callbacks_test.rb +0 -49
  19. data/test/changes_array_test.rb +0 -25
  20. data/test/classes/album.rb +0 -6
  21. data/test/classes/article.rb +0 -7
  22. data/test/classes/article_with_comments.rb +0 -8
  23. data/test/classes/book.rb +0 -6
  24. data/test/classes/catalog_item.rb +0 -5
  25. data/test/classes/category.rb +0 -7
  26. data/test/classes/city.rb +0 -7
  27. data/test/classes/comment.rb +0 -26
  28. data/test/classes/country.rb +0 -5
  29. data/test/classes/custom_user.rb +0 -8
  30. data/test/classes/cutout.rb +0 -20
  31. data/test/classes/cutout_aggregator.rb +0 -5
  32. data/test/classes/default_user.rb +0 -10
  33. data/test/classes/dynamic_finder_user.rb +0 -8
  34. data/test/classes/empty_person.rb +0 -2
  35. data/test/classes/expire_user.rb +0 -8
  36. data/test/classes/expire_user_with_predicate.rb +0 -13
  37. data/test/classes/giftcard.rb +0 -6
  38. data/test/classes/jigsaw.rb +0 -4
  39. data/test/classes/location.rb +0 -5
  40. data/test/classes/message.rb +0 -4
  41. data/test/classes/note.rb +0 -5
  42. data/test/classes/omni_user.rb +0 -8
  43. data/test/classes/person.rb +0 -6
  44. data/test/classes/photo.rb +0 -21
  45. data/test/classes/profile.rb +0 -9
  46. data/test/classes/sortable_user.rb +0 -11
  47. data/test/classes/timestamp.rb +0 -3
  48. data/test/classes/user.rb +0 -39
  49. data/test/classes/uuid_default_user.rb +0 -12
  50. data/test/classes/uuid_timestamp.rb +0 -5
  51. data/test/classes/uuid_user.rb +0 -13
  52. data/test/dynamic_finders_test.rb +0 -51
  53. data/test/exceptions_test.rb +0 -47
  54. data/test/expire_records_test.rb +0 -64
  55. data/test/has_one_has_many_test.rb +0 -42
  56. data/test/indices_test.rb +0 -63
  57. data/test/modules/belongs_to_model_within_module.rb +0 -6
  58. data/test/modules/has_many_model_within_module.rb +0 -11
  59. data/test/options_test.rb +0 -226
  60. data/test/polymorphic_test.rb +0 -65
  61. data/test/redis.conf +0 -417
  62. data/test/sortable_test.rb +0 -116
  63. data/test/test_helper.rb +0 -37
  64. data/test/uuid_as_id_test.rb +0 -178
  65. data/test/validations_test.rb +0 -20
@@ -1,116 +0,0 @@
1
- require File.dirname(File.expand_path(__FILE__)) + '/test_helper.rb'
2
-
3
- describe "test options" do
4
- before(:each) do
5
- @dan = SortableUser.create :name => "Daniel", :age => 26, :wage => 40000.0, :address => "Bellevue"
6
- @abe = SortableUser.create :name => "Abe", :age => 30, :wage => 100000.0, :address => "Bellevue"
7
- @michael = SortableUser.create :name => "Michael", :age => 25, :wage => 60000.0, :address => "Bellevue"
8
- @todd = SortableUser.create :name => "Todd", :age => 22, :wage => 30000.0, :address => "Bellevue"
9
- end
10
-
11
- it "should return records in specified order" do
12
- $redis.llen("sortable_user:name_ids").to_i.should == SortableUser.count
13
- $redis.zcard("sortable_user:age_ids").to_i.should == SortableUser.count
14
- $redis.zcard("sortable_user:wage_ids").to_i.should == SortableUser.count
15
-
16
- SortableUser.find(:all, :order => [:name, :asc]).should == [@abe, @dan, @michael, @todd]
17
- SortableUser.find(:all, :order => [:name, :desc]).should == [@todd, @michael, @dan, @abe]
18
-
19
- SortableUser.find(:all, :order => [:age, :asc]).should == [@todd, @michael, @dan, @abe]
20
- SortableUser.find(:all, :order => [:age, :desc]).should == [@abe, @dan, @michael, @todd]
21
-
22
- SortableUser.find(:all, :order => [:wage, :asc]).should == [@todd, @dan, @michael, @abe]
23
- SortableUser.find(:all, :order => [:wage, :desc]).should == [@abe, @michael, @dan, @todd]
24
- end
25
-
26
- it "should return records which met specified conditions in specified order" do
27
- @abe2 = SortableUser.create :name => "Abe", :age => 12, :wage => 10.0, :address => "Santa Fe"
28
-
29
- # :asc should be default value for property in :order clause
30
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:wage]).should == [@abe2, @abe]
31
-
32
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:wage, :desc]).should == [@abe, @abe2]
33
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:wage, :asc]).should == [@abe2, @abe]
34
-
35
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:age, :desc]).should == [@abe, @abe2]
36
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:age, :asc]).should == [@abe2, @abe]
37
-
38
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:wage, :desc]).should == [@abe, @abe2]
39
- SortableUser.find(:all, :conditions => {:name => "Abe"}, :order => [:wage, :asc]).should == [@abe2, @abe]
40
- end
41
-
42
- it "should update keys after the persisted object was edited and sort properly" do
43
- @abe.update_attributes :name => "Zed", :age => 12, :wage => 10.0, :address => "Santa Fe"
44
-
45
- $redis.llen("sortable_user:name_ids").to_i.should == SortableUser.count
46
- $redis.zcard("sortable_user:age_ids").to_i.should == SortableUser.count
47
- $redis.zcard("sortable_user:wage_ids").to_i.should == SortableUser.count
48
-
49
- SortableUser.find(:all, :order => [:name, :asc]).should == [@dan, @michael, @todd, @abe]
50
- SortableUser.find(:all, :order => [:name, :desc]).should == [@abe, @todd, @michael, @dan]
51
-
52
- SortableUser.find(:all, :order => [:age, :asc]).should == [@abe, @todd, @michael, @dan]
53
- SortableUser.find(:all, :order => [:age, :desc]).should == [@dan, @michael, @todd, @abe]
54
-
55
- SortableUser.find(:all, :order => [:wage, :asc]).should == [@abe, @todd, @dan, @michael]
56
- SortableUser.find(:all, :order => [:wage, :desc]).should == [@michael, @dan, @todd, @abe]
57
- end
58
-
59
- it "should update keys after the persisted object was deleted and sort properly" do
60
- user_count = SortableUser.count
61
- @abe.destroy
62
-
63
- $redis.llen("sortable_user:name_ids").to_i.should == user_count - 1
64
- $redis.zcard("sortable_user:age_ids").to_i.should == user_count - 1
65
- $redis.zcard("sortable_user:wage_ids").to_i.should == user_count - 1
66
-
67
- SortableUser.find(:all, :order => [:name, :asc]).should == [@dan, @michael, @todd]
68
- SortableUser.find(:all, :order => [:name, :desc]).should == [@todd, @michael, @dan]
69
-
70
- SortableUser.find(:all, :order => [:age, :asc]).should == [@todd, @michael, @dan]
71
- SortableUser.find(:all, :order => [:age, :desc]).should == [@dan, @michael, @todd]
72
-
73
- SortableUser.find(:all, :order => [:wage, :asc]).should == [@todd, @dan, @michael]
74
- SortableUser.find(:all, :order => [:wage, :desc]).should == [@michael, @dan, @todd]
75
- end
76
-
77
- it "should sort objects with more than 3-4 symbols" do
78
- vladislav = SortableUser.create :name => "Vladislav", :age => 19, :wage => 120.0
79
- vladimir = SortableUser.create :name => "Vladimir", :age => 22, :wage => 220.5
80
- vlad = SortableUser.create :name => "Vlad", :age => 29, :wage => 1200.0
81
-
82
- SortableUser.find(:all, :order => [:name, :desc], :limit => 3).should == [vladislav, vladimir, vlad]
83
- SortableUser.find(:all, :order => [:name, :desc], :limit => 2, :offset => 4).should == [@michael, @dan]
84
- SortableUser.find(:all, :order => [:name, :desc], :offset => 3).should == [@todd, @michael, @dan, @abe]
85
- SortableUser.find(:all, :order => [:name, :desc]).should == [vladislav, vladimir, vlad, @todd, @michael, @dan, @abe]
86
-
87
- SortableUser.find(:all, :order => [:name, :asc], :limit => 3, :offset => 4).should == [vlad, vladimir, vladislav]
88
- SortableUser.find(:all, :order => [:name, :asc], :offset => 3).should == [@todd, vlad, vladimir, vladislav]
89
- SortableUser.find(:all, :order => [:name, :asc], :limit => 3).should == [@abe, @dan, @michael]
90
- SortableUser.find(:all, :order => [:name, :asc]).should == [@abe, @dan, @michael, @todd, vlad, vladimir, vladislav]
91
- end
92
-
93
- it "should properly handle multiple users with almost the same names" do
94
- users = [@abe, @todd, @michael, @dan]
95
- 20.times{|i| users << SortableUser.create(:name => "user#{i}") }
96
- users.sort{|n,m| n.name <=> m.name}.should == SortableUser.all(:order => [:name, :asc])
97
- end
98
-
99
- it "should properly handle multiple users with almost the same names (descending order)" do
100
- rev_users = [@abe, @todd, @michael, @dan]
101
- 20.times{|i| rev_users << SortableUser.create(:name => "user#{i}") }
102
- SortableUser.all(:order => [:name, :desc]).should == rev_users.sort{|n,m| n.name <=> m.name}.reverse
103
- end
104
-
105
- it "should properly store records with the same names" do
106
- users = [@abe, @todd, @michael, @dan]
107
- users << SortableUser.create(:name => "user#1")
108
- users << SortableUser.create(:name => "user#2")
109
- users << SortableUser.create(:name => "user#1")
110
- users << SortableUser.create(:name => "user#2")
111
-
112
- # we pluck only *name* here since it didn't sort by id (and it could be messed up)
113
- SortableUser.all(:order => [:name, :desc]).map{|u| u.name}.should == users.sort{|n,m| n.name <=> m.name}.map{|u| u.name}.reverse
114
- SortableUser.all(:order => [:name, :asc]).map{|u| u.name}.should == users.sort{|n,m| n.name <=> m.name}.map{|u| u.name}
115
- end
116
- end
data/test/test_helper.rb DELETED
@@ -1,37 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rspec'
4
- require 'rspec/autorun'
5
- require File.dirname(File.expand_path(__FILE__)) + '/../lib/redis_orm.rb'
6
-
7
- Dir.glob(['test/classes/*.rb', 'test/modules/*.rb']).each do |klassfile|
8
- require File.dirname(File.expand_path(__FILE__)) + '/../' + klassfile
9
- end
10
-
11
-
12
- RSpec.configure do |config|
13
- config.before(:all) do
14
- path_to_conf = File.dirname(File.expand_path(__FILE__)) + "/redis.conf"
15
- $redis_pid = spawn 'redis-server ' + path_to_conf, :out => "/dev/null"
16
- sleep(0.3) # must be some delay otherwise "Connection refused - Unable to connect to Redis"
17
- path_to_socket = File.dirname(File.expand_path(__FILE__)) + "/../redis.sock"
18
- begin
19
- $redis = Redis.new(:host => 'localhost', :path => path_to_socket)
20
- rescue => e
21
- puts 'Unable to create connection to the redis server: ' + e.message.inspect
22
- Process.kill 9, $redis_pid.to_i if $redis_pid
23
- end
24
- end
25
-
26
- config.after(:all) do
27
- Process.kill 9, $redis_pid.to_i if $redis_pid
28
- end
29
-
30
- config.after(:each) do
31
- $redis.flushall if $redis
32
- end
33
-
34
- config.before(:each) do
35
- $redis.flushall if $redis
36
- end
37
- end
@@ -1,178 +0,0 @@
1
- require File.dirname(File.expand_path(__FILE__)) + '/test_helper.rb'
2
-
3
- describe "check basic functionality" do
4
- it "test_simple_creation" do
5
- UuidUser.count.should == 0
6
-
7
- user = UuidUser.new :name => "german"
8
- user.save
9
-
10
- user.should be
11
- user.id.should be
12
-
13
- user.id.should_not == 1
14
- user.id.length.should == 32 # b57525b09a69012e8fbe001d61192f09 for example
15
-
16
- user.name.should == "german"
17
-
18
- UuidUser.count.should == 1
19
- UuidUser.first.name.should == "german"
20
- end
21
-
22
- it "should test different ways to update a record" do
23
- UuidUser.count.should == 0
24
-
25
- user = UuidUser.new :name => "german"
26
- user.should be
27
- user.save
28
-
29
- user.name.should == "german"
30
-
31
- user.name = "nobody"
32
- user.save
33
-
34
- UuidUser.count.should == 1
35
- UuidUser.first.name.should == "nobody"
36
-
37
- u = UuidUser.first
38
- u.should be
39
- u.id.should_not == 1
40
- u.id.length.should == 32
41
- u.update_attribute :name, "root"
42
- UuidUser.first.name.should == "root"
43
-
44
- u = UuidUser.first
45
- u.should be
46
- u.update_attributes :name => "german"
47
- UuidUser.first.name.should == "german"
48
- end
49
-
50
- it "test_deletion" do
51
- UuidUser.count.should == 0
52
-
53
- user = UuidUser.new :name => "german"
54
- user.save
55
- user.should be
56
-
57
- user.name.should == "german"
58
-
59
- UuidUser.count.should == 1
60
- id = user.id
61
-
62
- user.destroy
63
- UuidUser.count.should == 0
64
- $redis.zrank("user:ids", id).should == nil
65
- $redis.hgetall("user:#{id}").should == {}
66
- end
67
-
68
- it "should return first and last objects" do
69
- UuidUser.count.should == 0
70
- UuidUser.first.should == nil
71
- UuidUser.last.should == nil
72
-
73
- user1 = UuidUser.new :name => "german"
74
- user1.save
75
- user1.should be
76
- user1.name.should == "german"
77
- user1.id.should_not == 1
78
- user1.id.length.should == 32 # b57525b09a69012e8fbe001d61192f09 for example
79
-
80
- user2 = UuidUser.new :name => "nobody"
81
- user2.save
82
- user2.should be
83
- user2.name.should == "nobody"
84
- user2.id.should_not == 2
85
- user2.id.length.should == 32
86
-
87
- UuidUser.count.should == 2
88
-
89
- UuidUser.first.should be
90
- UuidUser.last.should be
91
-
92
- UuidUser.first.id.should == user1.id
93
- UuidUser.last.id.should == user2.id
94
- end
95
-
96
- it "should return values with correct classes" do
97
- user = UuidUser.new
98
- user.name = "german"
99
- user.age = 26
100
- user.wage = 124.34
101
- user.male = true
102
- user.save
103
-
104
- user.should be
105
-
106
- u = UuidUser.first
107
-
108
- u.created_at.class.should == DateTime
109
- u.modified_at.class.should == DateTime
110
- u.wage.class.should == Float
111
- u.male.class.to_s.should match(/TrueClass|FalseClass/)
112
- u.age.class.to_s.should match(/Integer|Fixnum/)
113
- u.id.should_not == 1
114
- u.id.length.should == 32
115
-
116
- u.name.should == "german"
117
- u.wage.should == 124.34
118
- u.age.should == 26
119
- u.male.should == true
120
- end
121
-
122
- it "should return correct saved defaults" do
123
- UuidDefaultUser.count.should == 0
124
- UuidDefaultUser.create
125
- UuidDefaultUser.count.should == 1
126
-
127
- u = UuidDefaultUser.first
128
-
129
- u.created_at.class.should == DateTime
130
- u.modified_at.class.should == DateTime
131
- u.wage.class.should == Float
132
- u.male.class.to_s.should match(/TrueClass|FalseClass/)
133
- u.admin.class.to_s.should match(/TrueClass|FalseClass/)
134
- u.age.class.to_s.should match(/Integer|Fixnum/)
135
-
136
- u.name.should == "german"
137
- u.male.should == true
138
- u.age.should == 26
139
- u.wage.should == 256.25
140
- u.admin.should == false
141
- u.id.should_not == 1
142
- u.id.length.should == 32
143
-
144
- du = UuidDefaultUser.new
145
- du.name = "germaninthetown"
146
- du.save
147
-
148
- du_saved = UuidDefaultUser.last
149
- du_saved.name.should == "germaninthetown"
150
- du_saved.admin.should == false
151
- du.id.should_not == 2
152
- du.id.should_not == u.id
153
- du.id.length.should == 32
154
- end
155
-
156
- it "should expand timestamps declaration properly" do
157
- t = UuidTimeStamp.new
158
- t.save
159
-
160
- t.created_at.should be
161
- t.modified_at.should be
162
- t.created_at.day.should == Time.now.day
163
- t.modified_at.day.should == Time.now.day
164
- end
165
-
166
- # from associations_test.rb
167
- it "should maintain correct self referencing link" do
168
- me = UuidUser.create :name => "german", :age => 26, :wage => 10.0, :male => true
169
- friend1 = UuidUser.create :name => "friend1", :age => 26, :wage => 7.0, :male => true
170
- friend2 = UuidUser.create :name => "friend2", :age => 25, :wage => 5.0, :male => true
171
-
172
- me.friends << [friend1, friend2]
173
-
174
- me.friends.count.should == 2
175
- friend1.friends.count.should == 0
176
- friend2.friends.count.should == 0
177
- end
178
- end
@@ -1,20 +0,0 @@
1
- require File.dirname(File.expand_path(__FILE__)) + '/test_helper.rb'
2
-
3
- describe "check associations" do
4
- it "should validate presence if image in photo" do
5
- p = Photo.new
6
- p.save.should == false
7
- p.errors.should be
8
- p.errors[:image].should include("can't be blank")
9
-
10
- p.image = "test"
11
- p.save.should == false
12
- p.errors.should be
13
- p.errors[:image].should include("is too short (minimum is 7 characters)")
14
- p.errors[:image].should include("is invalid")
15
-
16
- p.image = "facepalm.jpg"
17
- p.save
18
- p.errors.empty?.should == true
19
- end
20
- end