fruit_to_lime 2.5.3 → 2.5.5

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.
Files changed (57) hide show
  1. data/lib/fruit_to_lime.rb +17 -17
  2. data/lib/fruit_to_lime/csv_helper.rb +47 -47
  3. data/lib/fruit_to_lime/email_helper.rb +10 -10
  4. data/lib/fruit_to_lime/errors.rb +16 -16
  5. data/lib/fruit_to_lime/excel_helper.rb +10 -10
  6. data/lib/fruit_to_lime/global_phone.json +6571 -6571
  7. data/lib/fruit_to_lime/model/address.rb +60 -60
  8. data/lib/fruit_to_lime/model/class_settings.rb +50 -50
  9. data/lib/fruit_to_lime/model/coworker.rb +76 -76
  10. data/lib/fruit_to_lime/model/coworker_reference.rb +33 -33
  11. data/lib/fruit_to_lime/model/customfield.rb +87 -87
  12. data/lib/fruit_to_lime/model/deal.rb +141 -145
  13. data/lib/fruit_to_lime/model/deal_status.rb +12 -12
  14. data/lib/fruit_to_lime/model/note.rb +79 -79
  15. data/lib/fruit_to_lime/model/organization.rb +203 -197
  16. data/lib/fruit_to_lime/model/person.rb +151 -151
  17. data/lib/fruit_to_lime/model/referencetosource.rb +45 -45
  18. data/lib/fruit_to_lime/model/relation.rb +23 -23
  19. data/lib/fruit_to_lime/model/rootmodel.rb +338 -330
  20. data/lib/fruit_to_lime/model/settings.rb +60 -60
  21. data/lib/fruit_to_lime/model/tag.rb +35 -35
  22. data/lib/fruit_to_lime/model_helpers.rb +54 -54
  23. data/lib/fruit_to_lime/phone_helper.rb +74 -74
  24. data/lib/fruit_to_lime/roo_helper.rb +72 -72
  25. data/lib/fruit_to_lime/serialize_helper.rb +186 -186
  26. data/lib/fruit_to_lime/templating.rb +52 -52
  27. data/spec/address_spec.rb +48 -48
  28. data/spec/class_settings_spec.rb +37 -37
  29. data/spec/coworker_spec.rb +94 -94
  30. data/spec/custom_field_spec.rb +22 -22
  31. data/spec/deal_spec.rb +101 -102
  32. data/spec/helpers/csv_helper_spec.rb +29 -29
  33. data/spec/helpers/email_helper_spec.rb +32 -32
  34. data/spec/helpers/phone_helper_spec.rb +97 -97
  35. data/spec/helpers/serialize_helper_spec.rb +249 -249
  36. data/spec/helpers/xsd_validate_spec.rb +58 -58
  37. data/spec/note_spec.rb +98 -67
  38. data/spec/organization_spec.rb +103 -89
  39. data/spec/person_spec.rb +134 -134
  40. data/spec/rootmodel_spec.rb +277 -230
  41. data/spec/templating_spec.rb +11 -11
  42. data/templates/csv/lib/tomodel.rb +230 -230
  43. data/templates/csv/spec/exporter_spec.rb +17 -17
  44. data/templates/csv/spec/sample_data/coworkers.csv +2 -2
  45. data/templates/csv/spec/sample_data/deals.csv +2 -2
  46. data/templates/csv/spec/sample_data/organizations.csv +2 -2
  47. data/templates/csv/spec/sample_data/persons.csv +2 -2
  48. data/templates/easy/Gemfile +5 -0
  49. data/templates/easy/Rakefile.rb +7 -0
  50. data/templates/easy/convert.rb +3 -0
  51. data/templates/easy/lib/tomodel.rb +330 -0
  52. data/templates/easy/spec/exporter_spec.rb +10 -0
  53. data/templates/easy/spec/sample_data/Company.txt +649 -0
  54. data/templates/easy/spec/spec_helper.rb +24 -0
  55. data/templates/excel/lib/tomodel.rb +207 -207
  56. data/templates/sqlserver/lib/tomodel.rb +79 -79
  57. metadata +10 -3
