go_import 3.0.23 → 3.0.24

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzczNzgyNTkzYzM5MjhkZjk1YjExNDFhMDc4M2U3NzRlMGU2YTI2Nw==
4
+ MjljMjUyMzQwNGM4OTg4ZDQxMmExN2VhYmNlYTYwNTEyMzI2MDhkOQ==
5
5
  data.tar.gz: !binary |-
6
- ZmQwZjAyMGJkMzNmZWZjOTE3MDM2ZWRmMDgyNTQ4MGExMTFlYzcxYQ==
6
+ OWQ5Njk2Mjk1MjY3MTUxN2JkMjdlMGM1ZmM1YTc5OGVlYTNkMjIxMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2I4Zjk5MmExODRlY2ExMWQ3YmM0ZDNkM2RhYzg5YTFhMjEyNzZjYjg2M2Mx
10
- ODExMjdhNjU3OWFmMTQwYjA2OGJkOWRhNjY4YTlkMDRhZmI3N2I5ZGFiYWMy
11
- OGQ5N2Y3M2ZiODc3OTFjZjNmMGMyZjkyZGYzYzJmY2ZiNGUyZjI=
9
+ OWU0MWU0MjQwN2QyOGZiN2U5MTI3NjhlMmIxOWFlYWFjZDUzZTkyNjZhZDE2
10
+ MGZjYzYwNDRhZDAyNGMzNWFmY2NiOTI5ODg1YzgwODdkZTQ0Y2MzZDllMjAx
11
+ NmE1YTI1ZWFiNmIxNjRiY2M2YzYzZTBiYjEwMjRjYTI5NzViNjY=
12
12
  data.tar.gz: !binary |-
13
- ZmZlODEzYWQxZmU1NjAxYWQ5OTdjYmRmMTQ1MTAzOGQxYWI3OGIyNWVlMDEx
14
- ZmRhZjYwODMzZDYzMmM1NzM5Zjc3Nzk3ZjQyYWI3OTUyYTRiOTk4NWE5YjMz
15
- ZDcxNWMzZDcwZTNlYmM2NmY2ZmMzODdmYzUxZGIzMDE4NjhmYzk=
13
+ OTJjYjk5NmVhMDllZDZhNTFjN2EyM2FhYTk4NjUxMTdmZGRkZjQwMTVkNGEz
14
+ YmQ2Mjk2ZWUyNjMzZDM0N2UxNDA0MGExMWVlZjJkMGUzMmUwNjA5ZGY4NDdl
15
+ NWNhYWFjNDllYWRkYThjNmJjNGQwMGNjZDlmNzFiODlhNDk5NTQ=
@@ -161,6 +161,10 @@ module GoImport
161
161
  end
162
162
  end
163
163
 
164
+ # Sets the deal's value. Both . and , are treated as thousand
165
+ # separators and thus cents and other fractions will be
166
+ # ignored. This makes it easier for us to convert a string
167
+ # into an integer value.
164
168
  def value=(value)
165
169
  if value.nil?
166
170
  @value = "0"
@@ -172,10 +176,15 @@ module GoImport
172
176
  # remove those spaces.
173
177
  fixed_value = value.gsub(" ", "")
174
178
 
179
+ # we assume that both , and . are thousand separators
180
+ # and remove them from the value string. We dont care
181
+ # about decimal separators since the value is a deal's
182
+ # value which is much larger than cents and ores.
183
+ fixed_value = fixed_value.gsub(",", "")
184
+ fixed_value = fixed_value.gsub(".", "")
185
+
175
186
  if is_integer?(fixed_value)
176
187
  @value = fixed_value
177
- elsif is_float?(fixed_value)
178
- @value = fixed_value
179
188
  elsif fixed_value.length == 0
180
189
  @value = "0"
181
190
  else
@@ -187,9 +196,5 @@ module GoImport
187
196
  def is_integer?(value)
188
197
  true if Integer(value) rescue false
189
198
  end
190
-
191
- def is_float?(value)
192
- true if Float(value) rescue false
193
- end
194
199
  end
195
200
  end
@@ -1,8 +1,9 @@
1
1
  module GoImport
