go_import 3.0.28 → 3.0.29

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
- MGQ0OWMyMzA2MjFhYmJhYTc1NzllNWFmMzE1Mzc4MmZhODFiYjYzZg==
4
+ Njc2YjFkNDUzNDc3NWY1YWI1MDY1MmJmMzQ4NTY5M2YzNjRiYmY2ZQ==
5
5
  data.tar.gz: !binary |-
6
- NzZkNzYxN2JkMTk1NjY1OGJmZWJmNDVjYmJiMTU0ZjM1MWU0YmI4MQ==
6
+ YTVlNjU2N2U5MjA5YWJhNDhjMTM0MGVkMzljYzU5YzZhYjZmMjc0ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTY3MDI5Y2JkZDA5ZjgxYzhiNmU4NzEyMThhNzEzOWNmYjFmYWM1MjExNmNi
10
- YTg5ZjJlMGQ5ZTQzYzI1ZTM4MDU4Mzc0OWU2NjI4OTEwMDlhNzc0N2UzZjhk
11
- MTM1ODUyZjNjY2FjMjVlMDk0MDJmODU3Nzc5N2I1YjcyMzcxYzk=
9
+ NTcxZDE0OTFhYjA2MzI4MzkyMzYxMWU2NWUzOTg1OTIwYTQxMWEzOWM0MDdh
10
+ MDRkMWQyMzVmNmE1ZjFlZWFkYjMyMGE1OGYxNTQ4ZjM1NjZlNzliMWRmMGE1
11
+ MzAzYzE3ODJlOTdmODFiMGQxZWIwNGE5ZGQzZWUyN2M4NTRhMjU=
12
12
  data.tar.gz: !binary |-
13
- NzAzN2FkNGNiYjIzNzJjNWM1NThkMTkzNjBmNjkxMDE2NDMxOWIyNzZkYjJk
14
- ZGY4ODk3NGExNTUzOTgwZjBkMTM1NGVmNTY5NDM0ZGI1MzU1NTllYTY3MzM4
15
- MTQxMDIxMGQ1NTlkNjA2MGVjNWJiNTVmNmJmNGFkZGZlZmYwNDU=
13
+ NzBkMTEyZjMyMjA1M2Q4YzBiODZmZWY4NDc1OWJkYzYyMTAzODBjYmRhNzNj
14
+ YzYwZjc2NTA0MDFhOWM0MzA2NmQwNDA1NjRiZDdkODBhYTRlNTc0Zjg5ZWJk
15
+ NWMwNzQwN2JhMzkzZGI2MmU5NDFjMTNjNmU2ZTA0MjYyYzU3NDY=
@@ -2,6 +2,9 @@ module GoImport
2
2
  class AlreadyAddedError < StandardError
3
3
  end
4
4
 
5
+ class IntegrationIdIsRequiredError < StandardError
6
+ end
7
+
5
8
  class InvalidCustomFieldError < StandardError
6
9
  end
7
10
 
@@ -34,26 +34,19 @@ module GoImport
34
34
 
35
35
  def initialize()
36
36
  @settings = Settings.new
37
- @organizations = []
38
- @coworkers = []
37
+ @organizations = {}
38
+ @coworkers = {}
39
39
  @import_coworker = Coworker.new
40
40
  @import_coworker.integration_id = "import"
41
41
  @import_coworker.first_name = "Import"
42
- @coworkers.push @import_coworker
43
- @deals = []
44
- @notes = []
42
+ @coworkers[@import_coworker.integration_id] = @import_coworker
43
+ @deals = {}
44
+ @notes = {}
45
45
  @documents = Documents.new
46
46
  end
47
47
 
48
48
  # Adds the specifed coworker object to the model.
49
- # @example Add a coworker from a hash
50
- # rootmodel.add_coworker({
51
- # :integration_id=>"123",
52
- # :first_name=>"Kalle",
53
- # :last_name=>"Anka",
54
- # :email=>"kalle.anka@vonanka.com"
55
- # })
56
- #
49
+
57
50
  # @example Add a coworker from a new coworker
58
51
  # coworker = GoImport::Coworker.new
59
52
  # coworker.integration_id = "123"
@@ -61,106 +54,76 @@ module GoImport
61
54
  # coworker.last_name="Anka"
62
55
  # coworker.email = "kalle.anka@vonanka.com"
63
56
  # rootmodel.add_coworker(coworker)
64
- #
65
- # @example If you want to keep adding coworkers and dont care about duplicates not being added
66
- # begin
67
- # rootmodel.add_coworker(coworker)
68
- # rescue GoImport::AlreadyAddedError
69
- # puts "Warning: already added coworker"
70
- # end
71
- # @see Coworker
72
57
  def add_coworker(coworker)
73
- @coworkers = [] if @coworkers == nil
74
-
75
58
  if coworker.nil?
76
59
  return nil
77
60
  end
78
61
 
79
- coworker = Coworker.new(coworker) if !coworker.is_a?(Coworker)
62
+ if !coworker.is_a?(Coworker)
63
+ raise ArgumentError.new("Expected a coworker")
64
+ end
65
+
66
+ if coworker.integration_id.nil? || coworker.integration_id.length == 0
67
+ raise IntegrationIdIsRequiredError, "An integration id is required for a coworker."
68
+ end
80
69
 
