redisted 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Callbacks" do
4
+ before :each do
5
+ $create_called=false
6
+ $update_called=false
7
+ $save_called=false
8
+ $destroy_called=false
9
+ end
10
+ class CallbackTest < Redisted::Base
11
+ field :name, type: :string
12
+ after_create :create_handler
13
+ def create_handler
14
+ $create_called=true
15
+ end
16
+ after_update do
17
+ $update_called=true
18
+ end
19
+ after_save do
20
+ $save_called=true
21
+ end
22
+ after_destroy :destroy_handler
23
+ def destroy_handler
24
+ $destroy_called=false
25
+ end
26
+ end
27
+ it "work on create" do
28
+ a=CallbackTest.new
29
+ $create_called.should be_false
30
+ a.save
31
+ $create_called.should be_true
32
+ $update_called.should be_false
33
+ end
34
+ it "work on update" do
35
+ a=CallbackTest.new
36
+ $create_called.should be_false
37
+ $update_called.should be_false
38
+ a.save
39
+ $create_called.should be_true
40
+ $update_called.should be_false
41
+ a.name="Test"
42
+ $create_called.should be_true
43
+ $update_called.should be_true
44
+ end
45
+ it "work on save" do
46
+ a=CallbackTest.create
47
+ $save_called=false
48
+ $save_called.should be_false
49
+ a.name="Test"
50
+ $save_called.should be_true
51
+ end
52
+ it "work on save (non-cached)" do
53
+ a=CallbackTest.create
54
+ $save_called=false
55
+ $save_called.should be_false
56
+ a.cache do
57
+ a.name="Test"
58
+ $save_called.should be_false
59
+ end
60
+ $save_called.should be_true
61
+ end
62
+ it "work on destroy" do
63
+ a=CallbackTest.create
64
+ $destroy_called=false
65
+ $destroy_called.should be_false
66
+ a.destroy
67
+ $destroy_called.should be_true
68
+ end
69
+ it "not work on delete" do
70
+ a=CallbackTest.create
71
+ $destroy_called=false
72
+ $destroy_called.should be_false
73
+ a.delete
74
+ $destroy_called.should be_false
75
+ end
76
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Delete/Destroy" do
4
+ class FieldTest < Redisted::Base
5
+ field :field1, type: :string
6
+ field :field2, type: :string
7
+ field :field3, type: :string
8
+ end
9
+ it "an object can be deleted" do
10
+ a=FieldTest.create({field1: "test1123", field2: "test1223"})
11
+ key="field_test:#{a.id}"
12
+ $redis.hget(key,"field1").should ==("test1123")
13
+ $redis.hget(key,"field2").should ==("test1223")
14
+ a.delete
15
+ $redis.hget(key,"field1").should be_nil
16
+ $redis.hget(key,"field2").should be_nil
17
+ end
18
+ it "an object can be destroyed" do
19
+ a=FieldTest.create({field1: "test1123", field2: "test1223"})
20
+ key="field_test:#{a.id}"
21
+ $redis.hget(key,"field1").should ==("test1123")
22
+ $redis.hget(key,"field2").should ==("test1223")
23
+ a.destroy
24
+ $redis.hget(key,"field1").should be_nil
25
+ $redis.hget(key,"field2").should be_nil
26
+ end
27
+ it "an object that was opened (not created) can be deleted" do
28
+ orig=FieldTest.create({field1: "test1123", field2: "test1223"})
29
+ a=FieldTest.find orig.id
30
+ a.id.should ==orig.id
31
+ key="field_test:#{a.id}"
32
+ $redis.hget(key,"field1").should ==("test1123")
33
+ $redis.hget(key,"field2").should ==("test1223")
34
+ a.delete
35
+ $redis.hget(key,"field1").should be_nil
36
+ $redis.hget(key,"field2").should be_nil
37
+ end
38
+ it "an object that was opened (not created) can be destroyed" do
39
+ orig=FieldTest.create({field1: "test1123", field2: "test1223"})
40
+ a=FieldTest.find orig.id
41
+ a.id.should ==orig.id
42
+ key="field_test:#{a.id}"
43
+ $redis.hget(key,"field1").should ==("test1123")
44
+ $redis.hget(key,"field2").should ==("test1223")
45
+ a.destroy
46
+ $redis.hget(key,"field1").should be_nil
47
+ $redis.hget(key,"field2").should be_nil
48
+ end
49
+ end
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Fields" do
4
+ class FieldTest1 < Redisted::Base
5
+ field :field1, type: :string
6
+ field :field2, type: :string
7
+ field :field3, type: :string
8
+ end
9
+ class FieldTest2 < Redisted::Base
10
+ field :field1, type: :string
11
+ field :field2, type: :integer
12
+ field :field3, type: :string
13
+ end
14
+ it "can be added to a model using new as separate statements" do
15
+
16
+ a=FieldTest1.new
17
+ a.save
18
+ a.field1="test1"
19
+ a.field2="test2"
20
+ a.field3="test3"
21
+
22
+ key="field_test1:#{a.id}"
23
+ $redis.hget(key,"field1").should ==("test1")
24
+ $redis.hget(key,"field2").should ==("test2")
25
+ $redis.hget(key,"field3").should ==("test3")
26
+ end
27
+ it "can be added to a model using create as separate statements" do
28
+ a=FieldTest1.create
29
+ a.field1="test1"
30
+ a.field2="test2"
31
+ a.field3="test3"
32
+
33
+ key="field_test1:#{a.id}"
34
+ $redis.hget(key,"field1").should ==("test1")
35
+ $redis.hget(key,"field2").should ==("test2")
36
+ $redis.hget(key,"field3").should ==("test3")
37
+ end
38
+ it "can be added to a model using new as arguments" do
39
+ a=FieldTest1.new({field1: "test1", field2: "test2", field3: "test3"})
40
+ a.save
41
+
42
+ key="field_test1:#{a.id}"
43
+ $redis.hget(key,"field1").should ==("test1")
44
+ $redis.hget(key,"field2").should ==("test2")
45
+ $redis.hget(key,"field3").should ==("test3")
46
+ end
47
+ it "can be added to a model using create as arguments" do
48
+
49
+ a=FieldTest1.create({field1: "test1", field2: "test2", field3: "test3"})
50
+
51
+ key="field_test1:#{a.id}"
52
+ $redis.hget(key,"field1").should ==("test1")
53
+ $redis.hget(key,"field2").should ==("test2")
54
+ $redis.hget(key,"field3").should ==("test3")
55
+ end
56
+ it "can be integers" do
57
+ a=FieldTest2.create
58
+ a.field2="456def"
59
+ a.save
60
+ a.field2.should ==456
61
+ key="field_test2:#{a.id}"
62
+ $redis.hget(key,"field2").should ==("456")
63
+ end
64
+ it "can be string" do
65
+ a=FieldTest2.create
66
+ a.field1="123abc"
67
+ a.save
68
+ a.field1.should =="123abc"
69
+ key="field_test2:#{a.id}"
70
+ $redis.hget(key,"field1").should ==("123abc")
71
+ end
72
+ it "can be datetime" do
73
+ now=DateTime.now
74
+ a=FieldTest2.create
75
+ a.field3=now
76
+ a.save
77
+ a.field3.should ==now
78
+ key="field_test2:#{a.id}"
79
+ $redis.hget(key,"field3").should ==now.to_s
80
+ end
81
+ it "can have their configuration read from the model's Class" do
82
+ field1_list=FieldTest1.fields
83
+ field2_list=FieldTest2.fields
84
+
85
+ field1_list[:field1].should_not be_nil
86
+ field1_list[:field1][:type].should ==:string
87
+ field1_list[:field2].should_not be_nil
88
+ field1_list[:field2][:type].should ==:string
89
+ field1_list[:field3].should_not be_nil
90
+ field1_list[:field3][:type].should ==:string # datetime...
91
+ field2_list[:field1].should_not be_nil
92
+ field2_list[:field1][:type].should ==:string
93
+ field2_list[:field2].should_not be_nil
94
+ field2_list[:field2][:type].should ==:integer
95
+ field2_list[:field3].should_not be_nil
96
+ field2_list[:field3][:type].should ==:string
97
+
98
+ end
99
+ it "can have their configuration read from an instance of the model" do
100
+ a1=FieldTest1.new
101
+ a2=FieldTest2.new
102
+ field1_list=a1.fields
103
+ field2_list=a2.fields
104
+
105
+ field1_list[:field1].should_not be_nil
106
+ field1_list[:field1][:type].should ==:string
107
+ field1_list[:field2].should_not be_nil
108
+ field1_list[:field2][:type].should ==:string
109
+ field1_list[:field3].should_not be_nil
110
+ field1_list[:field3][:type].should ==:string # datetime...
111
+ field2_list[:field1].should_not be_nil
112
+ field2_list[:field1][:type].should ==:string
113
+ field2_list[:field2].should_not be_nil
114
+ field2_list[:field2][:type].should ==:integer
115
+ field2_list[:field3].should_not be_nil
116
+ field2_list[:field3][:type].should ==:string
117
+ end
118
+ end
@@ -0,0 +1,90 @@
1
+
2
+ describe "Filter Index" do
3
+ it "creates filter index" do
4
+ class FilterIndex1 < Redisted::Base
5
+ field :name, type: :string
6
+ field :test_int, type: :integer
7
+ index :odd, includes: ->(elem){(elem.test_int%2)!=0}
8
+ index :even, includes: ->(elem){(elem.test_int%2)==0}
9
+ index :thrice, includes: ->(elem){(elem.test_int%3)==0}
10
+ index :asc, order: ->(elem){elem.test_int},fields: :test_int
11
+ index :desc, order: ->(elem){-elem.test_int},fields: :test_int
12
+ end
13
+ a=FilterIndex1.create({test_int: 3})
14
+ b=FilterIndex1.create({test_int: 4})
15
+ c=FilterIndex1.create({test_int: 2})
16
+ d=FilterIndex1.create({test_int: 9})
17
+ e=FilterIndex1.create({test_int: 1})
18
+ f=FilterIndex1.create({test_int: 6})
19
+
20
+ res=FilterIndex1.by_odd.by_asc.all
21
+ res.size.should ==3
22
+ res[0].id.to_i.should ==e.id
23
+ res[1].id.to_i.should ==a.id
24
+ res[2].id.to_i.should ==d.id
25
+
26
+ res=FilterIndex1.by_even.by_asc.all
27
+ res.size.should ==3
28
+ res[0].id.to_i.should ==c.id
29
+ res[1].id.to_i.should ==b.id
30
+ res[2].id.to_i.should ==f.id
31
+
32
+ res=FilterIndex1.by_even.by_desc.all
33
+ res.size.should ==3
34
+ res[0].id.to_i.should ==f.id
35
+ res[1].id.to_i.should ==b.id
36
+ res[2].id.to_i.should ==c.id
37
+
38
+ res=FilterIndex1.by_thrice.by_asc.all
39
+ res.size.should ==3
40
+ res[0].id.to_i.should ==a.id
41
+ res[1].id.to_i.should ==f.id
42
+ res[2].id.to_i.should ==d.id
43
+
44
+ res=FilterIndex1.by_thrice.by_odd.by_asc.all
45
+ res.size.should ==2
46
+ res[0].id.to_i.should ==a.id
47
+ res[1].id.to_i.should ==d.id
48
+
49
+ res=FilterIndex1.by_thrice.by_even.by_asc.all
50
+ res.size.should ==1
51
+ res[0].id.to_i.should ==f.id
52
+ end
53
+ it "allows incomplete filters to work" do
54
+ class FilterIndex2 < Redisted::Base
55
+ field :name, type: :string
56
+ field :test_int, type: :integer
57
+ index :odd, includes: ->(elem){(elem.test_int%2)!=0}
58
+ index :even, includes: ->(elem){(elem.test_int%2)==0}
59
+ index :thrice, includes: ->(elem){(elem.test_int%3)==0}
60
+ index :asc, order: ->(elem){elem.test_int},fields: :test_int
61
+ index :desc, order: ->(elem){-elem.test_int},fields: :test_int
62
+ end
63
+ a=FilterIndex2.create({test_int: 3})
64
+ b=FilterIndex2.create({test_int: 4})
65
+ c=FilterIndex2.create({test_int: 2})
66
+ d=FilterIndex2.create({test_int: 9})
67
+ e=FilterIndex2.create({test_int: 1})
68
+ f=FilterIndex2.create({test_int: 6})
69
+
70
+ aaa=FilterIndex2.by_odd
71
+ res=aaa.by_asc.all
72
+ res.size.should ==3
73
+ res[0].id.to_i.should ==e.id
74
+ res[1].id.to_i.should ==a.id
75
+ res[2].id.to_i.should ==d.id
76
+
77
+ aaa=FilterIndex2.scoped
78
+ res=aaa.by_thrice.by_asc.all
79
+ res.size.should ==3
80
+ res[0].id.to_i.should ==a.id
81
+ res[1].id.to_i.should ==f.id
82
+ res[2].id.to_i.should ==d.id
83
+
84
+ aaa=FilterIndex2.by_thrice.by_even.by_asc
85
+ res=aaa.all
86
+ res.size.should ==1
87
+ res[0].id.to_i.should ==f.id
88
+
89
+ end
90
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Find" do
4
+ class FieldTest < Redisted::Base
5
+ field :field1, type: :string
6
+ field :field2, type: :string
7
+ field :field3, type: :string
8
+ end
9
+ it "can find an object with a specific ID" do
10
+ orig=FieldTest.create({field1: "test1123", field2: "test1223"})
11
+ id=orig.id
12
+ obj=FieldTest.find id
13
+ obj.field1.should =="test1123"
14
+ obj.field2.should =="test1223"
15
+ orig.id.should ==obj.id
16
+ orig.object_id.should_not ==obj.object_id
17
+ end
18
+ it "can find an array objects with a list of IDs" do
19
+ orig1=FieldTest.create({field1: "test1123", field2: "test1223"})
20
+ orig2=FieldTest.create({field1: "test2123", field2: "test2223"})
21
+ orig3=FieldTest.create({field1: "test3123", field2: "test3223"})
22
+ objs=FieldTest.find [orig1.id,orig3.id,orig2.id]
23
+ objs[0].field1="test1123"
24
+ objs[0].field2="test1223"
25
+ objs[2].field1="test2123"
26
+ objs[2].field2="test2223"
27
+ objs[1].field1="test3123"
28
+ objs[1].field2="test3223"
29
+ end
30
+ end
File without changes
@@ -0,0 +1,36 @@
1
+
2
+ describe "Match Index" do
3
+ it "creates match index" do
4
+ class MatchIndex1 < Redisted::Base
5
+ field :name, type: :string
6
+ field :test_int, type: :string
7
+ field :provider, type: :string
8
+
9
+ index :provider, match: ->(elem){(elem.provider)}, fields: :provider,order: ->(elem){elem.test_int}
10
+ end
11
+ a=MatchIndex1.create({provider: "cable",test_int: 1})
12
+ b=MatchIndex1.create({provider: "satellite",test_int: 2})
13
+ c=MatchIndex1.create({provider: "cable",test_int: 3})
14
+ d=MatchIndex1.create({provider: "overair",test_int: 4})
15
+ e=MatchIndex1.create({provider: "satellite",test_int: 5})
16
+ f=MatchIndex1.create({provider: "cable",test_int: 6})
17
+
18
+ res=MatchIndex1.by_provider("cable").all
19
+ res.size.should ==3
20
+ res[0].id.to_i.should ==a.id
21
+ res[1].id.to_i.should ==c.id
22
+ res[2].id.to_i.should ==f.id
23
+
24
+ res=MatchIndex1.by_provider("satellite").all
25
+ res.size.should ==2
26
+ res[0].id.to_i.should ==b.id
27
+ res[1].id.to_i.should ==e.id
28
+
29
+ res=MatchIndex1.by_provider("overair").all
30
+ res.size.should ==1
31
+ res[0].id.to_i.should ==d.id
32
+
33
+ res=MatchIndex1.by_provider("xxx").all
34
+ res.size.should ==0
35
+ end
36
+ end
@@ -0,0 +1,238 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Persisted Fields" do
4
+ class FieldTest1 < Redisted::Base
5
+ field :field1, type: :string
6
+ field :field2, type: :string
7
+ field :field3, type: :string
8
+ end
9
+ it "can be saved one value at a time" do
10
+ a=FieldTest1.create
11
+ key="field_test1:#{a.id}"
12
+ $redis.hget(key,"field1").should be_nil
13
+ $redis.hget(key,"field2").should be_nil
14
+ a.field1="test"
15
+ $redis.hget(key,"field1").should =="test"
16
+ $redis.hget(key,"field2").should be_nil
17
+ a.field2="test2"
18
+ $redis.hget(key,"field1").should =="test"
19
+ $redis.hget(key,"field2").should =="test2"
20
+ a.save
21
+ $redis.hget(key,"field1").should =="test"
22
+ $redis.hget(key,"field2").should =="test2"
23
+ end
24
+ it "can be cached and save them all in one redis call" do
25
+ a=FieldTest1.create
26
+ key="field_test1:#{a.id}"
27
+ a.cache do
28
+ $redis.hget(key,"field1").should be_nil
29
+ $redis.hget(key,"field2").should be_nil
30
+ a.field1="test"
31
+ $redis.hget(key,"field1").should be_nil
32
+ $redis.hget(key,"field2").should be_nil
33
+ a.field2="test2"
34
+ $redis.hget(key,"field1").should be_nil
35
+ $redis.hget(key,"field2").should be_nil
36
+ end
37
+ $redis.hget(key,"field1").should =="test"
38
+ $redis.hget(key,"field2").should =="test2"
39
+ end
40
+ it "can be cached and save them all in one redis call without using a block" do
41
+ a=FieldTest1.create
42
+ key="field_test1:#{a.id}"
43
+ a.cache
44
+ $redis.hget(key,"field1").should be_nil
45
+ $redis.hget(key,"field2").should be_nil
46
+ a.field1="test"
47
+ $redis.hget(key,"field1").should be_nil
48
+ $redis.hget(key,"field2").should be_nil
49
+ a.field2="test2"
50
+ $redis.hget(key,"field1").should be_nil
51
+ $redis.hget(key,"field2").should be_nil
52
+ a.save
53
+ $redis.hget(key,"field1").should =="test"
54
+ $redis.hget(key,"field2").should =="test2"
55
+ end
56
+ it "caches until first save" do
57
+ a=FieldTest1.new
58
+ a.field1="Test"
59
+ a.field2="Test2"
60
+ key="field_test1:#{a.id}"
61
+ $redis.hget(key,"field1").should be_nil
62
+ $redis.hget(key,"field2").should be_nil
63
+ a.save
64
+ key="field_test1:#{a.id}"
65
+ $redis.hget(key,"field1").should =="Test"
66
+ $redis.hget(key,"field2").should =="Test2"
67
+ end
68
+ it "can be configured to cache all until save" do
69
+ class FieldTest < Redisted::Base
70
+ always_cache_until_save
71
+ field :field1, type: :string
72
+ field :field2, type: :string
73
+ end
74
+ a=FieldTest.create
75
+ key="field_test:#{a.id}"
76
+ $redis.hget(key,"field1").should be_nil
77
+ $redis.hget(key,"field2").should be_nil
78
+ a.field1="test"
79
+ $redis.hget(key,"field1").should be_nil
80
+ $redis.hget(key,"field2").should be_nil
81
+ a.field2="test2"
82
+ $redis.hget(key,"field1").should be_nil
83
+ $redis.hget(key,"field2").should be_nil
84
+ a.save
85
+ $redis.hget(key,"field1").should =="test"
86
+ $redis.hget(key,"field2").should =="test2"
87
+ end
88
+ it "can be read one by one as needed" do
89
+ key="field_test1:12345"
90
+ $redis.hmset key,"field1","3","field2","4"
91
+ b=FieldTest1.find(12345)
92
+ b.field1.should =="3"
93
+ $redis.hmset key,"field1","5","field2","6"
94
+ b.field2.should =="6"
95
+ end
96
+ it "can have the cache flushed" do
97
+ key="field_test1:12345"
98
+ $redis.hmset key,"field1","3","field2","4"
99
+ b=FieldTest1.find(12345)
100
+ b.field1.should =="3"
101
+ $redis.hmset key,"field1","5","field2","6"
102
+ b.field1.should =="3"
103
+ b.field2.should =="6"
104
+ b.flush
105
+ b.field1.should =="5"
106
+ b.field2.should =="6"
107
+ end
108
+ it "are read only once then cached" do
109
+ key="field_test1:12345"
110
+ $redis.hmset key,"field1","3"
111
+ b=FieldTest1.find(12345)
112
+ b.field1.should =="3"
113
+ $redis.hmset key,"field1","5"
114
+ b.field1.should =="3"
115
+ end
116
+ it "can be read and cached all at once (at load)" do
117
+ class FieldTest < Redisted::Base
118
+ pre_cache_all
119
+ field :field1, type: :string
120
+ field :field2, type: :string
121
+ field :field3, type: :string
122
+ end
123
+ key="field_test:12345"
124
+ $redis.hmset key,"field1","3","field2","4","field3","5"
125
+ b=FieldTest.find(12345)
126
+ $redis.hmset key,"field1","6","field2","7","field3","8"
127
+ b.field1.should =="3"
128
+ b.field2.should =="4"
129
+ b.field3.should =="5"
130
+ b.flush
131
+ b.field1.should =="6"
132
+ b.field2.should =="7"
133
+ b.field3.should =="8"
134
+ end
135
+ it "can be automatically read and cached at object creation" do
136
+ class FieldTest < Redisted::Base
137
+ pre_cache_all when: :create
138
+ field :field1, type: :string
139
+ field :field2, type: :string
140
+ field :field3, type: :string
141
+ end
142
+ key="field_test:12345"
143
+ $redis.hmset key,"field1","3","field2","4","field3","5"
144
+ b=FieldTest.find(12345)
145
+ $redis.hmset key,"field1","6","field2","7","field3","8"
146
+ b.field1.should =="3"
147
+ b.field2.should =="4"
148
+ b.field3.should =="5"
149
+ b.flush
150
+ b.field1.should =="6"
151
+ b.field2.should =="7"
152
+ b.field3.should =="8"
153
+ end
154
+ it "can be automatically read and cached at first field read" do
155
+ class FieldTest < Redisted::Base
156
+ pre_cache_all when: :first_read
157
+ field :field1, type: :string
158
+ field :field2, type: :string
159
+ field :field3, type: :string
160
+ end
161
+ key="field_test:12345"
162
+ $redis.hmset key,"field1","3","field2","4","field3","5"
163
+ b=FieldTest.find(12345)
164
+ $redis.hmset key,"field1","6","field2","7","field3","8"
165
+ b.field1.should =="6"
166
+ $redis.hmset key,"field1","9","field2","10","field3","11"
167
+ b.field2.should =="7"
168
+ b.field3.should =="8"
169
+ b.flush
170
+ b.field1.should =="9"
171
+ b.field2.should =="10"
172
+ b.field3.should =="11"
173
+ end
174
+ it "can have autoamtic caching explicitely for all fields" do
175
+ class FieldTest < Redisted::Base
176
+ pre_cache_all when: :create, keys: :all
177
+ field :field1, type: :string
178
+ field :field2, type: :string
179
+ field :field3, type: :string
180
+ end
181
+ key="field_test:12345"
182
+ $redis.hmset key,"field1","3","field2","4","field3","5"
183
+ b=FieldTest.find(12345)
184
+ $redis.hmset key,"field1","6","field2","7","field3","8"
185
+ b.field1.should =="3"
186
+ b.field2.should =="4"
187
+ b.field3.should =="5"
188
+ b.flush
189
+ b.field1.should =="6"
190
+ b.field2.should =="7"
191
+ b.field3.should =="8"
192
+ end
193
+ it "can have automatic caching for some fields only" do
194
+ class FieldTest < Redisted::Base
195
+ pre_cache_all when: :create, keys: [:field1,:field3]
196
+ field :field1, type: :string
197
+ field :field2, type: :string
198
+ field :field3, type: :string
199
+ end
200
+ key="field_test:12345"
201
+ $redis.hmset key,"field1","3","field2","4","field3","5"
202
+ b=FieldTest.find(12345)
203
+ $redis.hmset key,"field1","6","field2","7","field3","8"
204
+ b.field1.should =="3"
205
+ b.field2.should =="7"
206
+ b.field3.should =="5"
207
+ b.flush
208
+ b.field1.should =="6"
209
+ b.field2.should =="7"
210
+ b.field3.should =="8"
211
+ end
212
+ it "can have automatic caching for all fields except specified fields" do
213
+ class FieldTest < Redisted::Base
214
+ pre_cache_all when: :create, except: [:field1,:field3]
215
+ field :field1, type: :string
216
+ field :field2, type: :string
217
+ field :field3, type: :string
218
+ end
219
+ key="field_test:12345"
220
+ $redis.hmset key,"field1","3","field2","4","field3","5"
221
+ b=FieldTest.find(12345)
222
+ $redis.hmset key,"field1","6","field2","7","field3","8"
223
+ b.field1.should =="6"
224
+ b.field2.should =="4"
225
+ b.field3.should =="8"
226
+ b.flush
227
+ b.field1.should =="6"
228
+ b.field2.should =="7"
229
+ b.field3.should =="8"
230
+ end
231
+
232
+ it "can populate an object via parameters to create" do
233
+ obj=FieldTest1.create({field1: "test111",field2: "test222"})
234
+ key="field_test1:#{obj.id}"
235
+ $redis.hget(key,"field1").should =="test111"
236
+ $redis.hget(key,"field2").should =="test222"
237
+ end
238
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Recalculate Index" do
4
+ # TODO
5
+ it "todo"
6
+ end