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.
@@ -11,15 +11,19 @@ module FakeDynamo
11
11
 
12
12
  if ['NS', 'N'].include? @type
13
13
  Array(@value).each do |n|
14
- begin
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.to_i <=> other.value.to_i
46
+ @value.to_f <=> other.value.to_f
43
47
  else
44
48
  @value <=> other.value
45
49
  end
@@ -23,7 +23,7 @@ module FakeDynamo
23
23
  end
24
24
 
25
25
  if target_attribute.type == 'N'
26
- comparator.call(target_attribute.value.to_i, *value_attribute_list.map(&:value).map(&:to_i))
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
@@ -90,7 +90,12 @@ module FakeDynamo
90
90
  validate_type(value, old_attribute)
91
91
  case attribute.type
92
92
  when "N"
93
- old_attribute.value = (old_attribute.value.to_i + attribute.value.to_i).to_s
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!
@@ -1,3 +1,3 @@
1
1
  module FakeDynamo
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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.3
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: &70284887961460 !ruby/object:Gem::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: *70284887961460
24
+ version_requirements: *70102532152560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70284887960600 !ruby/object:Gem::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: *70284887960600
35
+ version_requirements: *70102532151680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70284887955400 !ruby/object:Gem::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: *70284887955400
46
+ version_requirements: *70102532146440
47
47
  description:
48
48
  email:
49
49
  - ananthakumaran@gmail.com