fake_dynamo 0.0.3 → 0.0.4
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.
- data/lib/fake_dynamo/attribute.rb +10 -6
- data/lib/fake_dynamo/filter.rb +1 -1
- data/lib/fake_dynamo/item.rb +6 -1
- data/lib/fake_dynamo/version.rb +1 -1
- data/spec/fake_dynamo/table_spec.rb +18 -0
- metadata +7 -7
@@ -11,15 +11,19 @@ module FakeDynamo
|
|
11
11
|
|
12
12
|
if ['NS', 'N'].include? @type
|
13
13
|
Array(@value).each do |n|
|
14
|
-
|
15
|
-
Integer(n)
|
16
|
-
rescue
|
17
|
-
raise ValidationException, "The parameter cannot be converted to a numeric value: #{n}"
|
18
|
-
end
|
14
|
+
numeric(n)
|
19
15
|
end
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
19
|
+
def numeric(n)
|
20
|
+
begin
|
21
|
+
Float(n)
|
22
|
+
rescue
|
23
|
+
raise ValidationException, "The parameter cannot be converted to a numeric value: #{n}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
23
27
|
def description
|
24
28
|
{
|
25
29
|
'AttributeName' => name,
|
@@ -39,7 +43,7 @@ module FakeDynamo
|
|
39
43
|
|
40
44
|
def <=>(other)
|
41
45
|
if @type == 'N'
|
42
|
-
@value.
|
46
|
+
@value.to_f <=> other.value.to_f
|
43
47
|
else
|
44
48
|
@value <=> other.value
|
45
49
|
end
|
data/lib/fake_dynamo/filter.rb
CHANGED
@@ -23,7 +23,7 @@ module FakeDynamo
|
|
23
23
|
end
|
24
24
|
|
25
25
|
if target_attribute.type == 'N'
|
26
|
-
comparator.call(target_attribute.value.
|
26
|
+
comparator.call(target_attribute.value.to_f, *value_attribute_list.map(&:value).map(&:to_f))
|
27
27
|
else
|
28
28
|
comparator.call(target_attribute.value, *value_attribute_list.map(&:value))
|
29
29
|
end
|
data/lib/fake_dynamo/item.rb
CHANGED
@@ -90,7 +90,12 @@ module FakeDynamo
|
|
90
90
|
validate_type(value, old_attribute)
|
91
91
|
case attribute.type
|
92
92
|
when "N"
|
93
|
-
|
93
|
+
new_value = (old_attribute.value.to_f + attribute.value.to_f)
|
94
|
+
if new_value.truncate == new_value
|
95
|
+
new_value = new_value.truncate
|
96
|
+
end
|
97
|
+
|
98
|
+
old_attribute.value = new_value.to_s
|
94
99
|
else
|
95
100
|
old_attribute.value += attribute.value
|
96
101
|
old_attribute.value.uniq!
|
data/lib/fake_dynamo/version.rb
CHANGED
@@ -91,6 +91,24 @@ module FakeDynamo
|
|
91
91
|
end.to raise_error(ValidationException, /numeric/)
|
92
92
|
end
|
93
93
|
|
94
|
+
it 'should handle float values' do
|
95
|
+
subject.put_item({ 'TableName' => 'Table1',
|
96
|
+
'Item' => {
|
97
|
+
'AttributeName1' => { 'S' => "test" },
|
98
|
+
'AttributeName2' => { 'N' => "3" },
|
99
|
+
'AttributeName3' => { 'N' => "4.44444" }
|
100
|
+
}})
|
101
|
+
response = subject.get_item({'TableName' => 'Table1',
|
102
|
+
'Key' => {
|
103
|
+
'HashKeyElement' => { 'S' => 'test' },
|
104
|
+
'RangeKeyElement' => { 'N' => '3' }
|
105
|
+
}})
|
106
|
+
|
107
|
+
response['Item']['AttributeName3'].should eq('N' => '4.44444')
|
108
|
+
|
109
|
+
|
110
|
+
end
|
111
|
+
|
94
112
|
it 'should fail if range key is not present' do
|
95
113
|
expect do
|
96
114
|
subject.put_item({ 'TableName' => 'Table1',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fake_dynamo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70102532152560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70102532152560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &70102532151680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70102532151680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &70102532146440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70102532146440
|
47
47
|
description:
|
48
48
|
email:
|
49
49
|
- ananthakumaran@gmail.com
|