@@ -1,22 +1,22 @@
1
- require "spec_helper"
2
- require 'fruit_to_lime'
3
-
4
- describe "CustomField" do
5
- before (:all) do
6
- @custom_field = FruitToLime::CustomField.new({:id => 'the id',
7
- :integration_id=>'the key',
8
- :value=> 'the value'})
9
- end
10
-
11
- it "is the same as a custom field with the same integration_id" do
12
- @custom_field.same_as?(FruitToLime::CustomField.new({:integration_id=>'the key',
13
- :value=> 'the value 2'})).should eq true
14
- end
15
-
16
- it "is the same as a custom field with the same id" do
17
- @custom_field.same_as?(FruitToLime::CustomField.new({:id=>'the id',
18
- :value=> 'the value 2'})).should eq true
19
- end
20
-
21
- end
22
-
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "CustomField" do
5
+ before (:all) do
6
+ @custom_field = FruitToLime::CustomField.new({:id => 'the id',
7
+ :integration_id=>'the key',
8
+ :value=> 'the value'})
9
+ end
10
+
11
+ it "is the same as a custom field with the same integration_id" do
12
+ @custom_field.same_as?(FruitToLime::CustomField.new({:integration_id=>'the key',
13
+ :value=> 'the value 2'})).should eq true
14
+ end
15
+
16
+ it "is the same as a custom field with the same id" do
17
+ @custom_field.same_as?(FruitToLime::CustomField.new({:id=>'the id',
18
+ :value=> 'the value 2'})).should eq true
19
+ end
20
+
21
+ end
22
+
data/spec/deal_spec.rb CHANGED
@@ -1,102 +1,101 @@
1
- require "spec_helper"
2
- require 'fruit_to_lime'
3
-
4
- describe "Deal" do
5
- let(:deal){
6
- FruitToLime::Deal.new
7
- }
8
-
9
- it "can attach a current status" do
10
- deal.with_status do |status|
11
- status.label = 'xyz'
12
- status.id = '123'
13
- status.date = DateTime.now
14
- status.note = 'ho ho'
15
- end
16
- end
17
-
18
- it "will auto convert org to org.ref during assignment" do
19
- # given
20
- org = FruitToLime::Organization.new({:integration_id => "123", :name => "Lundalogik"})
21
-
22
- # when
23
- deal.customer = org
24
-
25
- # then
26
- deal.customer.is_a?(FruitToLime::OrganizationReference).should eq true
27
- end
28
-
29
- it "will auto convert coworker to coworker.ref during assignment" do
30
- # given
31
- coworker = FruitToLime::Coworker.new({:integration_id => "456", :first_name => "Billy", :last_name => "Bob"})
32
-
33
- # when
34
- deal.responsible_coworker = coworker
35
-
36
- # then
37
- deal.responsible_coworker.is_a?(FruitToLime::CoworkerReference).should eq true
38
- end
39
-
40
- it "will auto convert person to person.ref during assignment" do
41
- # given
42
- person = FruitToLime::Person.new({:integration_id => "123"})
43
-
44
- # when
45
- deal.customer_contact = person
46
-
47
- # then
48
- deal.customer_contact.is_a?(FruitToLime::PersonReference).should eq true
49
- end
50
-
51
- it "will fail on validation if name and customer is empty" do
52
- # given, when
53
- deal.name = "The big deal"
54
- deal.customer = FruitToLime::Organization.new({:integration_id => "123", :name => "Lundalogik"})
55
-
56
- # then
57
- deal.validate.should eq ""
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
102
- end
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "Deal" do
5
+ let(:deal){
6
+ FruitToLime::Deal.new
7
+ }
8
+
9
+ it "can attach a current status" do
10
+ deal.with_status do |status|
11
+ status.label = 'xyz'
12
+ status.id = '123'
13
+ status.date = DateTime.now
14
+ status.note = 'ho ho'
15
+ end
16
+ end
17
+
18
+ it "will auto convert org to org.ref during assignment" do
19
+ # given
20
+ org = FruitToLime::Organization.new({:integration_id => "123", :name => "Lundalogik"})
21
+
22
+ # when
23
+ deal.customer = org
24
+
25
+ # then
26
+ deal.customer.is_a?(FruitToLime::OrganizationReference).should eq true
27
+ end
28
+
29
+ it "will auto convert coworker to coworker.ref during assignment" do
30
+ # given
31
+ coworker = FruitToLime::Coworker.new({:integration_id => "456", :first_name => "Billy", :last_name => "Bob"})
32
+
33
+ # when
34
+ deal.responsible_coworker = coworker
35
+
36
+ # then
37
+ deal.responsible_coworker.is_a?(FruitToLime::CoworkerReference).should eq true
38
+ end
39
+
40
+ it "will auto convert person to person.ref during assignment" do
41
+ # given
42
+ person = FruitToLime::Person.new({:integration_id => "123"})
43
+
44
+ # when
45
+ deal.customer_contact = person
46
+
47
+ # then
48
+ deal.customer_contact.is_a?(FruitToLime::PersonReference).should eq true
49
+ end
50
+
51
+ it "will fail on validation if name is empty" do
52
+ # given
53
+ deal.name = "The big deal"
54
+
55
+ # when, then
56
+ deal.validate.should eq ""
57
+ end
58
+
59
+ it "should convert value strings that looks like number to number" do
60
+ # given
61
+ deal.name = "The deal with a strange value"
62
+
63
+ # when
64
+ deal.value = "357 000"
65
+
66
+ # then
67
+ deal.value.should eq "357000"
68
+ end
69
+
70
+ it "should raise invalidvalueerror if value is not a number" do
71
+ # given
72
+ deal.name = "The deal with an invalid value"
73
+
74
+ # when, then
75
+ expect {
76
+ deal.value = "Im not a number"
77
+ }.to raise_error(FruitToLime::InvalidValueError)
78
+ end
79
+
80
+ it "should set value if value is an integer" do
81
+ # given
82
+ deal.name = "The new deal"
83
+
84
+ # when
85
+ deal.value = "100"
86
+
87
+ # then
88
+ deal.value.should eq "100"
89
+ end
90
+
91
+ it "should set value if value is a float" do
92
+ # given
93
+ deal.name = "The new deal"
94
+
95
+ # when
96
+ deal.value = "100.10"
97
+
98
+ # then
99
+ deal.value.should eq "100.10"
100
+ end
101
+ end
@@ -1,29 +1,29 @@
1
- require 'spec_helper'
2
- require 'fruit_to_lime'
3
-
4
- describe FruitToLime::CsvHelper do
5
- it "should" do
6
- v = FruitToLime::CsvHelper.text_to_hashes("id;navn
7
- 1;Noerrebro")
8
- v.should include({"id"=>"1","navn"=>"Noerrebro"})
9
- end
10
- it "should handle sv chars" do
11
- v = FruitToLime::CsvHelper.text_to_hashes("id;navn
12
- 1;Bj\u{00F6}rk")
13
- v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk"})
14
- end
15
- it "should handle escaped newlines" do
16
- v = FruitToLime::CsvHelper.text_to_hashes("id;navn
17
- 1;\"Bj\u{00F6}rk
18
- And a new line\"")
19
- v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
20
- And a new line"})
21
- end
22
- it "should handle escaped newlines with ',' as delim" do
23
- v = FruitToLime::CsvHelper.text_to_hashes("id,navn
24
- 1,\"Bj\u{00F6}rk
25
- And a new line\"")
26
- v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
27
- And a new line"})
28
- end
29
- end
1
+ require 'spec_helper'
2
+ require 'fruit_to_lime'
3
+
4
+ describe FruitToLime::CsvHelper do
5
+ it "should" do
6
+ v = FruitToLime::CsvHelper.text_to_hashes("id;navn
7
+ 1;Noerrebro")
8
+ v.should include({"id"=>"1","navn"=>"Noerrebro"})
9
+ end
10
+ it "should handle sv chars" do
11
+ v = FruitToLime::CsvHelper.text_to_hashes("id;navn
12
+ 1;Bj\u{00F6}rk")
13
+ v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk"})
14
+ end
15
+ it "should handle escaped newlines" do
16
+ v = FruitToLime::CsvHelper.text_to_hashes("id;navn
17
+ 1;\"Bj\u{00F6}rk
18
+ And a new line\"")
19
+ v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
20
+ And a new line"})
21
+ end
22
+ it "should handle escaped newlines with ',' as delim" do
23
+ v = FruitToLime::CsvHelper.text_to_hashes("id,navn
24
+ 1,\"Bj\u{00F6}rk
25
+ And a new line\"")
26
+ v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
27
+ And a new line"})
28
+ end
29
+ end
@@ -1,32 +1,32 @@
1
- require 'spec_helper'
2
- require 'fruit_to_lime'
3
-
4
- describe FruitToLime::EmailHelper do
5
- it "should validate a common email address" do
6
- # given
7
- import_email = "apl@lundalogik.se"
8
-
9
- # when, then
10
- FruitToLime::EmailHelper.is_valid?(import_email).should eq true
11
- end
12
-
13
- it "should validate an address with firstname.lastname" do
14
- FruitToLime::EmailHelper.is_valid?("firstname.lastname@example.com").should eq true
15
- end
16
-
17
- it "should validate an address with lots of subdomains" do
18
- FruitToLime::EmailHelper.is_valid?("firstname.lastname@sub1.sub2.example.com").should eq true
19
- end
20
-
21
- it "should validate an address with some special chars" do
22
- FruitToLime::EmailHelper.is_valid?("firstname-lastname+=@sub1.sub2.example.com").should eq true
23
- end
24
-
25
- it "should validate an address with no top level domain" do
26
- FruitToLime::EmailHelper.is_valid?("firstname@example").should eq true
27
- end
28
-
29
- it "should not validate an invalid address" do
30
- FruitToLime::EmailHelper.is_valid?("hubbabubba").should eq false
31
- end
32
- end
1
+ require 'spec_helper'
2
+ require 'fruit_to_lime'
3
+
4
+ describe FruitToLime::EmailHelper do
5
+ it "should validate a common email address" do
6
+ # given
7
+ import_email = "apl@lundalogik.se"
8
+
9
+ # when, then
10
+ FruitToLime::EmailHelper.is_valid?(import_email).should eq true
11
+ end
12
+
13
+ it "should validate an address with firstname.lastname" do
14
+ FruitToLime::EmailHelper.is_valid?("firstname.lastname@example.com").should eq true
15
+ end
16
+
17
+ it "should validate an address with lots of subdomains" do
18
+ FruitToLime::EmailHelper.is_valid?("firstname.lastname@sub1.sub2.example.com").should eq true
19
+ end
20
+
21
+ it "should validate an address with some special chars" do
22
+ FruitToLime::EmailHelper.is_valid?("firstname-lastname+=@sub1.sub2.example.com").should eq true
23
+ end
24
+
25
+ it "should validate an address with no top level domain" do
26
+ FruitToLime::EmailHelper.is_valid?("firstname@example").should eq true
27
+ end
28
+
29
+ it "should not validate an invalid address" do
30
+ FruitToLime::EmailHelper.is_valid?("hubbabubba").should eq false
31
+ end
32
+ end
@@ -1,97 +1,97 @@
1
- require 'spec_helper'
2
- require 'fruit_to_lime'
3
-
4
- describe FruitToLime::PhoneHelper do
5
- before(:each) do
6
- FruitToLime::PhoneHelper.set_country_code(:se)
7
- end
8
-
9
- it "should parse phonenumbers" do
10
- # given, when
11
- nice_number = FruitToLime::PhoneHelper.parse_numbers("0709-685226")
12
-
13
- # then
14
- nice_number.should eq "+46709685226"
15
- end
16
-
17
- it "should parse multiple numbers with default delimiter" do
18
- # given
19
- source = "046 - 270 48 00, 0709-685226"
20
-
21
- # when
22
- home, mobile = FruitToLime::PhoneHelper.parse_numbers(source)
23
-
24
- # then
25
- home.should eq "+46462704800"
26
- mobile.should eq "+46709685226"
27
- end
28
-
29
- it "should parse multiple numbers with custom delimiter" do
30
- # given
31
- source = "046 - 270 48 00/ 0709-685226"
32
-
33
- # when
34
- home, mobile = FruitToLime::PhoneHelper.parse_numbers(source, '/')
35
-
36
- # then
37
- home.should eq "+46462704800"
38
- mobile.should eq "+46709685226"
39
- end
40
-
41
- it "should parse numbers with different delimiters" do
42
- # given
43
- source1 = "046 - 270 48 00/ 0709-685226"
44
- source2 = "08-562 776 00, 070-73 85 180"
45
- source3 = "031-712 44 00\\\\ 0707 38 52 72/, 031 71 244 04"
46
-
47
- # when
48
- home1, mobile1 = FruitToLime::PhoneHelper.parse_numbers(source1, ['/', ',', "\\\\"])
49
- home2, mobile2 = FruitToLime::PhoneHelper.parse_numbers(source2, ['/', ',', "\\\\"])
50
- home3, mobile3, direct3 = FruitToLime::PhoneHelper.parse_numbers(source3, ['/', ',', "\\\\"])
51
-
52
- # then
53
- home1.should eq "+46462704800"
54
- mobile1.should eq "+46709685226"
55
-
56
- home2.should eq "+46856277600"
57
- mobile2.should eq "+46707385180"
58
-
59
- home3.should eq "+46317124400"
60
- mobile3.should eq "+46707385272"
61
- direct3.should eq "+46317124404"
62
- end
63
-
64
- it "should not mess with invalid numbers by default" do
65
- # given
66
- source = "im not a number"
67
-
68
- # when
69
- number = FruitToLime::PhoneHelper.parse_numbers(source)
70
-
71
- # then
72
- number.should eq "im not a number"
73
- end
74
-
75
- it "should not mess with invalid numbers unless strict mode" do
76
- # given
77
- source = "im not a number"
78
-
79
- # when
80
- number = FruitToLime::PhoneHelper.parse_numbers_strict(source)
81
-
82
- # then
83
- number.should eq ""
84
- end
85
-
86
- it "should parse foreign numbers" do
87
- # given
88
- source = "22 13 00 30"
89
-
90
- # when
91
- FruitToLime::PhoneHelper.set_country_code(:no)
92
- number = FruitToLime::PhoneHelper.parse_numbers(source)
93
-
94
- # then
95
- number.should eq "+4722130030"
96
- end
97
- end
1
+ require 'spec_helper'
2
+ require 'fruit_to_lime'
3
+
4
+ describe FruitToLime::PhoneHelper do
5
+ before(:each) do
6
+ FruitToLime::PhoneHelper.set_country_code(:se)
7
+ end
8
+
9
+ it "should parse phonenumbers" do
10
+ # given, when
11
+ nice_number = FruitToLime::PhoneHelper.parse_numbers("0709-685226")
12
+
13
+ # then
14
+ nice_number.should eq "+46709685226"
15
+ end
16
+
17
+ it "should parse multiple numbers with default delimiter" do
18
+ # given
19
+ source = "046 - 270 48 00, 0709-685226"
20
+
21
+ # when
22
+ home, mobile = FruitToLime::PhoneHelper.parse_numbers(source)
23
+
24
+ # then
25
+ home.should eq "+46462704800"
26
+ mobile.should eq "+46709685226"
27
+ end
28
+
29
+ it "should parse multiple numbers with custom delimiter" do
30
+ # given
31
+ source = "046 - 270 48 00/ 0709-685226"
32
+
33
+ # when
34
+ home, mobile = FruitToLime::PhoneHelper.parse_numbers(source, '/')
35
+
36
+ # then
37
+ home.should eq "+46462704800"
38
+ mobile.should eq "+46709685226"
39
+ end
40
+
41
+ it "should parse numbers with different delimiters" do
42
+ # given
43
+ source1 = "046 - 270 48 00/ 0709-685226"
44
+ source2 = "08-562 776 00, 070-73 85 180"
45
+ source3 = "031-712 44 00\\\\ 0707 38 52 72/, 031 71 244 04"
46
+
47
+ # when
48
+ home1, mobile1 = FruitToLime::PhoneHelper.parse_numbers(source1, ['/', ',', "\\\\"])
49
+ home2, mobile2 = FruitToLime::PhoneHelper.parse_numbers(source2, ['/', ',', "\\\\"])
50
+ home3, mobile3, direct3 = FruitToLime::PhoneHelper.parse_numbers(source3, ['/', ',', "\\\\"])
51
+
52
+ # then
53
+ home1.should eq "+46462704800"
54
+ mobile1.should eq "+46709685226"
55
+
56
+ home2.should eq "+46856277600"
57
+ mobile2.should eq "+46707385180"
58
+
59
+ home3.should eq "+46317124400"
60
+ mobile3.should eq "+46707385272"
61
+ direct3.should eq "+46317124404"
62
+ end
63
+
64
+ it "should not mess with invalid numbers by default" do
65
+ # given
66
+ source = "im not a number"
67
+
68
+ # when
69
+ number = FruitToLime::PhoneHelper.parse_numbers(source)
70
+
71
+ # then
72
+ number.should eq "im not a number"
73
+ end
74
+
75
+ it "should not mess with invalid numbers unless strict mode" do
76
+ # given
77
+ source = "im not a number"
78
+
79
+ # when
80
+ number = FruitToLime::PhoneHelper.parse_numbers_strict(source)
81
+
82
+ # then
83
+ number.should eq ""
84
+ end
85
+
86
+ it "should parse foreign numbers" do
87
+ # given
88
+ source = "22 13 00 30"
89
+
90
+ # when
91
+ FruitToLime::PhoneHelper.set_country_code(:no)
92
+ number = FruitToLime::PhoneHelper.parse_numbers(source)
93
+
94
+ # then
95
+ number.should eq "+4722130030"
96
+ end
97
+ end