2
2
  class Note
3
3
  include SerializeHelper
4
- attr_accessor :id, :text, :integration_id, :date
4
+ attr_accessor :id, :integration_id, :date
5
5
 
6
+ attr_reader :text
6
7
  attr_reader :organization, :created_by, :person, :deal
7
8
 
8
9
  # The note's classification. It should be a value from
@@ -92,6 +93,29 @@ module GoImport
92
93
 
93
94
  end
94
95
 
96
+ def text=(text)
97
+ @text = text
98
+
99
+ if @text.nil?
100
+ return
101
+ end
102
+
103
+ if @text.length == 0
104
+ return
105
+ end
106
+
107
+ @text.strip!
108
+
109
+ # remove form feeds
110
+ @text.gsub!("\f", "")
111
+
112
+ # remove vertical spaces
113
+ @text.gsub!("\v", "")
114
+
115
+ # remove backspace
116
+ @text.gsub!("\b", "")
117
+ end
118
+
95
119
  def validate
96
120
  error = String.new
97
121
 
@@ -2,23 +2,28 @@ module GoImport
2
2
  module ModelHasCustomFields
3
3
  # @example
4
4
  # value = row['business_value_partner_info']
5
- # obj.set_custom_value("partner_info", value)
5
+ # obj.set_custom_value("external_url", "https://www.somecompany.com")
6
6
  def set_custom_value(integration_id, value)
7
- return set_custom_field({integration_id: integration_id, value: value})
8
- end
9
- # @example
10
- # value = row['business_value_partner_info']
11
- # obj.set_custom_field({:integration_id=>"partner_info", :value=>value})
12
- def set_custom_field(obj)
13
7
  @custom_values = [] if @custom_values == nil
14
- value = obj[:value]
15
- field = CustomFieldReference.new(obj)
8
+
9
+ if value.nil?
10
+ return
11
+ end
12
+
13
+ valueAsString = value.to_s
14
+ if valueAsString.length == 0
15
+ return
16
+ end
17
+
18
+ field = CustomFieldReference.new({:integration_id => integration_id})
16
19
  custom_value = CustomValue.new
17
- custom_value.value = value
20
+ custom_value.value = valueAsString
18
21
  custom_value.field = field
22
+
19
23
  index = @custom_values.find_index do |custom_value|
20
24
  custom_value.field.same_as?(field)
21
25
  end
26
+
22
27
  if index
23
28
  @custom_values.delete_at index
24
29
  end
@@ -79,7 +79,7 @@ class Converter
79
79
  organization.relation = GoImport::Relation::IsACustomer
80
80
 
81
81
  #Fill data to custom fields
82
- organization.set_custom_field({:integration_id => "ackoms", :value => row["ACKOMS"]})
82
+ organization.set_custom_value("ackoms", row["ACKOMS"])
83
83
 
84
84
  return organization
85
85
  end
@@ -222,6 +222,8 @@ class Converter
222
222
  # the configure method.
223
223
 
224
224
  # person.set_custom_value("shoe_size", row['shoe size'])
225
+
226
+ return person
225
227
  end
226
228
 
227
229
  # Reads a row from the Easy exported Project.txt
@@ -280,16 +282,16 @@ class Converter
280
282
 
281
283
  # case activity
282
284
  # when 'SalesCall'
283
- # classification = GoImport::NoteClassification::SalesCall
284
- # when 'Customer Visit'
285
- # classification = GoImport::NoteClassification::ClientVisit
286
- # when 'No answer'
287
- # classification = GoImport::NoteClassification::TriedToReach
285
+ # classification = GoImport::NoteClassification::SalesCall
286
+ # when 'Customer Visit'
287
+ # classification = GoImport::NoteClassification::ClientVisit
288
+ # when 'No answer'
289
+ # classification = GoImport::NoteClassification::TriedToReach
288
290
  # else
289
291
  # classification = GoImport::NoteClassification::Comment
290
292
  # end
291
-
292
- # return classification
293
+
294
+ # return classification
293
295
  end
294
296
 
295
297
  def get_note_classification_for_activity_on_project(activity)
@@ -303,14 +305,14 @@ class Converter
303
305
 