81
70
  if find_coworker_by_integration_id(coworker.integration_id) != nil
82
71
  raise AlreadyAddedError, "Already added a coworker with integration_id #{coworker.integration_id}"
83
72
  end
84
73
 
85
- @coworkers.push(coworker)
74
+ @coworkers[coworker.integration_id] = coworker
86
75
 
87
76
  return coworker
88
77
  end
89
78
 
90
79
  # Adds the specifed organization object to the model.
91
- # @example Add an organization from a hash
92
- # rootmodel.add_organization({
93
- # :integration_id => "123",
94
- # :name => "Beagle Boys",
95
- # })
96
- #
97
80
  # @example Add an organization from a new organization
98
81
  # organization = GoImport::Organization.new
99
82
  # organization.integration_id = "123"
100
83
  # organization.name = "Beagle Boys"
101
84
  # rootmodel.add_organization(organization)
102
- #
103
- # @example If you want to keep adding organizations and dont
104
- # care about duplicates not being added. Your model might not
105
- # be saved due to duplicate integration_ids.
106
- # begin
107
- # rootmodel.add_organization(organization)
108
- # rescue GoImport::AlreadyAddedError
109
- # puts "Warning: already added organization"
110
- # end
111
- # @see Coworker
112
85
  def add_organization(organization)
113
- @organizations = [] if @organizations.nil?
114
-
115
86
  if organization.nil?
116
87
  return nil
117
88
  end
118
89
 
119
- organization = Organization.new(organization) if !organization.is_a?(Organization)
90
+ if !organization.is_a?(Organization)
91
+ raise ArgumentError.new("Expected an organization")
92
+ end
93
+
94
+ if organization.integration_id.nil? || organization.integration_id.length == 0
95
+ raise IntegrationIdIsRequiredError, "An integration id is required for an organization."
96
+ end
120
97
 
121
- if (!organization.integration_id.nil? && organization.integration_id.length > 0) &&
122
- find_organization_by_integration_id(organization.integration_id) != nil
98
+ if find_organization_by_integration_id(organization.integration_id) != nil
123
99
  raise AlreadyAddedError, "Already added an organization with integration_id #{organization.integration_id}"
124
100
  end
125
101
 
126
- @organizations.push(organization)
102
+ @organizations[organization.integration_id] = organization
127
103
 
128
104
  return organization
129
105
  end
130
106
 
131
107
  # Adds the specifed deal object to the model.
132
- # @example Add an deal from a hash
133
- # rootmodel.add_deal({
134
- # :integration_id => "123",
135
- # :name => "Big deal",
136
- # })
137
- #
138
108
  # @example Add a deal from a new deal
139
109
  # deal = GoImport::Deal.new
140
110
  # deal.integration_id = "123"
141
111
  # deal.name = "Big deal"
142
112
  # rootmodel.add_deal(deal)
143
- #
144
- # @example If you want to keep adding deals and dont
145
- # care about duplicates not being added. Your model might not
146
- # be saved due to duplicate integration_ids.
147
- # begin
148
- # rootmodel.add_deal(deal)
149
- # rescue GoImport::AlreadyAddedError
150
- # puts "Warning: already added deal"
151
- # end
152
- # @see Coworker
153
113
  def add_deal(deal)
154
- @deals = [] if @deals.nil?
155
-
156
114
  if deal.nil?
157
115
  return nil
158
116
  end
159
117
 
160
- deal = Deal.new(deal) if !deal.is_a?(Deal)
118
+ if !deal.is_a?(Deal)
119
+ raise ArgumentError.new("Expected a deal")
120
+ end
121
+
122
+ if deal.integration_id.nil? || deal.integration_id.length == 0
123
+ raise IntegrationIdIsRequiredError, "An integration id is required for a deal."
124
+ end
161
125
 
162
- if (!deal.integration_id.nil? && deal.integration_id.length > 0) &&
163
- find_deal_by_integration_id(deal.integration_id) != nil
126
+ if find_deal_by_integration_id(deal.integration_id) != nil
164
127
  raise AlreadyAddedError, "Already added a deal with integration_id #{deal.integration_id}"
165
128
  end
166
129
 
@@ -168,44 +131,35 @@ module GoImport
168
131
  deal.responsible_coworker = @import_coworker
169
132
  end
170
133
 
171
- @deals.push(deal)
134
+ @deals[deal.integration_id] = deal
172
135
 
173
136
  return deal
174
137
  end
175
138
 
176
139
  # Adds the specifed note object to the model.
177
- # @example Add an deal from a hash
178
- # rootmodel.add_note({
179
- # :integration_id => "123",
180
- # :text => "This is a note",
181
- # })
140
+ #
141
+ # If no integration_id has been specifed go-import will use a
142
+ # GUID as integration_id.
182
143
  #
183
144
  # @example Add a note from a new note
184
145
  # note = GoImport::Note.new
185
146
  # note.integration_id = "123"
186
- # note.text = "Big deal"
147
+ # note.text = "This is a note"
187
148
  # rootmodel.add_note(note)
188
- #
189
- # @example If you want to keep adding deals and dont
190
- # care about duplicates not being added. Your model might not
191
- # be saved due to duplicate integration_ids.
192
- # begin
193
- # rootmodel.add_deal(deal)
194
- # rescue GoImport::AlreadyAddedError
195
- # puts "Warning: already added deal"
196
- # end
197
- # @see Coworker
198
149
  def add_note(note)
