move-to-go 5.1.0 → 5.2.0
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 +4 -4
- data/lib/move-to-go/model/meeting.rb +219 -0
- data/lib/move-to-go/model/organization.rb +9 -1
- data/lib/move-to-go/model/person.rb +4 -0
- data/lib/move-to-go/model/rootmodel.rb +145 -3
- data/lib/move-to-go/model/todo.rb +172 -0
- data/lib/move-to-go/roo_helper.rb +4 -1
- data/lib/move-to-go/serialize_helper.rb +18 -0
- data/lib/move-to-go/shard_helper.rb +16 -0
- data/lib/move-to-go/source.rb +2 -0
- data/sources/excel/.move-to-go/runner.rb +34 -0
- data/sources/excel/converter.rb +45 -2
- data/sources/excel/sample-data.xlsx +0 -0
- data/sources/lime-easy/.move-to-go/runner.rb +148 -32
- data/sources/lime-easy/converter.rb +23 -7
- data/spec/meeting_spec.rb +152 -0
- data/spec/todo_spec.rb +149 -0
- metadata +8 -2
@@ -39,6 +39,22 @@ require 'move-to-go'
|
|
39
39
|
## Constants
|
40
40
|
# Edit these constants to fit your needs
|
41
41
|
|
42
|
+
# The export folder, it's probably called 'Export' if you haven't changed it.
|
43
|
+
EXPORT_FOLDER = 'Export'
|
44
|
+
|
45
|
+
# This file referes to the consent set super field in Lime Easy
|
46
|
+
# where the customer have their email consents.
|
47
|
+
PERSON_CONSENT_FILE = "#{EXPORT_FOLDER}/Company-Person-Samtycken.txt"
|
48
|
+
|
49
|
+
# Valid Consents strings for setting E-mail consent.
|
50
|
+
# Which of the set alternatives should be converted to
|
51
|
+
# E-mail consent in Lime Go. Just name them here, and
|
52
|
+
# move-to-go will fetch them from the file above.
|
53
|
+
|
54
|
+
# VALID_EMAIL_CONSENTS = ['Ok för nyhetsbrev', 'Ok för produktnyheter']
|
55
|
+
VALID_EMAIL_CONSENTS = ['Nyhetsbrev']
|
56
|
+
|
57
|
+
|
42
58
|
# determines if documents should be imported.
|
43
59
|
# IMPORT_DOCUMENTS = true
|
44
60
|
|
@@ -305,7 +321,7 @@ class Converter
|
|
305
321
|
# return the note will get the default classification 'Comment'
|
306
322
|
|
307
323
|
# case activity
|
308
|
-
# when 'SalesCall'
|
324
|
+
# when 'SalesCall'
|
309
325
|
# classification = MoveToGo::HistoryClassification::SalesCall
|
310
326
|
# when 'Customer Visit'
|
311
327
|
# classification = MoveToGo::HistoryClassification::ClientVisit
|
@@ -314,7 +330,7 @@ class Converter
|
|
314
330
|
# else
|
315
331
|
# classification = MoveToGo::HistoryClassification::Comment
|
316
332
|
# end
|
317
|
-
|
333
|
+
|
318
334
|
# return classification
|
319
335
|
end
|
320
336
|
|
@@ -326,20 +342,20 @@ class Converter
|
|
326
342
|
# in LIME Go. The return value must be a value from the
|
327
343
|
# MoveToGo::HistoryClassification enum. If no classification is
|
328
344
|
# return the history will get the default classification 'Comment'
|
329
|
-
|
345
|
+
|
330
346
|
# case activity
|
331
|
-
# when 'Installation'
|
347
|
+
# when 'Installation'
|
332
348
|
# classification = MoveToGo::HistoryClassification::ClientVisit
|
333
349
|
# when 'No answer'
|
334
350
|
# classification = MoveToGo::HistoryClassification::TriedToReach
|
335
351
|
# else
|
336
352
|
# classification = MoveToGo::HistoryClassification::Comment
|
337
353
|
# end
|
338
|
-
|
354
|
+
|
339
355
|
# return classification
|
340
356
|
end
|
341
357
|
|
342
|
-
|
358
|
+
|
343
359
|
|
344
360
|
# HOOKS
|
345
361
|
#
|
@@ -355,7 +371,7 @@ class Converter
|
|
355
371
|
# rootmodel.add_comment(comment)
|
356
372
|
# end
|
357
373
|
#end
|
358
|
-
|
374
|
+
|
359
375
|
|
360
376
|
end
|
361
377
|
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require 'move-to-go'
|
3
|
+
|
4
|
+
describe "Meeting" do
|
5
|
+
let("meeting") {
|
6
|
+
MoveToGo::Meeting.new
|
7
|
+
}
|
8
|
+
|
9
|
+
it "must have a text" do
|
10
|
+
meeting.validate.length.should be > 0
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is valid when it has attributes and organization" do
|
14
|
+
# given
|
15
|
+
meeting.heading = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
16
|
+
meeting.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
17
|
+
meeting.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
18
|
+
meeting.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
19
|
+
meeting.date_start = "2011-01-01 10:00"
|
20
|
+
meeting.date_stop = "2011-01-01 12:00"
|
21
|
+
meeting.date_start_has_time = true
|
22
|
+
|
23
|
+
# when, then
|
24
|
+
meeting.validate.should eq ""
|
25
|
+
end
|
26
|
+
|
27
|
+
it "is valid when it has text, created_by, assigned_coworker, date_start, date_start_has_time, org and person" do
|
28
|
+
# given
|
29
|
+
meeting.heading = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
30
|
+
meeting.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
31
|
+
meeting.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
32
|
+
meeting.person = MoveToGo::Person.new({ :integration_id => "456", :heading => "Billy Bob" })
|
33
|
+
meeting.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
34
|
+
meeting.date_start = "2011-01-01 10:00"
|
35
|
+
meeting.date_stop = "2011-01-01 12:00"
|
36
|
+
meeting.date_start_has_time = true
|
37
|
+
|
38
|
+
# when, then
|
39
|
+
meeting.validate.should eq ""
|
40
|
+
end
|
41
|
+
|
42
|
+
it "is valid when it has text, created_by, assigned_coworker, date_start, date_start_has_time, org and deal" do
|
43
|
+
# given
|
44
|
+
meeting.heading = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
45
|
+
meeting.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
46
|
+
meeting.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
47
|
+
meeting.deal = MoveToGo::Deal.new({ :integration_id => "456", :heading => "The new deal" })
|
48
|
+
meeting.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
49
|
+
meeting.date_start = "2011-01-01 10:00"
|
50
|
+
meeting.date_stop = "2011-01-01 12:00"
|
51
|
+
meeting.date_start_has_time = true
|
52
|
+
|
53
|
+
# when, then
|
54
|
+
meeting.validate.should eq ""
|
55
|
+
end
|
56
|
+
|
57
|
+
it "is invalid if no meeting has no attached objects" do
|
58
|
+
# given
|
59
|
+
meeting.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
60
|
+
meeting.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
61
|
+
|
62
|
+
# when, then
|
63
|
+
meeting.validate.length.should be > 0
|
64
|
+
end
|
65
|
+
|
66
|
+
it "will set organization ref when organization is assigned" do
|
67
|
+
# given
|
68
|
+
org = MoveToGo::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
|
69
|
+
|
70
|
+
# when
|
71
|
+
meeting.organization = org
|
72
|
+
|
73
|
+
# then
|
74
|
+
meeting.organization.is_a?(MoveToGo::Organization).should eq true
|
75
|
+
meeting.instance_variable_get(:@organization_reference).is_a?(MoveToGo::OrganizationReference).should eq true
|
76
|
+
end
|
77
|
+
|
78
|
+
it "will set person ref when person is assigned" do
|
79
|
+
# given
|
80
|
+
person = MoveToGo::Person.new({:integration_id => "123" })
|
81
|
+
person.parse_name_to_firstname_lastname_se "Billy Bob"
|
82
|
+
|
83
|
+
# when
|
84
|
+
meeting.person = person
|
85
|
+
|
86
|
+
# then
|
87
|
+
meeting.person.is_a?(MoveToGo::Person).should eq true
|
88
|
+
meeting.instance_variable_get(:@person_reference).is_a?(MoveToGo::PersonReference).should eq true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "will set coworker ref when coworker is assigned" do
|
92
|
+
# given
|
93
|
+
coworker = MoveToGo::Coworker.new({:integration_id => "123" })
|
94
|
+
coworker.parse_name_to_firstname_lastname_se "Billy Bob"
|
95
|
+
|
96
|
+
# when
|
97
|
+
meeting.created_by = coworker
|
98
|
+
|
99
|
+
# then
|
100
|
+
meeting.created_by.is_a?(MoveToGo::Coworker).should eq true
|
101
|
+
meeting.instance_variable_get(:@created_by_reference).is_a?(MoveToGo::CoworkerReference).should eq true
|
102
|
+
end
|
103
|
+
|
104
|
+
it "will set deal ref when deal is assigned" do
|
105
|
+
# given
|
106
|
+
deal = MoveToGo::Deal.new({:integration_id => "123" })
|
107
|
+
deal.name = "The new deal"
|
108
|
+
|
109
|
+
# when
|
110
|
+
meeting.deal = deal
|
111
|
+
|
112
|
+
# then
|
113
|
+
meeting.deal.is_a?(MoveToGo::Deal).should eq true
|
114
|
+
meeting.instance_variable_get(:@deal_reference).is_a?(MoveToGo::DealReference).should eq true
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should remove form feed from text" do
|
118
|
+
# given
|
119
|
+
textWithFormFeed = "Text with form feed"
|
120
|
+
textWithoutFormFeed = "Text with form feed"
|
121
|
+
|
122
|
+
# when
|
123
|
+
meeting.text = textWithFormFeed
|
124
|
+
|
125
|
+
# then
|
126
|
+
meeting.text.should eq textWithoutFormFeed
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should remove vertical tab from text" do
|
130
|
+
# given
|
131
|
+
textWithVerticalTab = "Text with \vvertical tab"
|
132
|
+
textWithoutVerticalTab = "Text with vertical tab"
|
133
|
+
|
134
|
+
# when
|
135
|
+
meeting.text = textWithVerticalTab
|
136
|
+
|
137
|
+
# then
|
138
|
+
meeting.text.should eq textWithoutVerticalTab
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should remove backspace from text" do
|
142
|
+
# given
|
143
|
+
textWithBackSpace = "Text with \bbackspace"
|
144
|
+
textWithoutBackSpace = "Text with backspace"
|
145
|
+
|
146
|
+
# when
|
147
|
+
meeting.text = textWithBackSpace
|
148
|
+
|
149
|
+
# then
|
150
|
+
meeting.text.should eq textWithoutBackSpace
|
151
|
+
end
|
152
|
+
end
|
data/spec/todo_spec.rb
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require 'move-to-go'
|
3
|
+
|
4
|
+
describe "Todo" do
|
5
|
+
let("todo") {
|
6
|
+
MoveToGo::Todo.new
|
7
|
+
}
|
8
|
+
|
9
|
+
it "must have a text" do
|
10
|
+
todo.validate.length.should be > 0
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is valid when it has text, created_by, assigned_coworker, date_start, date_start_has_time and organization" do
|
14
|
+
# given
|
15
|
+
todo.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
16
|
+
todo.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
17
|
+
todo.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
18
|
+
todo.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
19
|
+
todo.date_start = "2011-01-01"
|
20
|
+
todo.date_start_has_time = false
|
21
|
+
|
22
|
+
# when, then
|
23
|
+
todo.validate.should eq ""
|
24
|
+
end
|
25
|
+
|
26
|
+
it "is valid when it has text, created_by, assigned_coworker, date_start, date_start_has_time, org and person" do
|
27
|
+
# given
|
28
|
+
todo.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
29
|
+
todo.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
30
|
+
todo.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
31
|
+
todo.person = MoveToGo::Person.new({ :integration_id => "456", :heading => "Billy Bob" })
|
32
|
+
todo.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
33
|
+
todo.date_start = "2011-01-01"
|
34
|
+
todo.date_start_has_time = false
|
35
|
+
|
36
|
+
# when, then
|
37
|
+
todo.validate.should eq ""
|
38
|
+
end
|
39
|
+
|
40
|
+
it "is valid when it has text, created_by, assigned_coworker, date_start, date_start_has_time, org and deal" do
|
41
|
+
# given
|
42
|
+
todo.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
43
|
+
todo.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
44
|
+
todo.organization = MoveToGo::Organization.new({ :integration_id => "456", :heading => "Lundalogik" })
|
45
|
+
todo.deal = MoveToGo::Deal.new({ :integration_id => "456", :heading => "The new deal" })
|
46
|
+
todo.assigned_coworker = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
47
|
+
todo.date_start = "2011-01-01"
|
48
|
+
todo.date_start_has_time = false
|
49
|
+
|
50
|
+
# when, then
|
51
|
+
todo.validate.should eq ""
|
52
|
+
end
|
53
|
+
|
54
|
+
it "is invalid if no todo has no attached objects" do
|
55
|
+
# given
|
56
|
+
todo.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
57
|
+
todo.created_by = MoveToGo::Coworker.new( { :integration_id => "123", :heading => "kalle anka" } )
|
58
|
+
|
59
|
+
# when, then
|
60
|
+
todo.validate.length.should be > 0
|
61
|
+
end
|
62
|
+
|
63
|
+
it "will set organization ref when organization is assigned" do
|
64
|
+
# given
|
65
|
+
org = MoveToGo::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
|
66
|
+
|
67
|
+
# when
|
68
|
+
todo.organization = org
|
69
|
+
|
70
|
+
# then
|
71
|
+
todo.organization.is_a?(MoveToGo::Organization).should eq true
|
72
|
+
todo.instance_variable_get(:@organization_reference).is_a?(MoveToGo::OrganizationReference).should eq true
|
73
|
+
end
|
74
|
+
|
75
|
+
it "will set person ref when person is assigned" do
|
76
|
+
# given
|
77
|
+
person = MoveToGo::Person.new({:integration_id => "123" })
|
78
|
+
person.parse_name_to_firstname_lastname_se "Billy Bob"
|
79
|
+
|
80
|
+
# when
|
81
|
+
todo.person = person
|
82
|
+
|
83
|
+
# then
|
84
|
+
todo.person.is_a?(MoveToGo::Person).should eq true
|
85
|
+
todo.instance_variable_get(:@person_reference).is_a?(MoveToGo::PersonReference).should eq true
|
86
|
+
end
|
87
|
+
|
88
|
+
it "will set coworker ref when coworker is assigned" do
|
89
|
+
# given
|
90
|
+
coworker = MoveToGo::Coworker.new({:integration_id => "123" })
|
91
|
+
coworker.parse_name_to_firstname_lastname_se "Billy Bob"
|
92
|
+
|
93
|
+
# when
|
94
|
+
todo.created_by = coworker
|
95
|
+
|
96
|
+
# then
|
97
|
+
todo.created_by.is_a?(MoveToGo::Coworker).should eq true
|
98
|
+
todo.instance_variable_get(:@created_by_reference).is_a?(MoveToGo::CoworkerReference).should eq true
|
99
|
+
end
|
100
|
+
|
101
|
+
it "will set deal ref when deal is assigned" do
|
102
|
+
# given
|
103
|
+
deal = MoveToGo::Deal.new({:integration_id => "123" })
|
104
|
+
deal.name = "The new deal"
|
105
|
+
|
106
|
+
# when
|
107
|
+
todo.deal = deal
|
108
|
+
|
109
|
+
# then
|
110
|
+
todo.deal.is_a?(MoveToGo::Deal).should eq true
|
111
|
+
todo.instance_variable_get(:@deal_reference).is_a?(MoveToGo::DealReference).should eq true
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should remove form feed from text" do
|
115
|
+
# given
|
116
|
+
textWithFormFeed = "Text with form feed"
|
117
|
+
textWithoutFormFeed = "Text with form feed"
|
118
|
+
|
119
|
+
# when
|
120
|
+
todo.text = textWithFormFeed
|
121
|
+
|
122
|
+
# then
|
123
|
+
todo.text.should eq textWithoutFormFeed
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should remove vertical tab from text" do
|
127
|
+
# given
|
128
|
+
textWithVerticalTab = "Text with \vvertical tab"
|
129
|
+
textWithoutVerticalTab = "Text with vertical tab"
|
130
|
+
|
131
|
+
# when
|
132
|
+
todo.text = textWithVerticalTab
|
133
|
+
|
134
|
+
# then
|
135
|
+
todo.text.should eq textWithoutVerticalTab
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should remove backspace from text" do
|
139
|
+
# given
|
140
|
+
textWithBackSpace = "Text with \bbackspace"
|
141
|
+
textWithoutBackSpace = "Text with backspace"
|
142
|
+
|
143
|
+
# when
|
144
|
+
todo.text = textWithBackSpace
|
145
|
+
|
146
|
+
# then
|
147
|
+
todo.text.should eq textWithoutBackSpace
|
148
|
+
end
|
149
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: move-to-go
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Petter Sandholdt
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2018-04-
|
17
|
+
date: 2018-04-10 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: iso_country_codes
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- lib/move-to-go/model/history.rb
|
206
206
|
- lib/move-to-go/model/history_classification.rb
|
207
207
|
- lib/move-to-go/model/link.rb
|
208
|
+
- lib/move-to-go/model/meeting.rb
|
208
209
|
- lib/move-to-go/model/organization.rb
|
209
210
|
- lib/move-to-go/model/organizations.rb
|
210
211
|
- lib/move-to-go/model/person.rb
|
@@ -215,6 +216,7 @@ files:
|
|
215
216
|
- lib/move-to-go/model/settings.rb
|
216
217
|
- lib/move-to-go/model/tag.rb
|
217
218
|
- lib/move-to-go/model/talkedto.rb
|
219
|
+
- lib/move-to-go/model/todo.rb
|
218
220
|
- lib/move-to-go/model/triedtoreach.rb
|
219
221
|
- lib/move-to-go/model_helpers.rb
|
220
222
|
- lib/move-to-go/phone_helper.rb
|
@@ -312,11 +314,13 @@ files:
|
|
312
314
|
- spec/helpers/xsd_validate_spec.rb
|
313
315
|
- spec/history_spec.rb
|
314
316
|
- spec/link_spec.rb
|
317
|
+
- spec/meeting_spec.rb
|
315
318
|
- spec/organization_spec.rb
|
316
319
|
- spec/organizations_spec.rb
|
317
320
|
- spec/person_spec.rb
|
318
321
|
- spec/rootmodel_spec.rb
|
319
322
|
- spec/spec_helper.rb
|
323
|
+
- spec/todo_spec.rb
|
320
324
|
homepage:
|
321
325
|
licenses: []
|
322
326
|
metadata:
|
@@ -360,8 +364,10 @@ test_files:
|
|
360
364
|
- spec/helpers/xsd_validate_spec.rb
|
361
365
|
- spec/history_spec.rb
|
362
366
|
- spec/link_spec.rb
|
367
|
+
- spec/meeting_spec.rb
|
363
368
|
- spec/organizations_spec.rb
|
364
369
|
- spec/organization_spec.rb
|
365
370
|
- spec/person_spec.rb
|
366
371
|
- spec/rootmodel_spec.rb
|
367
372
|
- spec/spec_helper.rb
|
373
|
+
- spec/todo_spec.rb
|