postgres_ext 1.0.0 → 2.0.0
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/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
|