199
- @notes = [] if @notes == nil
200
-
201
150
  if note.nil?
202
151
  return nil
203
- end
152
+ end
204
153
 
205
- note = Note.new(note) if !note.is_a?(Note)
154
+ if !note.is_a?(Note)
155
+ raise ArgumentError.new("Expected a note")
156
+ end
206
157
 
207
- if (!note.integration_id.nil? && note.integration_id.length > 0) &&
208
- find_note_by_integration_id(note.integration_id) != nil
158
+ if note.integration_id.nil? || note.integration_id.length == 0
159
+ note.integration_id = SecureRandom.uuid
160
+ end
161
+
162
+ if find_note_by_integration_id(note.integration_id) != nil
209
163
  raise AlreadyAddedError, "Already added a note with integration_id #{note.integration_id}"
210
164
  end
211
165
 
@@ -213,7 +167,7 @@ module GoImport
213
167
  note.created_by = @import_coworker
214
168
  end
215
169
 
216
- @notes.push(note)
170
+ @notes[note.integration_id] = note
217
171
 
218
172
  return note
219
173
  end
@@ -231,28 +185,35 @@ module GoImport
231
185
  end
232
186
 
233
187
  def find_coworker_by_integration_id(integration_id)
234
- return @coworkers.find do |coworker|
235
- coworker.integration_id == integration_id
188
+ if @coworkers.has_key?(integration_id)
189
+ return @coworkers[integration_id]
190
+ else
191
+ return nil
236
192
  end
237
193
  end
238
194
 
239
195
  def find_organization_by_integration_id(integration_id)
240
- return @organizations.find do |organization|
241
- organization.integration_id == integration_id
196
+ if @organizations.has_key?(integration_id)
197
+ return @organizations[integration_id]
198
+ else
199
+ return nil
242
200
  end
201
+
243
202
  end
244
203
 
245
204
  def find_person_by_integration_id(integration_id)
246
205
  return nil if @organizations.nil?
247
- @organizations.each do |organization|
206
+ @organizations.each do |key, organization|
248
207
  person = organization.find_employee_by_integration_id(integration_id)
249
208
  return person if person
250
209
  end
251
210
  end
252
211
 
253
212
  def find_note_by_integration_id(integration_id)
254
- return @notes.find do |note|
255
- note.integration_id == integration_id
213
+ if @notes.has_key?(integration_id)
214
+ return @notes[integration_id]
215
+ else
216
+ return nil
256
217
  end
257
218
  end
258
219
 
@@ -260,7 +221,7 @@ module GoImport
260
221
  def find_deals_for_organization(organization)
261
222
  deals = []
262
223
 
263
- deals = @deals.select do |deal|
224
+ deals = @deals.values.select do |deal|
264
225
  !deal.customer.nil? && deal.customer.integration_id == organization.integration_id
265
226
  end
266
227
 
@@ -268,34 +229,37 @@ module GoImport
268
229
  end
269
230
 
270
231
  def find_deal_by_integration_id(integration_id)
271
- return @deals.find do |deal|
272
- deal.integration_id == integration_id
232
+ if @deals.has_key?(integration_id)
233
+ return @deals[integration_id]
234
+ else
235
+ return nil
273
236
  end
274
237
  end
275
238
 
276
- # Returns a string describing problems with the data. For instance if integration_id for any entity is not unique.
239
+ # Returns a string describing problems with the data. For
240
+ # instance if integration_id for any entity is not unique.
277
241
  def sanity_check
278
242
  error = String.new
279
243
 
280
- dups = get_integration_id_duplicates(with_non_empty_integration_id(@coworkers))
281
- dups_error_items = (dups.collect{|coworker| coworker.integration_id}).compact
282
- if dups.length > 0
283
- error = "#{error}\nDuplicate coworker integration_id: #{dups_error_items.join(", ")}."
284
- end
285
-
286
- dups = get_integration_id_duplicates(with_non_empty_integration_id(@organizations))
287
- dups_error_items = (dups.collect{|org| org.integration_id}).compact
288
- if dups.length > 0
289
- error = "#{error}\nDuplicate organization integration_id: #{dups_error_items.join(", ")}."
290
- end
291
-
292
- dups = get_integration_id_duplicates(with_non_empty_integration_id(@deals))
293
- dups_error_items = (dups.collect{|deal| deal.integration_id}).compact
294
- if dups_error_items.length > 0
295
- error = "#{error}\nDuplicate deal integration_id: #{dups_error_items.join(", ")}."
296
- end
297
-
298
- persons = @organizations.collect{|o| o.employees}.flatten.compact
244
+ # dups = get_integration_id_duplicates(with_non_empty_integration_id(@coworkers))
245
+ # dups_error_items = (dups.collect{|coworker| coworker.integration_id}).compact
246
+ # if dups.length > 0
247
+ # error = "#{error}\nDuplicate coworker integration_id: #{dups_error_items.join(", ")}."
248
+ # end
249
+
250
+ # dups = get_integration_id_duplicates(with_non_empty_integration_id(@organizations))
251
+ # dups_error_items = (dups.collect{|org| org.integration_id}).compact
252
+ # if dups.length > 0
253
+ # error = "#{error}\nDuplicate organization integration_id: #{dups_error_items.join(", ")}."
254
+ # end
255
+
256
+ # dups = get_integration_id_duplicates(with_non_empty_integration_id(@deals))
257
+ # dups_error_items = (dups.collect{|deal| deal.integration_id}).compact
258
+ # if dups_error_items.length > 0
259
+ # error = "#{error}\nDuplicate deal integration_id: #{dups_error_items.join(", ")}."
260
+ # end
261
+
262
+ persons = @organizations.collect{|k, o| o.employees}.flatten.compact
299
263
  dups = get_integration_id_duplicates(with_non_empty_integration_id(persons))
