superstore 2.4.4 → 2.5.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 +5 -5
- data/.travis.yml +4 -6
- data/Gemfile +2 -3
- data/{Gemfile-rails4.2 → Gemfile.rails6} +2 -3
- data/README.md +4 -34
- data/lib/superstore.rb +17 -18
- data/lib/superstore/adapters/abstract_adapter.rb +1 -27
- data/lib/superstore/adapters/jsonb_adapter.rb +4 -132
- data/lib/superstore/associations.rb +6 -1
- data/lib/superstore/associations/association.rb +6 -0
- data/lib/superstore/associations/association_scope.rb +20 -0
- data/lib/superstore/associations/belongs_to.rb +3 -1
- data/lib/superstore/associations/has_many.rb +15 -2
- data/lib/superstore/associations/reflection.rb +8 -2
- data/lib/superstore/attribute_assignment.rb +7 -0
- data/lib/superstore/attribute_methods.rb +1 -109
- data/lib/superstore/attribute_methods/primary_key.rb +20 -11
- data/lib/superstore/attributes.rb +13 -0
- data/lib/superstore/base.rb +8 -33
- data/lib/superstore/core.rb +7 -65
- data/lib/superstore/model_schema.rb +35 -0
- data/lib/superstore/persistence.rb +31 -115
- data/lib/superstore/railtie.rb +3 -11
- data/lib/superstore/relation/scrolling.rb +48 -0
- data/lib/superstore/timestamp.rb +13 -0
- data/lib/superstore/types.rb +11 -9
- data/lib/superstore/types/array_type.rb +3 -7
- data/lib/superstore/types/boolean_type.rb +7 -12
- data/lib/superstore/types/date_range_type.rb +7 -0
- data/lib/superstore/types/date_type.rb +7 -10
- data/lib/superstore/types/float_type.rb +3 -11
- data/lib/superstore/types/geo_point_type.rb +30 -0
- data/lib/superstore/types/integer_range_type.rb +19 -0
- data/lib/superstore/types/integer_type.rb +8 -14
- data/lib/superstore/types/json_type.rb +1 -1
- data/lib/superstore/types/range_type.rb +51 -0
- data/lib/superstore/types/string_type.rb +4 -4
- data/lib/superstore/types/time_type.rb +10 -8
- data/superstore.gemspec +4 -3
- data/test/support/jsonb.rb +3 -1
- data/test/support/models.rb +8 -5
- data/test/test_helper.rb +6 -2
- data/test/unit/adapters/adapter_test.rb +1 -3
- data/test/unit/associations/belongs_to_test.rb +1 -1
- data/test/unit/associations/has_many_test.rb +10 -2
- data/test/unit/attribute_methods/dirty_test.rb +8 -19
- data/test/unit/attribute_methods/primary_key_test.rb +1 -1
- data/test/unit/attribute_methods_test.rb +10 -22
- data/test/unit/{attribute_methods/typecasting_test.rb → attributes_test.rb} +13 -39
- data/test/unit/base_test.rb +4 -0
- data/test/unit/caching_test.rb +1 -1
- data/test/unit/callbacks_test.rb +4 -4
- data/test/unit/core_test.rb +9 -19
- data/test/unit/persistence_test.rb +17 -54
- data/test/unit/{scope/batches_test.rb → relation/scrolling_test.rb} +9 -5
- data/test/unit/serialization_test.rb +10 -2
- data/test/unit/{timestamps_test.rb → timestamp_test.rb} +5 -5
- data/test/unit/types/array_type_test.rb +3 -18
- data/test/unit/types/boolean_type_test.rb +7 -21
- data/test/unit/types/date_range_type_test.rb +28 -0
- data/test/unit/types/date_type_test.rb +15 -6
- data/test/unit/types/float_type_test.rb +4 -19
- data/test/unit/types/geo_point_type_test.rb +24 -0
- data/test/unit/types/integer_range_type_test.rb +28 -0
- data/test/unit/types/integer_type_test.rb +7 -16
- data/test/unit/types/string_type_test.rb +9 -13
- data/test/unit/types/time_type_test.rb +17 -11
- data/test/unit/validations_test.rb +2 -2
- metadata +39 -39
- data/lib/superstore/attribute_methods/definition.rb +0 -17
- data/lib/superstore/attribute_methods/dirty.rb +0 -52
- data/lib/superstore/attribute_methods/typecasting.rb +0 -53
- data/lib/superstore/caching.rb +0 -13
- data/lib/superstore/callbacks.rb +0 -29
- data/lib/superstore/connection.rb +0 -24
- data/lib/superstore/errors.rb +0 -10
- data/lib/superstore/inspect.rb +0 -25
- data/lib/superstore/model.rb +0 -38
- data/lib/superstore/schema.rb +0 -20
- data/lib/superstore/scope.rb +0 -73
- data/lib/superstore/scope/batches.rb +0 -27
- data/lib/superstore/scope/finder_methods.rb +0 -51
- data/lib/superstore/scope/query_methods.rb +0 -52
- data/lib/superstore/scoping.rb +0 -30
- data/lib/superstore/timestamps.rb +0 -19
- data/lib/superstore/type.rb +0 -16
- data/lib/superstore/types/base_type.rb +0 -23
- data/lib/superstore/validations.rb +0 -44
- data/test/unit/attribute_methods/definition_test.rb +0 -16
- data/test/unit/inspect_test.rb +0 -26
- data/test/unit/schema_test.rb +0 -15
- data/test/unit/scope/finder_methods_test.rb +0 -62
- data/test/unit/scope/query_methods_test.rb +0 -37
- data/test/unit/scoping_test.rb +0 -7
- data/test/unit/types/base_type_test.rb +0 -11
data/test/unit/base_test.rb
CHANGED
data/test/unit/caching_test.rb
CHANGED
@@ -16,6 +16,6 @@ class Superstore::CachingTest < Superstore::TestCase
|
|
16
16
|
updated_at = Time.now
|
17
17
|
issue = Issue.create!(id: 1, updated_at: updated_at)
|
18
18
|
|
19
|
-
assert_equal "issues/1-#{updated_at.utc.to_s(:
|
19
|
+
assert_equal "issues/1-#{updated_at.utc.to_s(:usec)}", issue.cache_key
|
20
20
|
end
|
21
21
|
end
|
data/test/unit/callbacks_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
class Superstore::CallbacksTest < Superstore::TestCase
|
4
4
|
class TestIssue < Superstore::Base
|
5
5
|
self.table_name = 'issues'
|
6
|
-
|
6
|
+
attribute :description, type: :string
|
7
7
|
|
8
8
|
%w(
|
9
9
|
before_validation
|
@@ -35,8 +35,8 @@ class Superstore::CallbacksTest < Superstore::TestCase
|
|
35
35
|
before_validation
|
36
36
|
after_validation
|
37
37
|
before_save
|
38
|
-
after_save
|
39
38
|
after_create
|
39
|
+
after_save
|
40
40
|
)
|
41
41
|
assert_equal expected, issue.callback_history
|
42
42
|
end
|
@@ -47,7 +47,7 @@ class Superstore::CallbacksTest < Superstore::TestCase
|
|
47
47
|
|
48
48
|
issue.update_attribute :description, 'foo'
|
49
49
|
|
50
|
-
assert_equal %w(before_save after_save
|
50
|
+
assert_equal %w(before_save after_update after_save), issue.callback_history
|
51
51
|
end
|
52
52
|
|
53
53
|
test 'destroy' do
|
@@ -62,7 +62,7 @@ class Superstore::CallbacksTest < Superstore::TestCase
|
|
62
62
|
test 'new_record during callbacks' do
|
63
63
|
class NewRecordTestClass < Superstore::Base
|
64
64
|
self.table_name = 'issues'
|
65
|
-
|
65
|
+
attribute :description, type: :string
|
66
66
|
|
67
67
|
before_create :expect_new_record
|
68
68
|
before_save :expect_new_record
|
data/test/unit/core_test.rb
CHANGED
@@ -1,30 +1,13 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::CoreTest < Superstore::TestCase
|
4
|
-
test '
|
4
|
+
test 'initialize' do
|
5
5
|
issue = Issue.new
|
6
6
|
|
7
7
|
assert issue.new_record?
|
8
8
|
assert !issue.destroyed?
|
9
9
|
end
|
10
10
|
|
11
|
-
test 'initialize yields self' do
|
12
|
-
issue = Issue.new { |i| i.description = 'bar' }
|
13
|
-
assert_equal 'bar', issue.description
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'dup' do
|
17
|
-
issue = Issue.create description: 'foo'
|
18
|
-
|
19
|
-
dup_issue = issue.dup
|
20
|
-
|
21
|
-
assert dup_issue.new_record?
|
22
|
-
assert_not_equal issue.id, dup_issue.id
|
23
|
-
assert_nil dup_issue.created_at
|
24
|
-
assert_nil dup_issue.updated_at
|
25
|
-
assert_equal 'foo', issue.description
|
26
|
-
end
|
27
|
-
|
28
11
|
test 'equality of new records' do
|
29
12
|
assert_not_equal Issue.new, Issue.new
|
30
13
|
end
|
@@ -45,7 +28,14 @@ class Superstore::CoreTest < Superstore::TestCase
|
|
45
28
|
|
46
29
|
test 'hash' do
|
47
30
|
issue = Issue.create
|
48
|
-
|
31
|
+
issue2 = Issue.create
|
32
|
+
refute_equal issue.hash, issue2.hash
|
33
|
+
|
34
|
+
issue3 = Issue.new(id: issue.id)
|
35
|
+
assert_equal issue.hash, issue3.hash
|
36
|
+
|
37
|
+
user = User.new(id: issue.id)
|
38
|
+
refute_equal issue.hash, user.hash
|
49
39
|
end
|
50
40
|
|
51
41
|
test 'inspect' do
|
@@ -4,47 +4,8 @@
|
|
4
4
|
require 'test_helper'
|
5
5
|
|
6
6
|
class Superstore::PersistenceTest < Superstore::TestCase
|
7
|
-
test 'instantiate
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
test 'encode_attributes' do
|
12
|
-
klass = temp_object do
|
13
|
-
string :description
|
14
|
-
end
|
15
|
-
|
16
|
-
assert_equal(
|
17
|
-
{},
|
18
|
-
klass.encode_attributes({})
|
19
|
-
)
|
20
|
-
|
21
|
-
assert_equal(
|
22
|
-
{'description' => nil},
|
23
|
-
klass.encode_attributes({'description' => nil})
|
24
|
-
)
|
25
|
-
|
26
|
-
assert_equal(
|
27
|
-
{'description' => 'lol'},
|
28
|
-
klass.encode_attributes({'description' => 'lol'})
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
test "batch" do
|
33
|
-
first_issue = second_issue = nil
|
34
|
-
|
35
|
-
Issue.batch do
|
36
|
-
assert Issue.batching?
|
37
|
-
|
38
|
-
first_issue = Issue.create
|
39
|
-
second_issue = Issue.create
|
40
|
-
|
41
|
-
assert_raise(Superstore::RecordNotFound) { Issue.find(first_issue.id) }
|
42
|
-
assert_raise(Superstore::RecordNotFound) { Issue.find(second_issue.id) }
|
43
|
-
end
|
44
|
-
|
45
|
-
assert !Issue.batching?
|
46
|
-
assert_nothing_raised { Issue.find(first_issue.id) }
|
47
|
-
assert_nothing_raised { Issue.find(second_issue.id) }
|
7
|
+
test 'instantiate with unknowns' do
|
8
|
+
assert_equal 'nooo', Issue.instantiate('id' => 'theid', 'document' => {'z' => 'nooo'}.to_json).attributes['z']
|
48
9
|
end
|
49
10
|
|
50
11
|
test 'persistence inquiries' do
|
@@ -81,14 +42,14 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
81
42
|
|
82
43
|
test 'save!' do
|
83
44
|
klass = temp_object do
|
84
|
-
|
45
|
+
attribute :description, type: :string
|
85
46
|
validates :description, presence: true
|
86
47
|
end
|
87
48
|
|
88
49
|
record = klass.new(description: 'bad')
|
89
50
|
record.save!
|
90
51
|
|
91
|
-
assert_raise
|
52
|
+
assert_raise ActiveRecord::RecordInvalid do
|
92
53
|
record = klass.new
|
93
54
|
record.save!
|
94
55
|
end
|
@@ -126,7 +87,7 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
126
87
|
issue = Issue.new(description: 'bad')
|
127
88
|
issue.save!
|
128
89
|
|
129
|
-
assert_raise
|
90
|
+
assert_raise ActiveRecord::RecordInvalid do
|
130
91
|
issue.update! description: ''
|
131
92
|
end
|
132
93
|
ensure
|
@@ -151,7 +112,7 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
151
112
|
|
152
113
|
test 'becomes includes changed_attributes' do
|
153
114
|
klass = temp_object do
|
154
|
-
|
115
|
+
attribute :title, type: :string
|
155
116
|
end
|
156
117
|
|
157
118
|
issue = Issue.new(title: 'Something is wrong')
|
@@ -171,14 +132,9 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
171
132
|
assert_equal persisted_issue, reloaded_issue
|
172
133
|
end
|
173
134
|
|
174
|
-
test 'quote_columns' do
|
175
|
-
klass = Class.new { include Superstore::Persistence }
|
176
|
-
assert_equal %w{'a' 'b'}, klass.__send__(:quote_columns, %w{a b})
|
177
|
-
end
|
178
|
-
|
179
135
|
test 'delete' do
|
180
136
|
klass = temp_object do
|
181
|
-
|
137
|
+
attribute :name, type: :string
|
182
138
|
end
|
183
139
|
|
184
140
|
record = klass.new(name: 'cool')
|
@@ -189,14 +145,14 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
189
145
|
|
190
146
|
klass.delete(id)
|
191
147
|
|
192
|
-
assert_raise
|
148
|
+
assert_raise ActiveRecord::RecordNotFound do
|
193
149
|
klass.find(id)
|
194
150
|
end
|
195
151
|
end
|
196
152
|
|
197
153
|
test 'delete multiple' do
|
198
154
|
klass = temp_object do
|
199
|
-
|
155
|
+
attribute :name, type: :string
|
200
156
|
end
|
201
157
|
|
202
158
|
ids = []
|
@@ -207,7 +163,14 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
207
163
|
|
208
164
|
klass.delete(ids)
|
209
165
|
|
210
|
-
assert_equal [], klass.
|
166
|
+
assert_equal [], klass.where(id: ids)
|
211
167
|
end
|
212
168
|
|
169
|
+
test 'find_by_id' do
|
170
|
+
Issue.create.tap do |issue|
|
171
|
+
assert_equal issue, Issue.find_by_id(issue.id)
|
172
|
+
end
|
173
|
+
|
174
|
+
assert_nil Issue.find_by_id('what')
|
175
|
+
end
|
213
176
|
end
|
@@ -1,25 +1,29 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class Superstore::
|
4
|
-
|
3
|
+
class Superstore::ScrollingTest < Superstore::TestCase
|
4
|
+
ActiveRecord::Relation.class_eval do
|
5
|
+
include Superstore::Relation::Scrolling
|
6
|
+
end
|
7
|
+
|
8
|
+
test 'scroll_each' do
|
5
9
|
Issue.create
|
6
10
|
Issue.create
|
7
11
|
|
8
12
|
issues = []
|
9
|
-
Issue.
|
13
|
+
Issue.all.scroll_each do |issue|
|
10
14
|
issues << issue
|
11
15
|
end
|
12
16
|
|
13
17
|
assert_equal Issue.all.to_set, issues.to_set
|
14
18
|
end
|
15
19
|
|
16
|
-
test '
|
20
|
+
test 'scroll_in_batches' do
|
17
21
|
Issue.create
|
18
22
|
Issue.create
|
19
23
|
Issue.create
|
20
24
|
|
21
25
|
issue_batches = []
|
22
|
-
Issue.
|
26
|
+
Issue.all.scroll_in_batches(batch_size: 2) do |issues|
|
23
27
|
issue_batches << issues
|
24
28
|
end
|
25
29
|
|
@@ -3,8 +3,16 @@ require 'test_helper'
|
|
3
3
|
class Superstore::SerializationTest < Superstore::TestCase
|
4
4
|
test 'as_json' do
|
5
5
|
issue = Issue.new
|
6
|
-
expected = {
|
6
|
+
expected = {
|
7
|
+
"id" => issue.id,
|
8
|
+
"created_at" => nil,
|
9
|
+
"updated_at" => nil,
|
10
|
+
"description" => nil,
|
11
|
+
"title" => nil,
|
12
|
+
"parent_issue_id" => nil,
|
13
|
+
"comments" => nil
|
14
|
+
}
|
7
15
|
|
8
16
|
assert_equal expected, issue.as_json
|
9
17
|
end
|
10
|
-
end
|
18
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class Superstore::
|
3
|
+
class Superstore::TimestampTest < Superstore::TestCase
|
4
4
|
test 'timestamps set on create' do
|
5
|
-
issue = Issue.create
|
5
|
+
issue = Issue.create#issue.created_at.to_i = #{issue.created_at.to_i}
|
6
6
|
|
7
7
|
assert_in_delta Time.now.to_i, issue.created_at.to_i, 3
|
8
8
|
assert_in_delta Time.now.to_i, issue.updated_at.to_i, 3
|
@@ -30,13 +30,13 @@ class Superstore::TimestampsTest < Superstore::TestCase
|
|
30
30
|
time = 5.days.ago
|
31
31
|
issue = Issue.create created_at: time
|
32
32
|
|
33
|
-
|
33
|
+
assert_in_delta time.to_i, issue.created_at.to_i, 3
|
34
34
|
end
|
35
35
|
|
36
36
|
test 'updated_at sets only if nil' do
|
37
|
-
time = 5.days.ago
|
37
|
+
time = 5.days.ago.utc
|
38
38
|
issue = Issue.create updated_at: time
|
39
39
|
|
40
|
-
|
40
|
+
assert_in_delta time.to_i, issue.updated_at.to_i, 3
|
41
41
|
end
|
42
42
|
end
|
@@ -1,23 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::ArrayTypeTest < Superstore::Types::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
assert_raise ArgumentError do
|
9
|
-
type.encode('wtf')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
test 'decode' do
|
14
|
-
assert_equal ['1', '2'], type.decode(['1', '2'].to_json)
|
15
|
-
assert_equal nil, type.decode(nil)
|
16
|
-
assert_equal nil, type.decode('')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'typecast' do
|
21
|
-
assert_equal ['x', 'y'], type.typecast(['x', 'y'].to_set)
|
4
|
+
test 'cast_value' do
|
5
|
+
assert_equal ['x', 'y'], type.cast_value(['x', 'y'].to_set)
|
6
|
+
assert_equal ['x'], type.cast_value('x')
|
22
7
|
end
|
23
8
|
end
|
@@ -1,26 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::BooleanTypeTest < Superstore::Types::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
assert_equal '0', type.encode('false')
|
12
|
-
assert_equal '0', type.encode('0')
|
13
|
-
assert_equal '0', type.encode('')
|
14
|
-
|
15
|
-
assert_raise ArgumentError do
|
16
|
-
type.encode('wtf')
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
test 'decode' do
|
22
|
-
assert_equal true, type.decode('1')
|
23
|
-
assert_equal false, type.decode('0')
|
24
|
-
# assert_nil type.decode(nil)
|
4
|
+
test 'cast_value' do
|
5
|
+
assert_equal true, type.cast_value('1')
|
6
|
+
assert_equal true, type.cast_value('true')
|
7
|
+
assert_equal true, type.cast_value('true')
|
8
|
+
assert_equal false, type.cast_value('0')
|
9
|
+
assert_equal false, type.cast_value(false)
|
10
|
+
assert_nil type.cast_value('')
|
25
11
|
end
|
26
12
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Superstore::Types::DateRangeTypeTest < Superstore::Types::TestCase
|
4
|
+
test 'serialize' do
|
5
|
+
assert_equal ["2004-04-25", "2004-05-15"], type.serialize(Date.new(2004, 4, 25) .. Date.new(2004, 5, 15))
|
6
|
+
end
|
7
|
+
|
8
|
+
test 'deserialize' do
|
9
|
+
assert_equal Date.new(2004, 4, 25)..Date.new(2004, 5, 15), type.deserialize(["2004-04-25", "2004-05-15"])
|
10
|
+
assert_nil type.deserialize(["2004-05-15", "2004-04-25"])
|
11
|
+
|
12
|
+
# decode returns argument if already a Range
|
13
|
+
range = Date.new(2019, 1, 1)..Date.new(2019, 2, 1)
|
14
|
+
assert_equal range, type.deserialize(range)
|
15
|
+
end
|
16
|
+
|
17
|
+
test 'cast_value' do
|
18
|
+
assert_equal Date.new(2004, 4, 25)..Date.new(2004, 5, 15), type.cast_value(Date.new(2004, 4, 25)..Date.new(2004, 5, 15))
|
19
|
+
assert_nil type.cast_value(Date.new(2004, 5, 15)..Date.new(2004, 4, 25))
|
20
|
+
assert_equal Date.new(2004, 4, 25)..Date.new(2004, 5, 15), type.cast_value([Date.new(2004, 4, 25), Date.new(2004, 5, 15)])
|
21
|
+
assert_nil type.cast_value([Date.new(2004, 5, 15), Date.new(2004, 4, 25)])
|
22
|
+
assert_equal Date.new(2004, 4, 25)..Date.new(2004, 5, 15), type.cast_value(["2004-04-25", "2004-05-15"])
|
23
|
+
|
24
|
+
assert_nil type.cast_value(["2004-04-25", nil])
|
25
|
+
assert_nil type.cast_value([nil, "2004-05-15"])
|
26
|
+
assert_nil type.cast_value(["xx", "2004-05-15"])
|
27
|
+
end
|
28
|
+
end
|
@@ -1,15 +1,24 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::DateTypeTest < Superstore::Types::TestCase
|
4
|
-
test '
|
5
|
-
assert_equal '2004-04-25', type.
|
4
|
+
test 'serialize' do
|
5
|
+
assert_equal '2004-04-25', type.serialize(Date.new(2004, 4, 25))
|
6
6
|
end
|
7
7
|
|
8
|
-
test '
|
9
|
-
assert_equal Date.new(2004, 4, 25), type.
|
8
|
+
test 'deserialize' do
|
9
|
+
assert_equal Date.new(2004, 4, 25), type.deserialize('2004-04-25')
|
10
10
|
end
|
11
11
|
|
12
|
-
test '
|
13
|
-
assert_nil type.
|
12
|
+
test 'cast_value' do
|
13
|
+
assert_nil type.cast_value(1000)
|
14
|
+
assert_nil type.cast_value(1000.0)
|
15
|
+
assert_nil type.cast_value('')
|
16
|
+
assert_nil type.cast_value('nil')
|
17
|
+
assert_nil type.cast_value('bad format')
|
18
|
+
assert_equal Date.new(2004, 4, 25), type.cast_value('2004-04-25')
|
19
|
+
assert_equal Date.new(2017, 5, 1), type.cast_value('2017-05-01T21:39:06.796897Z')
|
20
|
+
|
21
|
+
my_time = Time.current
|
22
|
+
assert_equal my_time.to_date, type.cast_value(my_time)
|
14
23
|
end
|
15
24
|
end
|
@@ -1,24 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::FloatTypeTest < Superstore::Types::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
assert_raise ArgumentError do
|
9
|
-
type.encode('x')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
test 'decode' do
|
15
|
-
assert_equal 0.0, type.decode('xyz')
|
16
|
-
assert_equal 3.14, type.decode('3.14')
|
17
|
-
assert_equal 5, type.decode('5')
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'typecast' do
|
21
|
-
assert_equal 1.1, type.typecast('1.1')
|
22
|
-
assert_equal 42.0, type.typecast(42)
|
4
|
+
test 'cast_value' do
|
5
|
+
assert_nil type.cast_value('xyz')
|
6
|
+
assert_equal 1.1, type.cast_value('1.1')
|
7
|
+
assert_equal 42.0, type.cast_value(42)
|
23
8
|
end
|
24
9
|
end
|