304
306
  # case activity
305
307
  # when 'Installation'
306
- # classification = GoImport::NoteClassification::ClientVisit
307
- # when 'No answer'
308
- # classification = GoImport::NoteClassification::TriedToReach
308
+ # classification = GoImport::NoteClassification::ClientVisit
309
+ # when 'No answer'
310
+ # classification = GoImport::NoteClassification::TriedToReach
309
311
  # else
310
312
  # classification = GoImport::NoteClassification::Comment
311
313
  # end
312
-
313
- # return classification
314
+
315
+ # return classification
314
316
  end
315
317
 
316
318
  def configure(rootmodel)
@@ -286,16 +286,18 @@ def to_note(row, rootmodel)
286
286
  return note
287
287
  end
288
288
 
289
- def get_deal_statuses_from_opportunites()
290
- puts "Trying to get deal statuses..."
291
- statuses = []
289
+ def add_opportunity_stages_as_deal_status_to_model(rootmodel)
290
+ puts "Trying to create deal statuses..."
292
291
 
292
+ default_status = ''
293
+ statuses = []
293
294
  process_rows(DEAL_FILE) do |row|
294
295
  status = {
295
296
  :label => row['StageName'],
296
297
  :integration_id => row['StageName'],
298
+ :sort_order => row['StageSortOrder']
297
299
  }
298
-
300
+
299
301
  if row['IsClosed'] == '1'
300
302
  if row['IsWon'] == '1'
301
303
  status[:assessment] = GoImport::DealState::PositiveEndState
@@ -306,10 +308,24 @@ def get_deal_statuses_from_opportunites()
306
308
 
307
309
  if !statuses.any? {|s| s[:label] == status[:label]}
308
310
  statuses.push status
311
+
312
+ if row['StageSortOrder'] == '1'
313
+ default_status = status[:label]
314
+ end
309
315
  end
310
316
  end
311
317
 
312
- return statuses
318
+ statuses.sort! { |s1, s2| s1[:sort_order] <=> s2[:sort_order] }
319
+ rootmodel.settings.with_deal do |deal|
320
+ statuses.each do |status|
321
+ deal.add_status({ :label => status[:label],
322
+ :integration_id => status[:integration_id],
323
+ :assessment => status[:assessment]
324
+ })
325
+ end
326
+
327
+ deal.default_status = default_status
328
+ end
313
329
  end
314
330
 
315
331
  def convert_source
@@ -345,17 +361,8 @@ def convert_source
345
361
  end
346
362
  end
347
363
  end
348
-
349
- deal_statuses = get_deal_statuses_from_opportunites()
350
- rootmodel.settings.with_deal do |deal|
351
- deal_statuses.each do |status|
352
- deal.add_status({ :label => status[:label],
353
- :integration_id => status[:integration_id],
354
- :assessment => status[:assessment]
355
- })
356
- end
357
- end
358
-
364
+
365
+ add_opportunity_stages_as_deal_status_to_model(rootmodel)
359
366
 
360
367
  puts "Trying to import users..."
361
368
  process_rows(USER_FILE) do |row|
data/spec/deal_spec.rb CHANGED
@@ -144,15 +144,26 @@ describe "Deal" do
144
144
  deal.value.should eq "100"
145
145
  end
146
146
 
147
- it "should set value if value is a float" do
147
+ it "should treat . as thousand separator and remove it from the value" do
148
148
  # given
149
- deal.name = "The new deal"
149
+ deal.name = "Deal with . as thousand separator"
150
150
 
151
151
  # when
152
152
  deal.value = "100.10"
153
153
 
154
154
  # then
155
- deal.value.should eq "100.10"
155
+ deal.value.should eq "10010"
156
+ end
157
+
158
+ it "should tread , as thousand separator and remove it from the value" do
159
+ # given
160
+ deal.name = "Deal with , as thousand separator"
161
+
162
+ # when
163
+ deal.value = "100,10"
164
+
165
+ # then
166
+ deal.value = "10010"
156
167
  end
157
168
 
158
169
  it "should set value to 0 if value is nil" do