300
264
  dups_error_items = (dups.collect{|person| person.integration_id}).compact
301
265
  if dups_error_items.length > 0
@@ -315,7 +279,7 @@ module GoImport
315
279
  errors = String.new
316
280
  warnings = String.new
317
281
 
318
- @organizations.each do |o|
282
+ @organizations.each do |k, o|
319
283
  validation_message = o.validate()
320
284
 
321
285
  if !validation_message.empty?
@@ -37,6 +37,10 @@ module GoImport
37
37
  raw_var.each do |raw_var_elem|
38
38
  SerializeHelper::serialize_rexml(element, raw_var_elem)
39
39
  end
40
+ elsif (raw_var.is_a?(Hash))
41
+ raw_var.each do |key, raw_var_elem|
42
+ SerializeHelper::serialize_rexml(element, raw_var_elem)
43
+ end
40
44
  else
41
45
  element.text = raw_var.to_s.encode('UTF-8')
42
46
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'go_import'
4
4
  require 'roo'
5
+ require 'progress'
5
6
  require_relative("../converter")
6
7
 
7
8
  def convert_source
@@ -93,7 +94,7 @@ def convert_source
93
94
  # coworkers.
94
95
  if defined?(organization_rows) && !organization_rows.nil?
95
96
  puts "Trying to convert organizations..."
96
- organization_rows.each do |row|
97
+ organization_rows.with_progress().each do |row|
97
98
  organization = converter.to_organization(row, rootmodel)
98
99
  rootmodel.add_organization(organization)
99
100
  end
@@ -102,7 +103,7 @@ def convert_source
102
103
  # Add people and link them to their organizations
103
104
  if defined?(person_rows) && !person_rows.nil?
104
105
  puts "Trying to convert persons..."
105
- person_rows.each do |row|
106
+ person_rows.with_progress().each do |row|
106
107
  # People are special since they are not added directly to
107
108
  # the root model
108
109
  converter.import_person_to_organization(row, rootmodel)
@@ -112,7 +113,7 @@ def convert_source
112
113
  # Deals can connected to coworkers, organizations and people.
113
114
  if defined?(deal_rows) && !deal_rows.nil?
114
115
  puts "Trying to convert deals..."
115
- deal_rows.each do |row|
116
+ deal_rows.with_progress().each do |row|
116
117
  rootmodel.add_deal(converter.to_deal(row, rootmodel))
117
118
  end
118
119
  end
@@ -121,14 +122,14 @@ def convert_source
121
122
  # organizations and notes and might refernce a person
122
123
  if defined?(note_rows) && !note_rows.nil?
123
124
  puts "Trying to convert notes..."
124
- note_rows.each do |row|
125
+ note_rows.with_progress().each do |row|
125
126
  rootmodel.add_note(converter.to_note(row, rootmodel))
126
127
  end
127
128
  end
128
129
 
129
130
  if defined?(file_rows) && !file_rows.nil?
130
131
  puts "Trying to convert files..."
131
- file_rows.each do |row|
132
+ file_rows.with_progress().each do |row|
132
133
  rootmodel.add_file(converter.to_file(row, rootmodel))
133
134
  end
134
135
  end
@@ -1,6 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'rspec'
4
- gem 'roo'
4
+ gem 'roo', '2.0.0beta'
5
5
  gem 'thor'
6
6
  gem 'go_import'
7
+ gem 'progress'
@@ -1,6 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'rspec'
4
- gem 'roo'
4
+ gem 'roo', '2.0.0beta'
5
5
  gem 'thor'
6
6
  gem 'go_import'
@@ -1,4 +1,4 @@
1
- # encoding: iso-8859-1
1
+ # encoding: UTF-8
2
2
  require 'go_import'
3
3
 
4
4
  # Customize this file to suit your input files.
@@ -21,7 +21,7 @@ require 'go_import'
21
21
  # 1) Export all data from KONTAKT.mdb to a folder named Export located
22
22
  # in the folder created by go_import new. Export data using the
23
23
  # magical tool called PowerSellMigrationExport.exe that can be found
24
- # in K:\Lundalogik\LIME Easy\Tillbeh�r\Migrationsexport.
24
+ # in K:\Lundalogik\LIME Easy\Tillbehör\Migrationsexport.
25
25
  #
26
26
  # 2) Modify this file (the to_* methods) according to your customer's
27
27
  # KONTAKT.mdb and wishes.
@@ -396,7 +396,7 @@ class LIMEProConnection
396
396
  end
397
397
  }.join(",")
398
398
 
399
- sql = "SELECT #{sqlForFields} FROM [#{table.name}]"
399
+ sql = "SELECT #{sqlForFields} FROM [#{table.name}] WHERE [#{table.name}].[status] = 0"
400
400
  return sql
