ohm 1.4.0 → 2.0.0.alpha1
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.
- checksums.yaml +4 -4
- data/.gems +4 -4
- data/CHANGELOG +0 -8
- data/README.md +4 -6
- data/examples/chaining.rb +52 -56
- data/lib/ohm.rb +145 -358
- data/lib/ohm/command.rb +14 -10
- data/lib/ohm/lua/delete.lua +51 -0
- data/lib/ohm/lua/save.lua +104 -0
- data/ohm.gemspec +8 -6
- data/test/command.rb +22 -24
- data/test/connection.rb +5 -89
- data/test/filtering.rb +140 -8
- data/test/helper.rb +3 -1
- data/test/indices.rb +1 -1
- data/test/issue-52.rb +2 -2
- data/test/json.rb +0 -16
- data/test/list.rb +1 -1
- data/test/model.rb +70 -194
- data/test/uniques.rb +2 -32
- metadata +23 -26
- data/lib/ohm/transaction.rb +0 -133
- data/test/1.8.6_test.rb +0 -25
- data/test/pipeline-performance.rb +0 -67
- data/test/transactions.rb +0 -240
- data/test/validations.rb +0 -195
data/test/validations.rb
DELETED
@@ -1,195 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
-
|
5
|
-
class Event < Ohm::Model
|
6
|
-
attribute :name
|
7
|
-
attribute :place
|
8
|
-
attribute :capacity
|
9
|
-
|
10
|
-
index :name
|
11
|
-
index :place
|
12
|
-
|
13
|
-
def validate
|
14
|
-
assert_format(:name, /^\w+$/)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class Validatable
|
19
|
-
attr_accessor :name
|
20
|
-
|
21
|
-
include Scrivener::Validations
|
22
|
-
end
|
23
|
-
|
24
|
-
# A new model with validations
|
25
|
-
scope do
|
26
|
-
setup do
|
27
|
-
Event.new
|
28
|
-
end
|
29
|
-
|
30
|
-
# That must have a present name
|
31
|
-
scope do
|
32
|
-
test "not be created if the name is never assigned" do |event|
|
33
|
-
event.save
|
34
|
-
assert event.new?
|
35
|
-
end
|
36
|
-
|
37
|
-
test "not be created if the name assigned is empty" do |event|
|
38
|
-
event.name = ""
|
39
|
-
event.save
|
40
|
-
assert event.new?
|
41
|
-
end
|
42
|
-
|
43
|
-
test "be created if the name assigned is not empty" do |event|
|
44
|
-
event.name = "hello"
|
45
|
-
event.save
|
46
|
-
assert event.id
|
47
|
-
end
|
48
|
-
|
49
|
-
# And must have a name with only \w+
|
50
|
-
scope do
|
51
|
-
test "not be created if the name doesn't match /^\w+$/" do |event|
|
52
|
-
event.name = "hello-world"
|
53
|
-
event.save
|
54
|
-
assert event.new?
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# That must have a numeric attribute :capacity
|
60
|
-
scope do
|
61
|
-
test "fail when the value is nil" do |event|
|
62
|
-
def event.validate
|
63
|
-
assert_numeric :capacity
|
64
|
-
end
|
65
|
-
|
66
|
-
event.name = "foo"
|
67
|
-
event.place = "bar"
|
68
|
-
event.save
|
69
|
-
|
70
|
-
assert event.new?
|
71
|
-
assert_equal({:capacity => [:not_numeric]}, event.errors)
|
72
|
-
end
|
73
|
-
|
74
|
-
test "fail when the value is not numeric" do |event|
|
75
|
-
def event.validate
|
76
|
-
assert_numeric :capacity
|
77
|
-
end
|
78
|
-
|
79
|
-
event.name = "foo"
|
80
|
-
event.place = "bar"
|
81
|
-
event.capacity = "baz"
|
82
|
-
event.save
|
83
|
-
|
84
|
-
assert event.new?
|
85
|
-
assert_equal({:capacity => [:not_numeric]}, event.errors)
|
86
|
-
end
|
87
|
-
|
88
|
-
test "succeed when the value is numeric" do |event|
|
89
|
-
def event.validate
|
90
|
-
assert_numeric :capacity
|
91
|
-
end
|
92
|
-
|
93
|
-
event.name = "foo"
|
94
|
-
event.place = "bar"
|
95
|
-
event.capacity = 42
|
96
|
-
event.save
|
97
|
-
|
98
|
-
assert event.id
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
# An existing model with a valid name
|
104
|
-
scope do
|
105
|
-
setup do
|
106
|
-
Event.create(:name => "original")
|
107
|
-
end
|
108
|
-
|
109
|
-
# That has the name changed
|
110
|
-
scope do
|
111
|
-
test "not be saved if the new name is nil" do |event|
|
112
|
-
event.name = nil
|
113
|
-
event.save
|
114
|
-
assert false == event.valid?
|
115
|
-
assert "original" == Event[event.id].name
|
116
|
-
end
|
117
|
-
|
118
|
-
test "not be saved if the name assigned is empty" do |event|
|
119
|
-
event.name = ""
|
120
|
-
event.save
|
121
|
-
assert false == event.valid?
|
122
|
-
assert "original" == Event[event.id].name
|
123
|
-
end
|
124
|
-
|
125
|
-
test "be saved if the name assigned is not empty" do |event|
|
126
|
-
event.name = "hello"
|
127
|
-
event.save
|
128
|
-
assert event.valid?
|
129
|
-
assert "hello" == Event[event.id].name
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
# Validations module
|
135
|
-
scope do
|
136
|
-
setup do
|
137
|
-
Validatable.new
|
138
|
-
end
|
139
|
-
|
140
|
-
# assert
|
141
|
-
scope do
|
142
|
-
test "add errors to a collection" do |target|
|
143
|
-
def target.validate
|
144
|
-
assert(false, ["Attribute", "Something bad"])
|
145
|
-
end
|
146
|
-
|
147
|
-
target.validate
|
148
|
-
|
149
|
-
assert_equal({ "Attribute" => ["Something bad"] }, target.errors)
|
150
|
-
end
|
151
|
-
|
152
|
-
test "allow for nested validations" do |target|
|
153
|
-
def target.validate
|
154
|
-
if assert(true, ["Attribute", "No error"])
|
155
|
-
assert(false, ["Attribute", "Chained error"])
|
156
|
-
end
|
157
|
-
|
158
|
-
if assert(false, ["Attribute", "Parent error"])
|
159
|
-
assert(false, ["Attribute", "No chained error"])
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
target.validate
|
164
|
-
|
165
|
-
expected = {"Attribute"=>["Chained error", "Parent error"]}
|
166
|
-
assert_equal expected, target.errors
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
# assert_present
|
171
|
-
scope do
|
172
|
-
setup do
|
173
|
-
target = Validatable.new
|
174
|
-
|
175
|
-
def target.validate
|
176
|
-
assert_present(:name)
|
177
|
-
end
|
178
|
-
|
179
|
-
target
|
180
|
-
end
|
181
|
-
|
182
|
-
test "fail when the attribute is nil" do |target|
|
183
|
-
target.validate
|
184
|
-
|
185
|
-
assert_equal({ :name => [:not_present] }, target.errors)
|
186
|
-
end
|
187
|
-
|
188
|
-
test "fail when the attribute is empty" do |target|
|
189
|
-
target.name = ""
|
190
|
-
target.validate
|
191
|
-
|
192
|
-
assert_equal({ :name => [:not_present] }, target.errors)
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|