@@ -70,7 +70,7 @@ describe GoImport::SerializeHelper do
70
70
  p.with_source do |source|
71
71
  source.par_se('122345')
72
72
  end
73
- #p.source_ref = {:name=>'Go',:id=>"PASE122345"}
73
+ #p.source_ref = {:name => 'Go',:id => "PASE122345"}
74
74
  p.with_postal_address do |addr|
75
75
  addr.city = "Ankeborg"
76
76
  end
@@ -78,9 +78,12 @@ describe GoImport::SerializeHelper do
78
78
  p.set_tag("tag:anka")
79
79
  p.set_tag("tag:Bj\u{00F6}rk")
80
80
  p.set_tag("tag:<Bj\u{00F6}rk>")
81
- p.set_custom_field({:integration_id=>"2", :value=>"cf value"})
82
- p.set_custom_field({:integration_id=>"3", :value=>"cf Bj\u{00F6}rk"})
83
- p.set_custom_field({:integration_id=>"4", :value=>"cf <Bj\u{00F6}rk>"})
81
+ # p.set_custom_field({:integration_id => "2", :value => "cf value"})
82
+ # p.set_custom_field({:integration_id => "3", :value => "cf Bj\u{00F6}rk"})
83
+ # p.set_custom_field({:integration_id => "4", :value => "cf <Bj\u{00F6}rk>"})
84
+ p.set_custom_value("2", "cf value")
85
+ p.set_custom_value("3", "cf Bj\u{00F6}rk")
86
+ p.set_custom_value("4", "cf <Bj\u{00F6}rk>")
84
87
  GoImport::SerializeHelper::serialize(p,-1)
85
88
  }
86
89
  it "should contain first and last name" do
@@ -120,29 +123,30 @@ describe GoImport::SerializeHelper do
120
123
  end
121
124
  describe "Serialize organization" do