401
401
  end
402
402
 
@@ -1,48 +1,48 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- diff-lcs (1.2.5)
5
- global_phone (1.0.1)
6
- go_import (3.0.18)
7
- bundler
8
- global_phone
9
- iso_country_codes
10
- nokogiri
11
- roo
12
- sixarm_ruby_email_address_validation
13
- thor
14
- iso_country_codes (0.6.1)
15
- mini_portile (0.6.1)
16
- nokogiri (1.6.4.1-x86-mingw32)
17
- mini_portile (~> 0.6.0)
18
- roo (1.13.2)
19
- nokogiri
20
- rubyzip
21
- spreadsheet (> 0.6.4)
22
- rspec (3.1.0)
23
- rspec-core (~> 3.1.0)
24
- rspec-expectations (~> 3.1.0)
25
- rspec-mocks (~> 3.1.0)
26
- rspec-core (3.1.7)
27
- rspec-support (~> 3.1.0)
28
- rspec-expectations (3.1.2)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.1.0)
31
- rspec-mocks (3.1.3)
32
- rspec-support (~> 3.1.0)
33
- rspec-support (3.1.2)
34
- ruby-ole (1.2.11.7)
35
- rubyzip (1.1.6)
36
- sixarm_ruby_email_address_validation (2.0.0)
37
- spreadsheet (1.0.0)
38
- ruby-ole (>= 1.0)
39
- thor (0.19.1)
40
-
41
- PLATFORMS
42
- x86-mingw32
43
-
44
- DEPENDENCIES
45
- go_import
46
- rspec
47
- rubyzip
48
- thor
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.2.5)
5
+ global_phone (1.0.1)
6
+ go_import (3.0.18)
7
+ bundler
8
+ global_phone
9
+ iso_country_codes
10
+ nokogiri
11
+ roo
12
+ sixarm_ruby_email_address_validation
13
+ thor
14
+ iso_country_codes (0.6.1)
15
+ mini_portile (0.6.1)
16
+ nokogiri (1.6.4.1-x86-mingw32)
17
+ mini_portile (~> 0.6.0)
18
+ roo (1.13.2)
19
+ nokogiri
20
+ rubyzip
21
+ spreadsheet (> 0.6.4)
22
+ rspec (3.1.0)
23
+ rspec-core (~> 3.1.0)
24
+ rspec-expectations (~> 3.1.0)
25
+ rspec-mocks (~> 3.1.0)
26
+ rspec-core (3.1.7)
27
+ rspec-support (~> 3.1.0)
28
+ rspec-expectations (3.1.2)
29
+ diff-lcs (>= 1.2.0, < 2.0)
30
+ rspec-support (~> 3.1.0)
31
+ rspec-mocks (3.1.3)
32
+ rspec-support (~> 3.1.0)
33
+ rspec-support (3.1.2)
34
+ ruby-ole (1.2.11.7)
35
+ rubyzip (1.1.6)
36
+ sixarm_ruby_email_address_validation (2.0.0)
37
+ spreadsheet (1.0.0)
38
+ ruby-ole (>= 1.0)
39
+ thor (0.19.1)
40
+
41
+ PLATFORMS
42
+ x86-mingw32
43
+
44
+ DEPENDENCIES
45
+ go_import
46
+ rspec
47
+ rubyzip
48
+ thor
@@ -184,6 +184,7 @@ describe GoImport::SerializeHelper do
184
184
  rootmodel = GoImport::RootModel.new
185
185
  organization = GoImport::Organization.new
186
186
  organization.name = "Ankeborgs bibliotek"
187
+ organization.integration_id = "123"
187
188
  rootmodel.add_organization organization
188
189
  GoImport::SerializeHelper::serialize(rootmodel, -1)
189
190
  }
@@ -9,12 +9,13 @@ describe GoImport::SerializeHelper do
9
9
  s.set_custom_field({:integration_id => "2", :title => "cf title"})
10
10
  s.set_custom_field({:integration_id => "3", :title => "cf title2"})
11
11
  end
12
- rootmodel.add_coworker({
13
- :integration_id => "123",
14
- :first_name => "Kalle",
15
- :last_name => "Anka",
16
- :email => "kalle.anka@vonanka.com"
17
- })
12
+ coworker = GoImport::Coworker.new({
13
+ :integration_id => "123",
14
+ :first_name => "Kalle",
15
+ :last_name => "Anka",
16
+ :email => "kalle.anka@vonanka.com"
17
+ })
18
+ rootmodel.add_coworker(coworker)
18
19
  organization = GoImport::Organization.new
19
20
  organization.name = "Ankeborgs bibliotek"
20
21
  organization.with_source do |source|
@@ -25,6 +26,7 @@ describe GoImport::SerializeHelper do
25
26
  organization.set_tag("tag:Bj\u{00F6}rk")
26
27
  organization.set_custom_value("2", "cf value")
27
28
  organization.set_custom_value("3", "cf Bj\u{00F6}rk")
29
+ organization.integration_id = "313"
28
30
  organization.with_postal_address do |addr|
29
31
  addr.city = "Ankeborg"
30
32
  end
@@ -6,62 +6,64 @@ describe "RootModel" do
6
6
  GoImport::RootModel.new
7
7
  }
8
8
 
