postgres_ext 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +6 -47
- data/lib/postgres_ext/active_record/relation/predicate_builder.rb +36 -55
- data/lib/postgres_ext/active_record/relation/query_methods.rb +0 -14
- data/lib/postgres_ext/active_record.rb +0 -3
- data/lib/postgres_ext/version.rb +1 -1
- data/postgres_ext.gemspec +6 -5
- data/spec/arel/arel_spec.rb +0 -1
- data/spec/dummy/app/models/person.rb +0 -1
- data/spec/dummy/config/application.rb +0 -3
- data/spec/dummy/config/environments/development.rb +2 -7
- data/spec/dummy/config/environments/production.rb +1 -0
- data/spec/dummy/config/environments/test.rb +1 -5
- data/spec/dummy/db/migrate/20120501163758_create_people.rb +3 -3
- data/spec/dummy/db/schema.rb +15 -12
- data/spec/queries/sanity_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -2
- metadata +21 -105
- data/docs/indexes.md +0 -28
- data/docs/migrations.md +0 -92
- data/docs/type_casting.md +0 -70
- data/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb +0 -537
- data/lib/postgres_ext/active_record/connection_adapters.rb +0 -1
- data/lib/postgres_ext/active_record/sanitization.rb +0 -30
- data/lib/postgres_ext/active_record/schema_dumper.rb +0 -157
- data/spec/columns/array_spec.rb +0 -119
- data/spec/columns/inet_spec.rb +0 -25
- data/spec/columns/ranges/daterange_spec.rb +0 -37
- data/spec/columns/ranges/int4range_spec.rb +0 -38
- data/spec/columns/ranges/int8range_spec.rb +0 -38
- data/spec/columns/ranges/numrange_spec.rb +0 -37
- data/spec/columns/ranges/tsrange_spec.rb +0 -37
- data/spec/migrations/active_record_migration_spec.rb +0 -29
- data/spec/migrations/array_spec.rb +0 -214
- data/spec/migrations/cidr_spec.rb +0 -26
- data/spec/migrations/citext_spec.rb +0 -32
- data/spec/migrations/ean13_spec.rb +0 -27
- data/spec/migrations/index_spec.rb +0 -67
- data/spec/migrations/inet_spec.rb +0 -26
- data/spec/migrations/macaddr_spec.rb +0 -26
- data/spec/migrations/ranges/daterange_spec.rb +0 -27
- data/spec/migrations/ranges/int4range_spec.rb +0 -27
- data/spec/migrations/ranges/int8range_spec.rb +0 -27
- data/spec/migrations/ranges/numrange_spec.rb +0 -27
- data/spec/migrations/ranges/tsrange_spec.rb +0 -27
- data/spec/migrations/ranges/tstzrange_spec.rb +0 -27
- data/spec/migrations/uuid_spec.rb +0 -26
- data/spec/models/array_spec.rb +0 -285
- data/spec/models/ean13_spec.rb +0 -57
- data/spec/models/inet_spec.rb +0 -88
- data/spec/models/ranges/daterange_spec.rb +0 -88
- data/spec/models/ranges/int4range_spec.rb +0 -85
- data/spec/models/ranges/int8range_spec.rb +0 -85
- data/spec/models/ranges/numrange_spec.rb +0 -85
- data/spec/models/ranges/tsrange_spec.rb +0 -89
- data/spec/models/ranges/tstzrange_spec.rb +0 -89
- data/spec/schema_dumper/array_spec.rb +0 -17
- data/spec/schema_dumper/cidr_spec.rb +0 -17
- data/spec/schema_dumper/citext_spec.rb +0 -17
- data/spec/schema_dumper/ean13_spec.rb +0 -17
- data/spec/schema_dumper/extension_spec.rb +0 -14
- data/spec/schema_dumper/index_spec.rb +0 -46
- data/spec/schema_dumper/inet_spec.rb +0 -17
- data/spec/schema_dumper/macaddr_spec.rb +0 -17
- data/spec/schema_dumper/ranges/daterange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/int4range_spec.rb +0 -18
- data/spec/schema_dumper/ranges/int8range_spec.rb +0 -18
- data/spec/schema_dumper/ranges/numrange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/tsrange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/tstzrange_spec.rb +0 -17
- data/spec/schema_dumper/uuid_spec.rb +0 -17
data/spec/models/array_spec.rb
DELETED
@@ -1,285 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with array columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, string array' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :users, :force => true do |t|
|
9
|
-
t.string :nick_names, :array => true
|
10
|
-
t.integer :favorite_numbers, :array => true
|
11
|
-
|
12
|
-
t.timestamps
|
13
|
-
end
|
14
|
-
|
15
|
-
class User < ActiveRecord::Base
|
16
|
-
attr_accessible :nick_names, :favorite_numbers
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
after do
|
21
|
-
adapter.drop_table :users
|
22
|
-
Object.send(:remove_const, :User)
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'no default value, string array' do
|
26
|
-
describe '#create' do
|
27
|
-
it 'creates a user when there is no array assignment' do
|
28
|
-
u = User.create()
|
29
|
-
u.reload
|
30
|
-
u.nick_names.should eq nil
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'creates a user with an empty array' do
|
34
|
-
u = User.create(:nick_names => [])
|
35
|
-
u.reload
|
36
|
-
u.nick_names.should eq []
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'creates a user with an array of some values' do
|
40
|
-
u = User.create(:nick_names => ['some', 'things'])
|
41
|
-
u.reload
|
42
|
-
u.nick_names.should eq ['some', 'things']
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'creates a user with an int array of some values' do
|
46
|
-
u = User.create(:favorite_numbers => [2,3,5])
|
47
|
-
u.reload
|
48
|
-
u.favorite_numbers.should eq [2,3,5]
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'creates a user with an int array of string values' do
|
52
|
-
u = User.create(:favorite_numbers => ['2','3','5'])
|
53
|
-
u.reload
|
54
|
-
u.favorite_numbers.should eq [2,3,5]
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'Setting values' do
|
60
|
-
it 'returns the value set when the record is retrieved' do
|
61
|
-
u = User.create(:nick_names => ['some', 'things'])
|
62
|
-
u.reload
|
63
|
-
|
64
|
-
u.nick_names = ['different', 'values']
|
65
|
-
u.save
|
66
|
-
|
67
|
-
u.reload
|
68
|
-
u.nick_names.should eq ['different', 'values']
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'creates a user with an int array of some values' do
|
72
|
-
u = User.create(:favorite_numbers => [2,3,5])
|
73
|
-
u.reload
|
74
|
-
|
75
|
-
u.favorite_numbers = [1,2,3]
|
76
|
-
u.save
|
77
|
-
|
78
|
-
u.reload
|
79
|
-
u.favorite_numbers.should eq [1,2,3]
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
context '#update_attribute' do
|
84
|
-
describe 'setting a value via update_attribute' do
|
85
|
-
it 'returns the value set when the record is retrieved' do
|
86
|
-
user = User.create(:nick_names => [])
|
87
|
-
user.reload
|
88
|
-
|
89
|
-
user.update_attribute(:nick_names, ['some', 'values'])
|
90
|
-
user.save
|
91
|
-
|
92
|
-
user.reload
|
93
|
-
user.nick_names.should eq ['some', 'values']
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context '#<column>? do' do
|
99
|
-
describe 'checking a value via <attribute_name>? 'do
|
100
|
-
it 'returns false if it\'s an empty array' do
|
101
|
-
user = User.create(:nick_names => [], :favorite_numbers => [])
|
102
|
-
user.reload
|
103
|
-
|
104
|
-
user.nick_names?.should be_false
|
105
|
-
user.favorite_numbers?.should be_false
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'returns false if it\'s an empty array' do
|
109
|
-
user = User.create(:nick_names => ['bob'], :favorite_numbers => [0])
|
110
|
-
user.reload
|
111
|
-
|
112
|
-
user.nick_names?.should be_true
|
113
|
-
user.favorite_numbers?.should be_true
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
context '#update_column' do
|
119
|
-
describe 'setting a value via update_column' do
|
120
|
-
it 'returns the value set when the record is retrieved' do
|
121
|
-
user = User.create(:nick_names => [])
|
122
|
-
user.reload
|
123
|
-
|
124
|
-
user.update_column(:nick_names, ['some', 'values'])
|
125
|
-
user.save
|
126
|
-
|
127
|
-
user.reload
|
128
|
-
user.nick_names.should eq ['some', 'values']
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context '#update_attributes' do
|
134
|
-
describe 'setting a value via update_attributes' do
|
135
|
-
it 'returns the value set when the record is retrieved' do
|
136
|
-
user = User.create(:nick_names => [])
|
137
|
-
user.reload
|
138
|
-
|
139
|
-
user.update_attributes(:nick_names => ['some', 'values'])
|
140
|
-
user.save
|
141
|
-
|
142
|
-
user.reload
|
143
|
-
user.nick_names.should eq ['some', 'values']
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe 'strings contain special characters' do
|
149
|
-
context '#save' do
|
150
|
-
it 'contains: \'' do
|
151
|
-
data = ['some\'thing']
|
152
|
-
u = User.create
|
153
|
-
u.nick_names = data
|
154
|
-
u.save!
|
155
|
-
u.reload
|
156
|
-
u.nick_names.should eq data
|
157
|
-
end
|
158
|
-
|
159
|
-
it 'contains: {' do
|
160
|
-
data = ['some{thing']
|
161
|
-
u = User.create
|
162
|
-
u.nick_names = data
|
163
|
-
u.save!
|
164
|
-
u.reload
|
165
|
-
u.nick_names.should eq data
|
166
|
-
end
|
167
|
-
|
168
|
-
it 'contains: }' do
|
169
|
-
data = ['some}thing']
|
170
|
-
u = User.create
|
171
|
-
u.nick_names = data
|
172
|
-
u.save!
|
173
|
-
u.reload
|
174
|
-
u.nick_names.should eq data
|
175
|
-
end
|
176
|
-
|
177
|
-
it 'contains: backslash' do
|
178
|
-
data = ['some\\thing']
|
179
|
-
u = User.create
|
180
|
-
u.nick_names = data
|
181
|
-
u.save!
|
182
|
-
u.reload
|
183
|
-
u.nick_names.should eq data
|
184
|
-
end
|
185
|
-
|
186
|
-
it 'contains: "' do
|
187
|
-
data = ['some"thing']
|
188
|
-
u = User.create
|
189
|
-
u.nick_names = data
|
190
|
-
u.save!
|
191
|
-
u.reload
|
192
|
-
u.nick_names.should eq data
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
context '#create' do
|
197
|
-
it 'contains: \'' do
|
198
|
-
data = ['some\'thing']
|
199
|
-
u = User.create(:nick_names => data)
|
200
|
-
u.reload
|
201
|
-
u.nick_names.should eq data
|
202
|
-
end
|
203
|
-
|
204
|
-
it 'contains: {' do
|
205
|
-
data = ['some{thing']
|
206
|
-
u = User.create(:nick_names => data)
|
207
|
-
u.reload
|
208
|
-
u.nick_names.should eq data
|
209
|
-
end
|
210
|
-
|
211
|
-
it 'contains: }' do
|
212
|
-
data = ['some}thing']
|
213
|
-
u = User.create(:nick_names => data)
|
214
|
-
u.reload
|
215
|
-
u.nick_names.should eq data
|
216
|
-
end
|
217
|
-
|
218
|
-
it 'contains: backslash' do
|
219
|
-
data = ['some\\thing']
|
220
|
-
u = User.create(:nick_names => data)
|
221
|
-
u.reload
|
222
|
-
u.nick_names.should eq data
|
223
|
-
end
|
224
|
-
|
225
|
-
it 'contains: "' do
|
226
|
-
data = ['some"thing']
|
227
|
-
u = User.create(:nick_names => data)
|
228
|
-
u.reload
|
229
|
-
u.nick_names.should eq data
|
230
|
-
end
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
describe 'overlap' do
|
235
|
-
it "works" do
|
236
|
-
arel = User.arel_table
|
237
|
-
User.create(:nick_names => ['this'])
|
238
|
-
x = User.create
|
239
|
-
x.nick_names = ["s'o{m}e", 'thing']
|
240
|
-
x.save
|
241
|
-
u = User.where(arel[:nick_names].overlap(["s'o{m}e"]))
|
242
|
-
u.first.should_not be_nil
|
243
|
-
u.first.nick_names.should eq ["s'o{m}e", 'thing']
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
context 'default values' do
|
249
|
-
before do
|
250
|
-
adapter.create_table :defaulted_users, :force => true do |t|
|
251
|
-
t.string :nick_names, :array => true, :default => '{}'
|
252
|
-
end
|
253
|
-
class DefaultedUser < ActiveRecord::Base
|
254
|
-
attr_accessible :nick_names
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
after do
|
259
|
-
adapter.drop_table :defaulted_users
|
260
|
-
Object.send(:remove_const, :DefaultedUser)
|
261
|
-
end
|
262
|
-
|
263
|
-
context 'model creation' do
|
264
|
-
describe '#create' do
|
265
|
-
it 'creates a user when there is no array assignment' do
|
266
|
-
u = DefaultedUser.create()
|
267
|
-
u.reload
|
268
|
-
u.nick_names.should eq []
|
269
|
-
end
|
270
|
-
|
271
|
-
it 'creates a user with an nil' do
|
272
|
-
u = DefaultedUser.create(:nick_names => nil)
|
273
|
-
u.reload
|
274
|
-
u.nick_names.should eq nil
|
275
|
-
end
|
276
|
-
|
277
|
-
it 'creates a user with an array of some values' do
|
278
|
-
u = DefaultedUser.create(:nick_names => ['some', 'things'])
|
279
|
-
u.reload
|
280
|
-
u.nick_names.should eq ['some', 'things']
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
284
|
-
end
|
285
|
-
end
|
data/spec/models/ean13_spec.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with ean13 columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, ean' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :books, :force => true do |t|
|
9
|
-
t.ean13 :ean
|
10
|
-
end
|
11
|
-
|
12
|
-
class Book < ActiveRecord::Base
|
13
|
-
attr_accessible :ean
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
after do
|
18
|
-
adapter.drop_table :books
|
19
|
-
Object.send(:remove_const, :Book)
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'no default value, ean' do
|
23
|
-
describe '#create' do
|
24
|
-
it 'create a book when there is no ean assignment' do
|
25
|
-
book = Book.create()
|
26
|
-
book.reload
|
27
|
-
book.ean.should eq nil
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'creates a book with an ean string' do
|
31
|
-
book = Book.create(:ean => '9780312174910')
|
32
|
-
book.reload
|
33
|
-
book.ean.should eq '978-0-312-17491-0'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe 'ean assignment' do
|
38
|
-
it 'updates a book with an ean string' do
|
39
|
-
book = Book.create(:ean => '9783037781265')
|
40
|
-
book.ean = '9780312174910'
|
41
|
-
book.save
|
42
|
-
|
43
|
-
book.reload
|
44
|
-
book.ean.should eq '978-0-312-17491-0'
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe 'find_by_ean' do
|
49
|
-
let!(:ean) { Book.create(:ean => '9783037781265') }
|
50
|
-
|
51
|
-
it 'finds book using string value' do
|
52
|
-
Book.find_by_ean('9783037781265').should eq ean
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
data/spec/models/inet_spec.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with inet columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, inet' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :addresses, :force => true do |t|
|
9
|
-
t.inet :ip_address
|
10
|
-
end
|
11
|
-
class Address < ActiveRecord::Base
|
12
|
-
attr_accessible :ip_address
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
adapter.drop_table :addresses
|
18
|
-
Object.send(:remove_const, :Address)
|
19
|
-
end
|
20
|
-
|
21
|
-
context 'no default value, inet' do
|
22
|
-
describe '#create' do
|
23
|
-
it 'creates an address when there is no assignment' do
|
24
|
-
address = Address.create()
|
25
|
-
address.reload
|
26
|
-
address.ip_address.should eq nil
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'creates an address with an address string' do
|
30
|
-
address = Address.create( :ip_address => '192.168.0.1')
|
31
|
-
address.reload
|
32
|
-
address.ip_address.should eq IPAddr.new('192.168.0.1')
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'creates an address with an IPAddr' do
|
36
|
-
ip_addr = IPAddr.new('192.168.0.1')
|
37
|
-
address = Address.create( :ip_address => ip_addr)
|
38
|
-
address.reload
|
39
|
-
address.ip_address.should eq ip_addr
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe 'inet assignment' do
|
44
|
-
it 'updates an address with an address string' do
|
45
|
-
address = Address.create( :ip_address => '192.168.0.1')
|
46
|
-
address.ip_address = '192.168.1.2'
|
47
|
-
address.save
|
48
|
-
|
49
|
-
address.reload
|
50
|
-
address.ip_address.should eq IPAddr.new('192.168.1.2')
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'converts empty strings to nil' do
|
54
|
-
address = Address.create
|
55
|
-
address.ip_address = ''
|
56
|
-
address.save
|
57
|
-
|
58
|
-
address.reload
|
59
|
-
address.ip_address.should eq nil
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'updates an address with an IPAddr' do
|
63
|
-
ip_addr_1 = IPAddr.new('192.168.0.1')
|
64
|
-
ip_addr_2 = IPAddr.new('192.168.1.2')
|
65
|
-
address = Address.create( :ip_address => ip_addr_1)
|
66
|
-
address.ip_address = ip_addr_2
|
67
|
-
address.save
|
68
|
-
|
69
|
-
address.reload
|
70
|
-
address.ip_address.should eq ip_addr_2
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe 'find_by_inet' do
|
75
|
-
let!(:address) { Address.create(:ip_address => '192.168.0.1') }
|
76
|
-
|
77
|
-
it 'finds address using string value' do
|
78
|
-
Address.find_by_ip_address('192.168.0.1').should eq address
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'finds address using IPAddr' do
|
82
|
-
ip_addr = IPAddr.new '192.168.0.1'
|
83
|
-
Address.find_by_ip_address(ip_addr).should eq address
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with daterange columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, range' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :date_rangers, :force => true do |t|
|
9
|
-
t.daterange :best_estimate
|
10
|
-
end
|
11
|
-
class DateRanger < ActiveRecord::Base
|
12
|
-
attr_accessible :best_estimate
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
adapter.drop_table :date_rangers
|
18
|
-
Object.send(:remove_const, :DateRanger)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#create' do
|
22
|
-
it 'creates an record when there is no assignment' do
|
23
|
-
range = DateRanger.create()
|
24
|
-
range.reload
|
25
|
-
range.best_estimate.should eq nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'creates an record with a range' do
|
29
|
-
date_range = Date.new(2011, 01, 01)..Date.new(2012, 01, 31)
|
30
|
-
range = DateRanger.create( :best_estimate => date_range)
|
31
|
-
range.reload
|
32
|
-
range.best_estimate.should eq Date.new(2011, 01, 01)...Date.new(2012, 02, 01)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'range assignment' do
|
37
|
-
it 'updates an record with an range string' do
|
38
|
-
date_range = Date.new(2011, 01, 01)..Date.new(2012, 01, 31)
|
39
|
-
new_date_range = Date.new(2012, 01, 01)...Date.new(2012, 02, 01)
|
40
|
-
range = DateRanger.create( :best_estimate => date_range)
|
41
|
-
range.best_estimate = new_date_range
|
42
|
-
range.save
|
43
|
-
|
44
|
-
range.reload
|
45
|
-
range.best_estimate.should eq new_date_range
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'converts empty strings to nil' do
|
49
|
-
range = DateRanger.create
|
50
|
-
range.best_estimate = ''
|
51
|
-
range.save
|
52
|
-
|
53
|
-
range.reload
|
54
|
-
range.best_estimate.should eq nil
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'default value, date range' do
|
60
|
-
before do
|
61
|
-
adapter.create_table :date_default_rangers, :force => true do |t|
|
62
|
-
t.daterange :best_estimate, :default => Date.new(2011, 01, 01)..Date.new(2011, 01, 31)
|
63
|
-
end
|
64
|
-
class DateDefaultRanger < ActiveRecord::Base
|
65
|
-
attr_accessible :best_estimate
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
after do
|
70
|
-
adapter.drop_table :date_default_rangers
|
71
|
-
Object.send(:remove_const, :DateDefaultRanger)
|
72
|
-
end
|
73
|
-
|
74
|
-
describe '#create' do
|
75
|
-
it 'creates an record when there is no assignment' do
|
76
|
-
range = DateDefaultRanger.create()
|
77
|
-
range.reload
|
78
|
-
range.best_estimate.should eq Date.new(2011, 01, 01)...Date.new(2011, 02, 01)
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'creates an record with a range' do
|
82
|
-
range = DateDefaultRanger.create(:best_estimate => Date.new(2012, 01, 01)..Date.new(2012, 12, 31))
|
83
|
-
range.reload
|
84
|
-
range.best_estimate.should eq Date.new(2012, 01, 01)...Date.new(2013, 01, 01)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with int4range range columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, range' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :int4_rangers, :force => true do |t|
|
9
|
-
t.int4range :best_estimate
|
10
|
-
end
|
11
|
-
class Int4Ranger < ActiveRecord::Base
|
12
|
-
attr_accessible :best_estimate
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
adapter.drop_table :int4_rangers
|
18
|
-
Object.send(:remove_const, :Int4Ranger)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#create' do
|
22
|
-
it 'creates an record when there is no assignment' do
|
23
|
-
range = Int4Ranger.create()
|
24
|
-
range.reload
|
25
|
-
range.best_estimate.should eq nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'creates an record with a range' do
|
29
|
-
range = Int4Ranger.create( :best_estimate => 0..4)
|
30
|
-
range.reload
|
31
|
-
range.best_estimate.should eq 0...5
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe 'range assignment' do
|
36
|
-
it 'updates an record with an range string' do
|
37
|
-
range = Int4Ranger.create( :best_estimate => 0..4)
|
38
|
-
range.best_estimate = 0...9
|
39
|
-
range.save
|
40
|
-
|
41
|
-
range.reload
|
42
|
-
range.best_estimate.should eq 0...9
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'converts empty strings to nil' do
|
46
|
-
range = Int4Ranger.create
|
47
|
-
range.best_estimate = ''
|
48
|
-
range.save
|
49
|
-
|
50
|
-
range.reload
|
51
|
-
range.best_estimate.should eq nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'default value, int4 range' do
|
57
|
-
before do
|
58
|
-
adapter.create_table :int4_default_rangers, :force => true do |t|
|
59
|
-
t.int4range :best_estimate, :default => 0..5
|
60
|
-
end
|
61
|
-
class Int4DefaultRanger < ActiveRecord::Base
|
62
|
-
attr_accessible :best_estimate
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
after do
|
67
|
-
adapter.drop_table :int4_default_rangers
|
68
|
-
Object.send(:remove_const, :Int4DefaultRanger)
|
69
|
-
end
|
70
|
-
|
71
|
-
describe '#create' do
|
72
|
-
it 'creates an record when there is no assignment' do
|
73
|
-
range = Int4DefaultRanger.create()
|
74
|
-
range.reload
|
75
|
-
range.best_estimate.should eq 0...6
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'creates an record with a range' do
|
79
|
-
range = Int4DefaultRanger.create( :best_estimate => 0..4)
|
80
|
-
range.reload
|
81
|
-
range.best_estimate.should eq 0...5
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Models with int8range columns' do
|
4
|
-
let!(:adapter) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'no default value, range' do
|
7
|
-
before do
|
8
|
-
adapter.create_table :int8_rangers, :force => true do |t|
|
9
|
-
t.int8range :best_estimate
|
10
|
-
end
|
11
|
-
class Int8Ranger < ActiveRecord::Base
|
12
|
-
attr_accessible :best_estimate
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
adapter.drop_table :int8_rangers
|
18
|
-
Object.send(:remove_const, :Int8Ranger)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#create' do
|
22
|
-
it 'creates an record when there is no assignment' do
|
23
|
-
range = Int8Ranger.create()
|
24
|
-
range.reload
|
25
|
-
range.best_estimate.should eq nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'creates an record with a range' do
|
29
|
-
range = Int8Ranger.create( :best_estimate => 0..4)
|
30
|
-
range.reload
|
31
|
-
range.best_estimate.should eq 0...5
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe 'range assignment' do
|
36
|
-
it 'updates an record with an range string' do
|
37
|
-
range = Int8Ranger.create( :best_estimate => 0..4)
|
38
|
-
range.best_estimate = 0...9
|
39
|
-
range.save
|
40
|
-
|
41
|
-
range.reload
|
42
|
-
range.best_estimate.should eq 0...9
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'converts empty strings to nil' do
|
46
|
-
range = Int8Ranger.create
|
47
|
-
range.best_estimate = ''
|
48
|
-
range.save
|
49
|
-
|
50
|
-
range.reload
|
51
|
-
range.best_estimate.should eq nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'default value, int8 range' do
|
57
|
-
before do
|
58
|
-
adapter.create_table :int8_default_rangers, :force => true do |t|
|
59
|
-
t.int8range :best_estimate, :default => 0..5
|
60
|
-
end
|
61
|
-
class Int8DefaultRanger < ActiveRecord::Base
|
62
|
-
attr_accessible :best_estimate
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
after do
|
67
|
-
adapter.drop_table :int8_default_rangers
|
68
|
-
Object.send(:remove_const, :Int8DefaultRanger)
|
69
|
-
end
|
70
|
-
|
71
|
-
describe '#create' do
|
72
|
-
it 'creates an record when there is no assignment' do
|
73
|
-
range = Int8DefaultRanger.create()
|
74
|
-
range.reload
|
75
|
-
range.best_estimate.should eq 0...6
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'creates an record with a range' do
|
79
|
-
range = Int8DefaultRanger.create( :best_estimate => 0..4)
|
80
|
-
range.reload
|
81
|
-
range.best_estimate.should eq 0...5
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|