122
125
  let(:serialized) {
123
- o = GoImport::Organization.new
124
- o.name = "Ankeborgs bibliotek"
125
- o.with_source do |source|
126
+ organization = GoImport::Organization.new
127
+ organization.name = "Ankeborgs bibliotek"
128
+ organization.with_source do |source|
126
129
  source.par_se('122345')
127
130
  end
128
- #o.source_ref = {:name=>'Go',:id=>"PASE122345"}
129
- o.set_tag("tag:bibliotek")
130
- o.set_tag("tag:Bj\u{00F6}rk")
131
- o.set_custom_field({:integration_id=>"2", :value=>"cf value"})
132
- o.set_custom_field({:integration_id=>"3", :value=>"cf Bj\u{00F6}rk"})
133
- o.with_postal_address do |addr|
131
+ #organization.source_ref = {:name => 'Go',:id => "PASE122345"}
132
+ organization.set_tag("tag:bibliotek")
133
+ organization.set_tag("tag:Bj\u{00F6}rk")
134
+ organization.set_custom_value("2", "cf value")
135
+ organization.set_custom_value("3", "cf Bj\u{00F6}rk")
136
+ organization.with_postal_address do |addr|
134
137
  addr.city = "Ankeborg"
135
138
  end
136
- o.with_visit_address do |addr|
139
+ organization.with_visit_address do |addr|
137
140
  addr.city = "Gaaseborg"
138
141
  end
139
- o.add_employee({
142
+ organization.add_employee({
140
143
  :integration_id => "1",
141
144
  :first_name => "Kalle",
142
145
  :last_name => "Anka"
143
146
  })
144
- GoImport::SerializeHelper::serialize(o,-1)
147
+ GoImport::SerializeHelper::serialize(organization, -1)
145
148
  }
149
+
146
150
  it "should contain name" do
147
151
  serialized.should match(/Ankeborgs bibliotek/)
148
152
  end
@@ -177,11 +181,11 @@ describe GoImport::SerializeHelper do
177
181
 
178
182
  describe "Serialize goimport" do
179
183
  let(:serialized) {
180
- i = GoImport::RootModel.new
181
- o = GoImport::Organization.new
182
- o.name = "Ankeborgs bibliotek"
183
- i.organizations.push(o)
184
- GoImport::SerializeHelper::serialize(i,-1)
184
+ rootmodel = GoImport::RootModel.new
185
+ organization = GoImport::Organization.new
186
+ organization.name = "Ankeborgs bibliotek"
187
+ rootmodel.add_organization organization
188
+ GoImport::SerializeHelper::serialize(rootmodel, -1)
185
189
  }
186
190
  it "should contain name" do
187
191
  serialized.should match(/Ankeborgs bibliotek/)
@@ -197,30 +201,30 @@ describe GoImport::SerializeHelper do
197
201
  describe "for person" do
198
202
  let(:import_rows) { GoImport::Person.new.get_import_rows }
199
203
  it "should contain integration id" do
200
- import_rows.should include({:id=>'integration_id', :name=>'Integration id', :type=>:string})
201
- import_rows.should include({:id=>'id', :name=>'Go id', :type=>:string})
204
+ import_rows.should include({:id => 'integration_id', :name => 'Integration id', :type => :string})
205
+ import_rows.should include({:id => 'id', :name => 'Go id', :type => :string})
202
206
  end
203
207
  it "should contain address" do
204
- expected = {:id=>'postal_address', :name=>'Postal address', :type=>:address,
205
- :model=>[
206
- {:id=>'street',:name=>'Street', :type=>:string},
207
- {:id=>'zip_code',:name=>'Zip code', :type=>:string},
208
- {:id=>'city',:name=>'City', :type=>:string},
209
- {:id=>'country_code',:name=>'Country code', :type=>:string},
210
- {:id=>'location',:name=>'Location', :type=>:string},
211
- {:id=>'country_name',:name=>'Country name', :type=>:string},
208
+ expected = {:id => 'postal_address', :name => 'Postal address', :type => :address,
209
+ :model => [
210
+ {:id => 'street',:name => 'Street', :type => :string},
211
+ {:id => 'zip_code',:name => 'Zip code', :type => :string},
212
+ {:id => 'city',:name => 'City', :type => :string},
213
+ {:id => 'country_code',:name => 'Country code', :type => :string},
214
+ {:id => 'location',:name => 'Location', :type => :string},
215
+ {:id => 'country_name',:name => 'Country name', :type => :string},
212
216
  ]}
213
217
  import_rows.should include(expected)
214
218
  end
215
219
  it "should contain organization" do
216
220
  import_rows.should include({
217
- :id=>'organization',
218
- :name=>'Organization',
219
- :type=>:organization_reference,
220
- :model=>[
221
- {:id=>'id', :name=>'Go id', :type=>:string},
222
- {:id=>'integration_id', :name=>'Integration id', :type=>:string},
223
- {:id=>'heading', :name=>'Heading', :type=>:string}
221
+ :id => 'organization',
222
+ :name => 'Organization',
223
+ :type => :organization_reference,
224
+ :model => [
225
+ {:id => 'id', :name => 'Go id', :type => :string},
226
+ {:id => 'integration_id', :name => 'Integration id', :type => :string},
227
+ {:id => 'heading', :name => 'Heading', :type => :string}
224
228
  ]
225
229
  })
226
230
  end
@@ -228,18 +232,18 @@ describe GoImport::SerializeHelper do
228
232
  describe "for organization" do
229
233
  let(:import_rows) { GoImport::Organization.new.get_import_rows }
230
234
  it "should contain integration id" do
231
- import_rows.should include({:id=>'integration_id', :name=>'Integration id', :type=>:string})
232
- import_rows.should include({:id=>'id', :name=>'Go id', :type=>:string})
235
+ import_rows.should include({:id => 'integration_id', :name => 'Integration id', :type => :string})
236
+ import_rows.should include({:id => 'id', :name => 'Go id', :type => :string})
233
237
  end
234
238
  it "should contain address" do
235
- expected = {:id=>'postal_address', :name=>'Postal address', :type=>:address,
236
- :model=>[
237
- {:id=>'street',:name=>'Street', :type=>:string},
238
- {:id=>'zip_code',:name=>'Zip code', :type=>:string},
239
- {:id=>'city',:name=>'City', :type=>:string},
240
- {:id=>'country_code',:name=>'Country code', :type=>:string},
241
- {:id=>'location',:name=>'Location', :type=>:string},
242
- {:id=>'country_name',:name=>'Country name', :type=>:string},
239
+ expected = {:id => 'postal_address', :name => 'Postal address', :type => :address,
240
+ :model => [
241
+ {:id => 'street',:name => 'Street', :type => :string},
242
+ {:id => 'zip_code',:name => 'Zip code', :type => :string},
243
+ {:id => 'city',:name => 'City', :type => :string},
244
+ {:id => 'country_code',:name => 'Country code', :type => :string},
245
+ {:id => 'location',:name => 'Location', :type => :string},
246
+ {:id => 'country_name',:name => 'Country name', :type => :string},
243
247
  ]}
244
248
  import_rows.should include(expected)
245
249
  end
@@ -4,50 +4,51 @@ require 'nokogiri'
4
4
  describe GoImport::SerializeHelper do
5
5
  describe "Validate according to xsd" do
6
6
  let(:validate_result) {
7
- i = GoImport::RootModel.new
8
- i.settings.with_organization do |s|
9
- s.set_custom_field({:integration_id=>"2", :title=>"cf title"})
10
- s.set_custom_field({:integration_id=>"3", :title=>"cf title2"})
7
+ rootmodel = GoImport::RootModel.new
8
+ rootmodel.settings.with_organization do |s|
9
+ s.set_custom_field({:integration_id => "2", :title => "cf title"})
10
+ s.set_custom_field({:integration_id => "3", :title => "cf title2"})
11
11
  end
12
- i.add_coworker({
13
- :integration_id=>"123",
14
- :first_name=>"Kalle",
15
- :last_name=>"Anka",
16
- :email=>"kalle.anka@vonanka.com"
12
+ rootmodel.add_coworker({
13
+ :integration_id => "123",
14
+ :first_name => "Kalle",
15
+ :last_name => "Anka",
16
+ :email => "kalle.anka@vonanka.com"
17
17
  })
18
- o = GoImport::Organization.new
19
- o.name = "Ankeborgs bibliotek"
20
- o.with_source do |source|
18
+ organization = GoImport::Organization.new
19
+ organization.name = "Ankeborgs bibliotek"
20
+ organization.with_source do |source|
21
21
  source.par_se('122345')
22
22
  end
23
- #o.source_ref = {:name=>'Go',:id=>"PASE122345"}
24
- o.set_tag("tag:bibliotek")
25
- o.set_tag("tag:Bj\u{00F6}rk")
26
- o.set_custom_field({:integration_id=>"2", :value=>"cf value"})
27
- o.set_custom_field({:integration_id=>"3", :value=>"cf Bj\u{00F6}rk"})
28
- o.with_postal_address do |addr|
23
+ #organization.source_ref = {:name => 'Go',:id => "PASE122345"}
24
+ organization.set_tag("tag:bibliotek")
25
+ organization.set_tag("tag:Bj\u{00F6}rk")
26
+ organization.set_custom_value("2", "cf value")
27
+ organization.set_custom_value("3", "cf Bj\u{00F6}rk")
28
+ organization.with_postal_address do |addr|
29
29
  addr.city = "Ankeborg"
30
30
  end
31
- o.with_visit_address do |addr|
31
+ organization.with_visit_address do |addr|
32
32
  addr.city = "Gaaseborg"
33
33
  end
34
34
  coworker = GoImport::Coworker.new({:integration_id => "1", :first_name => "Vincent", :last_name => "Vega"})
35
- o.responsible_coworker = coworker
35
+ organization.responsible_coworker = coworker
36
36
 
37
- emp = o.add_employee({
37
+ emp = organization.add_employee({
38
38
  :integration_id => "1",
39
39
  :first_name => "Kalle",
40
40
  :last_name => "Anka"
41
41
  })
42
42
  emp.direct_phone_number = '234234234'
43
43
  emp.currently_employed = true
44
- i.organizations.push(o)
44
+ rootmodel.add_organization organization
45
45
  xsd_file = File.join(File.dirname(__FILE__), '..', 'sample_data', 'schema0.xsd')
46
46
 
47
47
  xsd = Nokogiri::XML::Schema(File.read(xsd_file))
48
- doc = Nokogiri::XML(GoImport::SerializeHelper::serialize(i,-1))
48
+ doc = Nokogiri::XML(GoImport::SerializeHelper::serialize(rootmodel, -1))
49
49
  xsd.validate(doc)
50
50
  }
51
+
51
52
  it "Should not contain validation errors" do
52
53
  expect(validate_result).to eq([])
53
54
  end
data/spec/note_spec.rb CHANGED
@@ -49,7 +49,7 @@ describe "Note" do
49
49
  note.validate.length.should be > 0
50
50
  end
51
51
 
52
- it "will set organization ref when organization is assinged" do
52
+ it "will set organization ref when organization is assigned" do
53
53
  # given
54
54
  org = GoImport::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
55
55
 
@@ -61,7 +61,7 @@ describe "Note" do
61
61
  note.instance_variable_get(:@organization_reference).is_a?(GoImport::OrganizationReference).should eq true
62
62
  end
63
63
 
64
- it "will set person ref when person is assinged" do
64
+ it "will set person ref when person is assigned" do
65
65
  # given
66
66
  person = GoImport::Person.new({:integration_id => "123" })
67
67
  person.parse_name_to_firstname_lastname_se "Billy Bob"
@@ -74,7 +74,7 @@ describe "Note" do
74
74
  note.instance_variable_get(:@person_reference).is_a?(GoImport::PersonReference).should eq true
75
75
  end
76
76
 
77
- it "will set coworker ref when coworker is assinged" do
77
+ it "will set coworker ref when coworker is assigned" do
78
78
  # given
79
79
  coworker = GoImport::Coworker.new({:integration_id => "123" })
80
80
  coworker.parse_name_to_firstname_lastname_se "Billy Bob"
@@ -87,7 +87,7 @@ describe "Note" do
87
87
  note.instance_variable_get(:@created_by_reference).is_a?(GoImport::CoworkerReference).should eq true
88
88
  end
89
89
 
90
- it "will set deal ref when deal is assinged" do
90
+ it "will set deal ref when deal is assigned" do
91
91
  # given
92
92
  deal = GoImport::Deal.new({:integration_id => "123" })
93
93
  deal.name = "The new deal"
@@ -111,4 +111,40 @@ describe "Note" do
111
111
  note.classification = "hubbabubba"
112
112
  }.to raise_error(GoImport::InvalidNoteClassificationError)
113
113
  end
114
+
115
+ it "should remove form feed from text" do
116
+ # given
117
+ textWithFormFeed = "Text with form feed"
118
+ textWithoutFormFeed = "Text with form feed"
119
+
120
+ # when
121
+ note.text = textWithFormFeed
122
+
123
+ # then
124
+ note.text.should eq textWithoutFormFeed
125
+ end
126
+
127
+ it "should remove vertical tab from text" do
128
+ # given
129
+ textWithVerticalTab = "Text with \vvertical tab"
130
+ textWithoutVerticalTab = "Text with vertical tab"
131
+
132
+ # when
133
+ note.text = textWithVerticalTab
134
+
135
+ # then
136
+ note.text.should eq textWithoutVerticalTab
137
+ end
138
+
139
+ it "should remove backspace from text" do
140
+ # given
141
+ textWithBackSpace = "Text with \bbackspace"
142
+ textWithoutBackSpace = "Text with backspace"
143
+
144
+ # when
145
+ note.text = textWithBackSpace
146
+
147
+ # then
148
+ note.text.should eq textWithoutBackSpace
149
+ end
114
150
  end
@@ -150,12 +150,37 @@ describe "Organization" do
150
150
  it "should only set relation last modified to valid date" do
151
151
  # given
152
152
  organization.relation = GoImport::Relation::IsACustomer
153
-
153
+
154
154
  # when, then
155
155
  expect {
156
156
  organization.relation_last_modified = "hubbabubba"
157
157
  }.to raise_error(GoImport::InvalidValueError)
158
158
  end
159
+
160
+ it "can have custom value" do
161
+ # given, when
162
+ organization.set_custom_value "field_integration_id", "the is a value"
163
+
164
+ # then
165
+ organization.custom_values.length.should eq 1
166
+ end
167
+
168
+ it "can have a custom numeric value" do
169
+ # given, when
170
+ organization.set_custom_value "price", 100
171
+
172
+ # then
173
+ organization.custom_values.length.should eq 1
174
+ organization.custom_values[0].value.should eq "100"
175
+ end
176
+
177
+ it "a custom value can not be empty" do
178
+ # given, when
179
+ organization.set_custom_value "field_integration_id", ""
180
+
181
+ # then
182
+ organization.custom_values.length.should eq 0
183
+ end
159
184
  end
160
185
 
161
186
  describe "OrganizationReference" do
data/spec/person_spec.rb CHANGED
@@ -12,22 +12,20 @@ describe "Person" do
12
12
  person.tags[0].value.should eq 'Import'
13
13
  end
14
14
 
15
- it "can set a customfield" do
16
- person.set_custom_field({:integration_id=>'the key',
17
- :value=> 'the value'})
15
+ it "can set a custom value" do
16
+ person.set_custom_value('the field', 'the value')
18
17
 
19
18
  value = person.custom_values[0]
20
19
  field = value.field
21
- field.integration_id.should eq 'the key'
20
+ field.integration_id.should eq 'the field'
22
21
  value.value.should eq 'the value'
23
22
  end
24
23
 
25
- it "will set custom field with same integration_id to the last value" do
26
- person.set_custom_field({:integration_id=>'the key',
27
- :value=> 'the value'})
24
+ it "will set custom value with same integration_id to the last value" do
25
+ person.set_custom_value('the key', 'the value')
28
26
 
29
- person.set_custom_field({:integration_id=>'the key',
30
- :value=> 'the value 2'})
27
+ person.set_custom_value('the key', 'the value 2')
28
+
31
29
  value = person.custom_values[0]
32
30
  field = value.field
33
31
 
@@ -36,30 +34,6 @@ describe "Person" do
36
34
  value.value.should eq 'the value 2'
37
35
  end
38
36
 
39
- it "will set custom field with same id to the last value" do
40
- person.set_custom_field({ :integration_id => 'the id', :value=> 'the value' })
41
-
42
- person.set_custom_field({ :integration_id => 'the id', :value=> 'the value 2'})
43
- value = person.custom_values[0]
44
- field = value.field
45
-
46
- person.custom_values.length.should eq 1
47
- field.integration_id.should eq 'the id'
48
- value.value.should eq 'the value 2'
49
- end
50
-
51
- it "will set custom field (using set_custom_value) with same integration_id to the last value" do
52
- person.set_custom_value('the id', 'the value')
53
-
54
- person.set_custom_value('the id', 'the value 2')
55
- value = person.custom_values[0]
56
- field = value.field
57
-
58
- person.custom_values.length.should eq 1
59
- field.integration_id.should eq 'the id'
60
- value.value.should eq 'the value 2'
61
- end
62
-
63
37
  it "will only set tag once" do
64
38
  # we already have the default 'import' tag.
65
39
  person.tags.length.should eq 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.23
4
+ version: 3.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oskar Gewalli
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-12-18 00:00:00.000000000 Z
14
+ date: 2015-01-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: iso_country_codes
@@ -154,8 +154,8 @@ dependencies:
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
156
  description: ! ' go-import is an import tool for LIME Go. It can take virtually any
157
- input source and create pretty looking xml-files that LIME Go likes. go-import has
158
- some predefined sources that makes will help you migrate your data.
157
+ input source and create zip-files that LIME Go likes. go-import has some predefined
158
+ sources that makes will help you migrate your data.
159
159
 
160
160
  '
161
161
  email: support@lundalogik.se
@@ -299,7 +299,7 @@ rubyforge_project:
299
299
  rubygems_version: 2.1.11
300
300
  signing_key:
301
301
  specification_version: 4
302
- summary: Library to generate Lime Go xml import format
302
+ summary: Tool to generate Lime Go zip import files
303
303
  test_files:
304
304
  - spec/address_spec.rb
305
305
  - spec/class_settings_spec.rb