9
- it "will contain integration coworker by default" do
9
+ it "will contain import coworker by default" do
10
10
  rootmodel.find_coworker_by_integration_id("import").first_name.should eq "Import"
11
11
  rootmodel.coworkers.length.should eq 1
12
12
  end
13
-
14
- it "can add a coworker from a hash" do
15
- rootmodel.add_coworker({
16
- :integration_id => "123key",
17
- :first_name => "Kalle",
18
- :last_name => "Anka",
19
- :email => "kalle.anka@vonanka.com"
20
- })
21
- rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
22
- rootmodel.coworkers.length.should eq 2
23
- end
24
-
13
+
25
14
  it "can add a coworker from a new coworker" do
15
+ # given
26
16
  coworker = GoImport::Coworker.new
27
17
  coworker.integration_id = "123key"
28
18
  coworker.first_name="Kalle"
29
19
  coworker.last_name="Anka"
30
20
  coworker.email = "kalle.anka@vonanka.com"
21
+
22
+ # when
31
23
  rootmodel.add_coworker(coworker)
24
+
25
+ # end
32
26
  rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
33
27
  rootmodel.coworkers.length.should eq 2
34
28
  end
35
29
 
30
+ it "will only add coworkers" do
31
+ # given
32
+ not_a_coworker = { :integration_id => "123", :first_name => "Vincent" }
33
+
34
+ # when, then
35
+ expect {
36
+ rootmodel.add_coworker(not_a_coworker)
37
+ }.to raise_error(ArgumentError)
38
+ rootmodel.coworkers.length.should eq 1
39
+ end
40
+
36
41
  it "will not add a new coworker when the coworker is already added (same integration id)" do
37
- rootmodel.add_coworker({
38
- :integration_id=>"123key",
39
- :first_name=>"Kalle",
40
- :last_name=>"Anka",
41
- :email=>"kalle.anka@vonanka.com"
42
- })
42
+ # when
43
+ coworker1 = GoImport::Coworker.new({
44
+ :integration_id => "123key",
45
+ :first_name => "Kalle",
46
+ :last_name => "Anka",
47
+ :email => "kalle.anka@vonanka.com"
48
+ })
49
+ rootmodel.add_coworker(coworker1)
43
50
  rootmodel.coworkers.length.should eq 2
51
+
52
+ # when
53
+ coworker2 = GoImport::Coworker.new({
54
+
55
+ :integration_id => "123key",
56
+ :first_name => "Knatte",
57
+ :last_name => "Anka",
58
+ :email => "knatte.anka@vonanka.com"
59
+ })
44
60
  expect {
45
- rootmodel.add_coworker({
46
- :integration_id=>"123key",
47
- :first_name=>"Knatte",
48
- :last_name=>"Anka",
49
- :email=>"knatte.anka@vonanka.com"
50
- })
61
+ rootmodel.add_coworker(coworker2)
51
62
  }.to raise_error(GoImport::AlreadyAddedError)
52
63
  rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
53
64
  rootmodel.coworkers.length.should eq 2
54
65
  end
55
66
 
56
- it "can add an organization from hash" do
57
- rootmodel.add_organization({
58
- :integration_id => "123key",
59
- :name => "Beagle Boys"
60
- })
61
- rootmodel.find_organization_by_integration_id("123key").name.should eq "Beagle Boys"
62
- rootmodel.organizations.length.should eq 1
63
- end
64
-
65
67
  it "can add an organization from a new organization" do
66
68
  # given
67
69
  organization = GoImport::Organization.new
@@ -76,48 +78,61 @@ describe "RootModel" do
76
78
  rootmodel.organizations.length.should eq 1
77
79
  end
78
80
 
79
- it "will not add a new organizations when the organizations is already added (same integration id)" do
81
+ it "will only add organizations" do
80
82
  # given
81
- rootmodel.add_organization({
82
- :integration_id => "123key",
83
- :name => "Beagle Boys"
84
- })
83
+ not_an_organization = { :integration_id => "123", :name => "This is not a note"}
84
+
85
+ # when, then
86
+ expect {
87
+ rootmodel.add_organization(not_an_organization)
88
+ }.to raise_error(ArgumentError)
89
+ rootmodel.organizations.length.should eq 0
90
+ end
91
+
92
+ it "will not add a new organization when the organization is already added (same integration id)" do
93
+ # given
94
+ org = GoImport::Organization.new({
95
+ :integration_id => "123key",
96
+ :name => "Beagle Boys"
97
+ })
98
+ rootmodel.add_organization(org)
85
99
  rootmodel.organizations.length.should eq 1
86
100
  rootmodel.find_organization_by_integration_id("123key").name.should eq "Beagle Boys"
87
101
 
88
102
  # when, then
103
+ org2 = GoImport::Organization.new({
104
+ :integration_id => "123key",
105
+ :name => "Beagle Boys 2"
106
+ })
89
107
  expect {
90
- rootmodel.add_organization({
91
- :integration_id => "123key",
92
- :name => "Beagle Boys 2"
93
- })
108
+ rootmodel.add_organization(org2)
94
109
  }.to raise_error(GoImport::AlreadyAddedError)
95
110
  rootmodel.find_organization_by_integration_id("123key").name.should eq "Beagle Boys"
96
111
  rootmodel.organizations.length.should eq 1
