fruit_to_lime 2.5.2 → 2.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,4 +7,10 @@ module FruitToLime
7
7
 
8
8
  class InvalidRelationError < StandardError
9
9
  end
10
+
11
+ class InvalidValueError < StandardError
12
+ def initalize(value)
13
+ super("#{value} is not a valid value.")
14
+ end
15
+ end
10
16
  end
@@ -36,12 +36,12 @@ module FruitToLime
36
36
  # LIME Go before the import.
37
37
  attr_accessor :status
38
38
 
39
- attr_accessor :id, :integration_id, :name, :description, :probability, :value, :order_date
39
+ attr_accessor :id, :integration_id, :name, :description, :probability, :order_date
40
40
 
41
41
  # you add custom values by using {#set_custom_value}
42
42
  attr_reader :custom_values
43
43
 
44
- attr_reader :customer, :responsible_coworker, :customer_contact
44
+ attr_reader :customer, :responsible_coworker, :customer_contact, :value
45
45
 
46
46
  def serialize_variables
47
47
  [ :id, :integration_id, :name, :description, :probability, :value, :order_date ].map {
@@ -118,5 +118,28 @@ module FruitToLime
118
118
  def customer_contact=(person)
119
119
  @customer_contact = PersonReference.from_person(person)
120
120
  end
121
+
122
+ def value=(value)
123
+ # we have had some issues with LIME Easy imports where the
124
+ # value was in the format "357 000". We need to remove
125
+ # those spaces.
126
+ fixed_value = value.gsub(" ", "")
127
+
128
+ if is_integer?(fixed_value)
129
+ @value = fixed_value
130
+ elsif is_float?(fixed_value)
131
+ @value = fixed_value
132
+ else
133
+ raise InvalidValueError, value
134
+ end
135
+ end
136
+
137
+ def is_integer?(value)
138
+ true if Integer(value) rescue false
139
+ end
140
+
141
+ def is_float?(value)
142
+ true if Float(value) rescue false
143
+ end
121
144
  end
122
145
  end
data/spec/deal_spec.rb CHANGED
@@ -48,14 +48,55 @@ describe "Deal" do
48
48
  deal.customer_contact.is_a?(FruitToLime::PersonReference).should eq true
49
49
  end
50
50
 
51
- it "will fail on validation if name, responsible and customer is empty" do
51
+ it "will fail on validation if name and customer is empty" do
52
52
  # given, when
53
53
  deal.name = "The big deal"
54
54
  deal.customer = FruitToLime::Organization.new({:integration_id => "123", :name => "Lundalogik"})
55
- deal.responsible_coworker =
56
- FruitToLime::Coworker.new({ :integration_id => "456", :first_name => "Billy", :last_name => "Bob" })
57
55
 
58
56
  # then
59
57
  deal.validate.should eq ""
60
58
  end
59
+
60
+ it "should convert value strings that looks like number to number" do
61
+ # given
62
+ deal.name = "The deal with a strange value"
63
+
64
+ # when
65
+ deal.value = "357 000"
66
+
67
+ # then
68
+ deal.value.should eq "357000"
69
+ end
70
+
71
+ it "should raise invalidvalueerror if value is not a number" do
72
+ # given
73
+ deal.name = "The deal with an invalid value"
74
+
75
+ # when, then
76
+ expect {
77
+ deal.value = "Im not a number"
78
+ }.to raise_error(FruitToLime::InvalidValueError)
79
+ end
80
+
81
+ it "should set value if value is an integer" do
82
+ # given
83
+ deal.name = "The new deal"
84
+
85
+ # when
86
+ deal.value = "100"
87
+
88
+ # then
89
+ deal.value.should eq "100"
90
+ end
91
+
92
+ it "should set value if value is a float" do
93
+ # given
94
+ deal.name = "The new deal"
95
+
96
+ # when
97
+ deal.value = "100.10"
98
+
99
+ # then
100
+ deal.value.should eq "100.10"
101
+ end
61
102
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fruit_to_lime
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.2
4
+ version: 2.5.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-06-23 00:00:00.000000000 Z
15
+ date: 2014-06-24 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: iso_country_codes