fake_dynamo 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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