97
112
  end
98
113
 
99
- it "will add two organizations without integration id" do
114
+ it "will not add a organization when integration_id is nil" do
100
115
  # given
101
116
  org1 = GoImport::Organization.new
102
117
  org1.name = "Beagle Boys"
103
- org2 = GoImport::Organization.new
104
- org2.name = "The Corporation"
105
-
106
- # when
107
- rootmodel.add_organization(org1)
108
- rootmodel.add_organization(org2)
118
+ org1.integration_id = nil
109
119
 
110
- # then
111
- rootmodel.organizations.length.should eq 2
120
+ # when, then
121
+ expect {
122
+ rootmodel.add_organization(org1)
123
+ }.to raise_error(GoImport::IntegrationIdIsRequiredError)
112
124
  end
113
125
 
114
- it "can add a deal from hash" do
115
- rootmodel.add_deal({
116
- :integration_id => "123key",
117
- :name => "Big deal"
118
- })
119
- rootmodel.find_deal_by_integration_id("123key").name.should eq "Big deal"
120
- rootmodel.deals.length.should eq 1
126
+ it "will not add a organization when integration_id is empty" do
127
+ # given
128
+ org1 = GoImport::Organization.new
129
+ org1.name = "Beagle Boys"
130
+ org1.integration_id = ""
131
+
132
+ # when, then
133
+ expect {
134
+ rootmodel.add_organization(org1)
135
+ }.to raise_error(GoImport::IntegrationIdIsRequiredError)
121
136
  end
122
137
 
123
138
  it "can add a deal from a new deal" do
@@ -134,6 +149,17 @@ describe "RootModel" do
134
149
  rootmodel.deals.length.should eq 1
135
150
  end
136
151
 
152
+ it "will only add deals" do
153
+ # given
154
+ not_a_deal = { :integration_id => "123", :name => "This is not a deal" }
155
+
156
+ # when, then
157
+ expect {
158
+ rootmodel.add_deal(not_a_deal)
159
+ }.to raise_error(ArgumentError)
160
+ rootmodel.deals.length.should eq 0
161
+ end
162
+
137
163
  it "will set reponsible coworker to import_coworker if none specifed" do
138
164
  # given
139
165
  deal = GoImport::Deal.new
@@ -165,48 +191,61 @@ describe "RootModel" do
165
191
 
166
192
  it "will not add a new deal when the deal is already added (same integration id)" do
167
193
  # given
168
- rootmodel.add_deal({
169
- :integration_id => "123key",
170
- :name => "Big deal"
171
- })
194
+ deal1 = GoImport::Deal.new({
195
+ :integration_id => "123key",
196
+ :name => "Big deal"
197
+ })
198
+ rootmodel.add_deal(deal1)
172
199
  rootmodel.deals.length.should eq 1
173
200
  rootmodel.find_deal_by_integration_id("123key").name.should eq "Big deal"
174
201
 
175
202
  # when, then
203
+ deal2 = GoImport::Deal.new({
204
+ :integration_id => "123key",
205
+ :name => "Bigger deal"
206
+ })
176
207
  expect {
177
- rootmodel.add_deal({
178
- :integration_id => "123key",
179
- :name => "Bigger deal"
180
- })
208
+ rootmodel.add_deal(deal2)
181
209
  }.to raise_error(GoImport::AlreadyAddedError)
182
210
  rootmodel.find_deal_by_integration_id("123key").name.should eq "Big deal"
183
211
  rootmodel.deals.length.should eq 1
184
212
  end
185
213
 
186
- it "will add two deal without integration id" do
214
+ it "will not add a deal when integration_id is nil" do
187
215
  # given
188
- deal1 = GoImport::Deal.new
189
- deal1.name = "The big deal"
190
- deal2 = GoImport::Deal.new
191
- deal2.name = "The even bigger deal"
216
+ deal = GoImport::Deal.new
217
+ deal.name = "The new deal"
218
+ deal.integration_id = nil
192
219
 
193
- # when
194
- rootmodel.add_deal(deal1)
195
- rootmodel.add_deal(deal2)
220
+ # when, then
221
+ expect {
222
+ rootmodel.add_deal(deal)
223
+ }.to raise_error(GoImport::IntegrationIdIsRequiredError)
224
+ end
196
225
 
197
- # then
198
- rootmodel.deals.length.should eq 2
199
- end
226
+ it "will not add a deal when integration_id is empty" do
227
+ # given
228
+ deal = GoImport::Deal.new
229
+ deal.name = "The new deal"
230
+ deal.integration_id = ""
200
231
 
201
- it "can add a note from hash" do
202
- rootmodel.add_note({
203
- :integration_id => "123key",
204
- :text => "This is a note"
205
- })
206
- rootmodel.find_note_by_integration_id("123key").text.should eq "This is a note"
207
- rootmodel.notes.length.should eq 1
232
+ # when, then
233
+ expect {
234
+ rootmodel.add_deal(deal)
235
+ }.to raise_error(GoImport::IntegrationIdIsRequiredError)
208
236
  end
209
237
 
238
+ it "will only add notes" do
239
+ # given
240
+ not_a_note = { :integration_id => "123", :text => "This is not a note"}
241
+
242
+ # when, then
243
+ expect {
244
+ rootmodel.add_note(not_a_note)
245
+ }.to raise_error(ArgumentError)
246
+ rootmodel.notes.length.should eq 0
247
+ end
248
+
210
249
  it "can add a note from a new note" do
211
250
  # given
212
251
  note = GoImport::Note.new
@@ -221,6 +260,34 @@ describe "RootModel" do
221
260
  rootmodel.notes.length.should eq 1
222
261
  end
223
262
 
263
+ it "will generate an integration id if the new note dont have one" do
264
+ # given
265
+ note = GoImport::Note.new
266
+ note.text = "This is a note"
267
+
268
+ # when
269
+ rootmodel.add_note(note)
270
+
271
+ # then
272
+ note.integration_id.length.should be > 0
273
+ end
274
+
275
+ it "will generate unique integration ids for each note" do
276
+ # given
277
+ note1 = GoImport::Note.new
278
+ note1.text = "This is a note"
279
+
280
+ note2 = GoImport::Note.new
281
+ note2.text = "This is a different note"
282
+
283
+ # when
284
+ rootmodel.add_note note1
285
+ rootmodel.add_note note2
286
+
287
+ # then
288
+ note1.integration_id.should be != note2.integration_id
289
+ end
290
+
224
291
  it "will not add a nil note" do
225
292
  # given, when
226
293
  rootmodel.add_note(nil)
@@ -282,20 +349,22 @@ describe "RootModel" do
282
349
  rootmodel.documents.files.length.should eq 1
283
350
  end
284
351
 
285
- it "will not add a new organizations when the organizations is already added (same integration id)" do
352
+ it "will not add a new note when the note is already added (same integration id)" do
286
353
  # given
287
- rootmodel.add_note({
288
- :integration_id => "123key",
289
- :text => "This is a note"
290
- })
354
+ note = GoImport::Note.new({
355
+ :integration_id => "123key",
356
+ :text => "This is a note"
357
+ })
358
+ rootmodel.add_note(note)
291
359
  rootmodel.notes.length.should eq 1
292
360
 
293
361
  # when, then
362
+ note2 = GoImport::Note.new({
363
+ :integration_id => "123key",
364
+ :text => "This is another note"
365
+ })
294
366
  expect {
295
- rootmodel.add_note({
296
- :integration_id => "123key",
297
- :text => "This is another note"
298
- })
367
+ rootmodel.add_note(note2)
299
368
  }.to raise_error(GoImport::AlreadyAddedError)
300
369
  rootmodel.notes.length.should eq 1
301
370
  rootmodel.find_note_by_integration_id("123key").text.should eq "This is a note"
@@ -305,6 +374,7 @@ describe "RootModel" do
305
374
  # given
306
375
  organization = GoImport::Organization.new
307
376
  organization.name = "Hubba Bubba"
377
+ organization.integration_id = "321"
308
378
  organization.add_employee({
309
379
  :integration_id => "123",
310
380
  :first_name => "Billy",
@@ -326,6 +396,7 @@ describe "RootModel" do
326
396
  # given
327
397
  organization = GoImport::Organization.new
328
398
  organization.name = "Hubba Bubba"
399
+ organization.integration_id = "321"
329
400
  organization.add_employee({
330
401
  :integration_id => "123",
331
402
  :first_name => "Billy",
@@ -348,53 +419,6 @@ describe "RootModel" do
348
419
  found_person.last_name.should eq "Bob"
349
420
  end
350
421
 
351
- it "will ignore empty integration ids during sanity check" do
352
- org1 = GoImport::Organization.new
353
- org1.name = "company 1"
354
- rootmodel.organizations.push org1
355
-
356
- org2 = GoImport::Organization.new
357
- org2.name = "company 2"
358
- rootmodel.organizations.push org2
359
-
360
- rootmodel.sanity_check.should eq ""
361
- end
362
-
363
- it "will report when the same integration id is used during sanity check" do
364
- org1 = GoImport::Organization.new
365
- org1.integration_id = "1"
366
- org1.name = "company 1"
367
- rootmodel.organizations.push org1
368
-
369
- org2 = GoImport::Organization.new
370
- org2.integration_id = "1"
371
- org2.name = "company 2"
372
- rootmodel.organizations.push org2
373
-
374
- rootmodel.sanity_check.should eq "Duplicate organization integration_id: 1."
375
- end
376
-
377
- it "will report when the same integrationid on person is used during sanity check" do
378
- org1 = GoImport::Organization.new
379
- org1.integration_id = "1"
380
- org1.name = "company 1"
381
- person1 = GoImport::Person.new
382
- person1.integration_id = '1'
383
- org1.add_employee person1
384
-
385
- rootmodel.organizations.push org1
386
-
387
- org2 = GoImport::Organization.new
388
- org2.integration_id = "2"
389
- org2.name = "company 2"
390
- person2 = GoImport::Person.new
391
- person2.integration_id = '1'
392
- org2.add_employee person2
393
- rootmodel.organizations.push org2
394
-
395
- rootmodel.sanity_check.should eq "Duplicate person integration_id: 1."
396
- end
397
-
398
422
  it "will report when two links has the same integration id during sanity check" do
399
423
  # given
400
424
  link1 = GoImport::Link.new
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.28
4
+ version: 3.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petter Sandholdt
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-03-19 00:00:00.000000000 Z
15
+ date: 2015-04-15 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: iso_country_codes