fruit_to_lime 2.5.5 → 2.5.6
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.
- data/lib/fruit_to_lime.rb +17 -17
- data/lib/fruit_to_lime/csv_helper.rb +47 -47
- data/lib/fruit_to_lime/email_helper.rb +10 -10
- data/lib/fruit_to_lime/errors.rb +16 -16
- data/lib/fruit_to_lime/excel_helper.rb +10 -10
- data/lib/fruit_to_lime/global_phone.json +6571 -6571
- data/lib/fruit_to_lime/model/address.rb +60 -60
- data/lib/fruit_to_lime/model/class_settings.rb +50 -50
- data/lib/fruit_to_lime/model/coworker.rb +76 -76
- data/lib/fruit_to_lime/model/coworker_reference.rb +33 -33
- data/lib/fruit_to_lime/model/customfield.rb +87 -87
- data/lib/fruit_to_lime/model/deal.rb +141 -141
- data/lib/fruit_to_lime/model/deal_status.rb +12 -12
- data/lib/fruit_to_lime/model/note.rb +80 -79
- data/lib/fruit_to_lime/model/organization.rb +203 -203
- data/lib/fruit_to_lime/model/person.rb +151 -151
- data/lib/fruit_to_lime/model/referencetosource.rb +45 -45
- data/lib/fruit_to_lime/model/relation.rb +23 -23
- data/lib/fruit_to_lime/model/rootmodel.rb +342 -338
- data/lib/fruit_to_lime/model/settings.rb +60 -60
- data/lib/fruit_to_lime/model/tag.rb +35 -35
- data/lib/fruit_to_lime/model_helpers.rb +54 -54
- data/lib/fruit_to_lime/phone_helper.rb +74 -74
- data/lib/fruit_to_lime/roo_helper.rb +72 -72
- data/lib/fruit_to_lime/serialize_helper.rb +186 -186
- data/lib/fruit_to_lime/templating.rb +52 -52
- data/spec/address_spec.rb +48 -48
- data/spec/class_settings_spec.rb +37 -37
- data/spec/coworker_spec.rb +94 -94
- data/spec/custom_field_spec.rb +22 -22
- data/spec/deal_spec.rb +101 -101
- data/spec/helpers/csv_helper_spec.rb +29 -29
- data/spec/helpers/email_helper_spec.rb +32 -32
- data/spec/helpers/phone_helper_spec.rb +97 -97
- data/spec/helpers/serialize_helper_spec.rb +249 -249
- data/spec/helpers/xsd_validate_spec.rb +58 -58
- data/spec/note_spec.rb +98 -98
- data/spec/organization_spec.rb +103 -103
- data/spec/person_spec.rb +134 -134
- data/spec/rootmodel_spec.rb +306 -277
- data/spec/templating_spec.rb +11 -11
- data/templates/csv/lib/tomodel.rb +230 -230
- data/templates/csv/spec/exporter_spec.rb +17 -17
- data/templates/csv/spec/sample_data/coworkers.csv +2 -2
- data/templates/csv/spec/sample_data/deals.csv +2 -2
- data/templates/csv/spec/sample_data/organizations.csv +2 -2
- data/templates/csv/spec/sample_data/persons.csv +2 -2
- data/templates/easy/Gemfile +5 -5
- data/templates/easy/Rakefile.rb +7 -7
- data/templates/easy/convert.rb +2 -2
- data/templates/easy/spec/exporter_spec.rb +10 -10
- data/templates/easy/spec/spec_helper.rb +24 -24
- data/templates/excel/lib/tomodel.rb +207 -207
- data/templates/sqlserver/lib/tomodel.rb +79 -79
- metadata +3 -3
@@ -1,58 +1,58 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'fruit_to_lime'
|
4
|
-
require 'nokogiri'
|
5
|
-
describe FruitToLime::SerializeHelper do
|
6
|
-
|
7
|
-
describe "Validate according to xsd" do
|
8
|
-
let(:validate_result) {
|
9
|
-
i = FruitToLime::RootModel.new
|
10
|
-
i.settings.with_organization do |s|
|
11
|
-
s.set_custom_field({:integration_id=>"2", :title=>"cf title"})
|
12
|
-
s.set_custom_field({:integration_id=>"3", :title=>"cf title2"})
|
13
|
-
end
|
14
|
-
i.add_coworker({
|
15
|
-
:integration_id=>"123",
|
16
|
-
:first_name=>"Kalle",
|
17
|
-
:last_name=>"Anka",
|
18
|
-
:email=>"kalle.anka@vonanka.com"
|
19
|
-
})
|
20
|
-
o = FruitToLime::Organization.new
|
21
|
-
o.name = "Ankeborgs bibliotek"
|
22
|
-
o.with_source do |source|
|
23
|
-
source.par_se('122345')
|
24
|
-
end
|
25
|
-
#o.source_ref = {:name=>'Go',:id=>"PASE122345"}
|
26
|
-
o.set_tag("tag:bibliotek")
|
27
|
-
o.set_tag("tag:Bj\u{00F6}rk")
|
28
|
-
o.set_custom_field({:integration_id=>"2", :value=>"cf value"})
|
29
|
-
o.set_custom_field({:integration_id=>"3", :value=>"cf Bj\u{00F6}rk"})
|
30
|
-
o.with_postal_address do |addr|
|
31
|
-
addr.city = "Ankeborg"
|
32
|
-
end
|
33
|
-
o.with_visit_address do |addr|
|
34
|
-
addr.city = "Gaaseborg"
|
35
|
-
end
|
36
|
-
coworker = FruitToLime::Coworker.new({:integration_id => "1", :first_name => "Vincent", :last_name => "Vega"})
|
37
|
-
o.responsible_coworker = coworker
|
38
|
-
|
39
|
-
emp = o.add_employee({
|
40
|
-
:integration_id => "1",
|
41
|
-
:first_name => "Kalle",
|
42
|
-
:last_name => "Anka"
|
43
|
-
})
|
44
|
-
emp.direct_phone_number = '234234234'
|
45
|
-
emp.currently_employed = true
|
46
|
-
i.organizations.push(o)
|
47
|
-
xsd_file = File.join(File.dirname(__FILE__), '..', 'sample_data', 'schema0.xsd')
|
48
|
-
|
49
|
-
xsd = Nokogiri::XML::Schema(File.read(xsd_file))
|
50
|
-
doc = Nokogiri::XML(FruitToLime::SerializeHelper::serialize(i,-1))
|
51
|
-
xsd.validate(doc)
|
52
|
-
}
|
53
|
-
it "Should not contain validation errors" do
|
54
|
-
expect(validate_result).to eq([])
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
1
|
+
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'fruit_to_lime'
|
4
|
+
require 'nokogiri'
|
5
|
+
describe FruitToLime::SerializeHelper do
|
6
|
+
|
7
|
+
describe "Validate according to xsd" do
|
8
|
+
let(:validate_result) {
|
9
|
+
i = FruitToLime::RootModel.new
|
10
|
+
i.settings.with_organization do |s|
|
11
|
+
s.set_custom_field({:integration_id=>"2", :title=>"cf title"})
|
12
|
+
s.set_custom_field({:integration_id=>"3", :title=>"cf title2"})
|
13
|
+
end
|
14
|
+
i.add_coworker({
|
15
|
+
:integration_id=>"123",
|
16
|
+
:first_name=>"Kalle",
|
17
|
+
:last_name=>"Anka",
|
18
|
+
:email=>"kalle.anka@vonanka.com"
|
19
|
+
})
|
20
|
+
o = FruitToLime::Organization.new
|
21
|
+
o.name = "Ankeborgs bibliotek"
|
22
|
+
o.with_source do |source|
|
23
|
+
source.par_se('122345')
|
24
|
+
end
|
25
|
+
#o.source_ref = {:name=>'Go',:id=>"PASE122345"}
|
26
|
+
o.set_tag("tag:bibliotek")
|
27
|
+
o.set_tag("tag:Bj\u{00F6}rk")
|
28
|
+
o.set_custom_field({:integration_id=>"2", :value=>"cf value"})
|
29
|
+
o.set_custom_field({:integration_id=>"3", :value=>"cf Bj\u{00F6}rk"})
|
30
|
+
o.with_postal_address do |addr|
|
31
|
+
addr.city = "Ankeborg"
|
32
|
+
end
|
33
|
+
o.with_visit_address do |addr|
|
34
|
+
addr.city = "Gaaseborg"
|
35
|
+
end
|
36
|
+
coworker = FruitToLime::Coworker.new({:integration_id => "1", :first_name => "Vincent", :last_name => "Vega"})
|
37
|
+
o.responsible_coworker = coworker
|
38
|
+
|
39
|
+
emp = o.add_employee({
|
40
|
+
:integration_id => "1",
|
41
|
+
:first_name => "Kalle",
|
42
|
+
:last_name => "Anka"
|
43
|
+
})
|
44
|
+
emp.direct_phone_number = '234234234'
|
45
|
+
emp.currently_employed = true
|
46
|
+
i.organizations.push(o)
|
47
|
+
xsd_file = File.join(File.dirname(__FILE__), '..', 'sample_data', 'schema0.xsd')
|
48
|
+
|
49
|
+
xsd = Nokogiri::XML::Schema(File.read(xsd_file))
|
50
|
+
doc = Nokogiri::XML(FruitToLime::SerializeHelper::serialize(i,-1))
|
51
|
+
xsd.validate(doc)
|
52
|
+
}
|
53
|
+
it "Should not contain validation errors" do
|
54
|
+
expect(validate_result).to eq([])
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
data/spec/note_spec.rb
CHANGED
@@ -1,98 +1,98 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'fruit_to_lime'
|
3
|
-
|
4
|
-
describe "Note" do
|
5
|
-
let("note") {
|
6
|
-
FruitToLime::Note.new
|
7
|
-
}
|
8
|
-
|
9
|
-
it "must have a text" do
|
10
|
-
note.validate.length.should be > 0
|
11
|
-
end
|
12
|
-
|
13
|
-
it "is valid when it has text, created_by and organization" do
|
14
|
-
# given
|
15
|
-
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
16
|
-
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
17
|
-
note.organization = FruitToLime::OrganizationReference.new({ :integration_id => "456", :heading => "Lundalogik" })
|
18
|
-
|
19
|
-
# when, then
|
20
|
-
note.validate.should eq ""
|
21
|
-
end
|
22
|
-
|
23
|
-
it "is valid when it has text, created_by and person" do
|
24
|
-
# given
|
25
|
-
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
26
|
-
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
27
|
-
note.person = FruitToLime::Person.new({ :integration_id => "456", :heading => "Billy Bob" })
|
28
|
-
|
29
|
-
# when, then
|
30
|
-
note.validate.should eq ""
|
31
|
-
end
|
32
|
-
|
33
|
-
it "is valid when it has text, created_by and deal" do
|
34
|
-
# given
|
35
|
-
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
36
|
-
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
37
|
-
note.deal = FruitToLime::Deal.new({ :integration_id => "456", :heading => "The new deal" })
|
38
|
-
|
39
|
-
# when, then
|
40
|
-
note.validate.should eq ""
|
41
|
-
end
|
42
|
-
|
43
|
-
it "is invalid if no note has no attached objects" do
|
44
|
-
# given
|
45
|
-
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
46
|
-
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
47
|
-
|
48
|
-
# when, then
|
49
|
-
note.validate.length.should be > 0
|
50
|
-
end
|
51
|
-
|
52
|
-
it "will auto convert org to org.ref during assignment" do
|
53
|
-
# given
|
54
|
-
org = FruitToLime::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
|
55
|
-
|
56
|
-
# when
|
57
|
-
note.organization = org
|
58
|
-
|
59
|
-
# then
|
60
|
-
note.organization.is_a?(FruitToLime::OrganizationReference).should eq true
|
61
|
-
end
|
62
|
-
|
63
|
-
it "will auto convert person to person.ref during assignment" do
|
64
|
-
# given
|
65
|
-
person = FruitToLime::Person.new({:integration_id => "123" })
|
66
|
-
person.parse_name_to_firstname_lastname_se "Billy Bob"
|
67
|
-
|
68
|
-
# when
|
69
|
-
note.person = person
|
70
|
-
|
71
|
-
# then
|
72
|
-
note.person.is_a?(FruitToLime::PersonReference).should eq true
|
73
|
-
end
|
74
|
-
|
75
|
-
it "will auto convert coworker to coworker.ref during assignment" do
|
76
|
-
# given
|
77
|
-
coworker = FruitToLime::Coworker.new({:integration_id => "123" })
|
78
|
-
coworker.parse_name_to_firstname_lastname_se "Billy Bob"
|
79
|
-
|
80
|
-
# when
|
81
|
-
note.created_by = coworker
|
82
|
-
|
83
|
-
# then
|
84
|
-
note.created_by.is_a?(FruitToLime::CoworkerReference).should eq true
|
85
|
-
end
|
86
|
-
|
87
|
-
it "will auto convert deal to deal.ref during assignment" do
|
88
|
-
# given
|
89
|
-
deal = FruitToLime::Deal.new({:integration_id => "123" })
|
90
|
-
deal.name = "The new deal"
|
91
|
-
|
92
|
-
# when
|
93
|
-
note.deal = deal
|
94
|
-
|
95
|
-
# then
|
96
|
-
note.deal.is_a?(FruitToLime::DealReference).should eq true
|
97
|
-
end
|
98
|
-
end
|
1
|
+
require "spec_helper"
|
2
|
+
require 'fruit_to_lime'
|
3
|
+
|
4
|
+
describe "Note" do
|
5
|
+
let("note") {
|
6
|
+
FruitToLime::Note.new
|
7
|
+
}
|
8
|
+
|
9
|
+
it "must have a text" do
|
10
|
+
note.validate.length.should be > 0
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is valid when it has text, created_by and organization" do
|
14
|
+
# given
|
15
|
+
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
16
|
+
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
17
|
+
note.organization = FruitToLime::OrganizationReference.new({ :integration_id => "456", :heading => "Lundalogik" })
|
18
|
+
|
19
|
+
# when, then
|
20
|
+
note.validate.should eq ""
|
21
|
+
end
|
22
|
+
|
23
|
+
it "is valid when it has text, created_by and person" do
|
24
|
+
# given
|
25
|
+
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
26
|
+
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
27
|
+
note.person = FruitToLime::Person.new({ :integration_id => "456", :heading => "Billy Bob" })
|
28
|
+
|
29
|
+
# when, then
|
30
|
+
note.validate.should eq ""
|
31
|
+
end
|
32
|
+
|
33
|
+
it "is valid when it has text, created_by and deal" do
|
34
|
+
# given
|
35
|
+
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
36
|
+
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
37
|
+
note.deal = FruitToLime::Deal.new({ :integration_id => "456", :heading => "The new deal" })
|
38
|
+
|
39
|
+
# when, then
|
40
|
+
note.validate.should eq ""
|
41
|
+
end
|
42
|
+
|
43
|
+
it "is invalid if no note has no attached objects" do
|
44
|
+
# given
|
45
|
+
note.text = "They are very interested in the new deal (the one where you get a free bike as a gift)"
|
46
|
+
note.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "kalle anka" } )
|
47
|
+
|
48
|
+
# when, then
|
49
|
+
note.validate.length.should be > 0
|
50
|
+
end
|
51
|
+
|
52
|
+
it "will auto convert org to org.ref during assignment" do
|
53
|
+
# given
|
54
|
+
org = FruitToLime::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
|
55
|
+
|
56
|
+
# when
|
57
|
+
note.organization = org
|
58
|
+
|
59
|
+
# then
|
60
|
+
note.organization.is_a?(FruitToLime::OrganizationReference).should eq true
|
61
|
+
end
|
62
|
+
|
63
|
+
it "will auto convert person to person.ref during assignment" do
|
64
|
+
# given
|
65
|
+
person = FruitToLime::Person.new({:integration_id => "123" })
|
66
|
+
person.parse_name_to_firstname_lastname_se "Billy Bob"
|
67
|
+
|
68
|
+
# when
|
69
|
+
note.person = person
|
70
|
+
|
71
|
+
# then
|
72
|
+
note.person.is_a?(FruitToLime::PersonReference).should eq true
|
73
|
+
end
|
74
|
+
|
75
|
+
it "will auto convert coworker to coworker.ref during assignment" do
|
76
|
+
# given
|
77
|
+
coworker = FruitToLime::Coworker.new({:integration_id => "123" })
|
78
|
+
coworker.parse_name_to_firstname_lastname_se "Billy Bob"
|
79
|
+
|
80
|
+
# when
|
81
|
+
note.created_by = coworker
|
82
|
+
|
83
|
+
# then
|
84
|
+
note.created_by.is_a?(FruitToLime::CoworkerReference).should eq true
|
85
|
+
end
|
86
|
+
|
87
|
+
it "will auto convert deal to deal.ref during assignment" do
|
88
|
+
# given
|
89
|
+
deal = FruitToLime::Deal.new({:integration_id => "123" })
|
90
|
+
deal.name = "The new deal"
|
91
|
+
|
92
|
+
# when
|
93
|
+
note.deal = deal
|
94
|
+
|
95
|
+
# then
|
96
|
+
note.deal.is_a?(FruitToLime::DealReference).should eq true
|
97
|
+
end
|
98
|
+
end
|
data/spec/organization_spec.rb
CHANGED
@@ -1,103 +1,103 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'fruit_to_lime'
|
3
|
-
|
4
|
-
describe "Organization" do
|
5
|
-
let(:organization) {
|
6
|
-
FruitToLime::Organization.new
|
7
|
-
}
|
8
|
-
|
9
|
-
it "must have a name" do
|
10
|
-
organization.name = "Lundalogik"
|
11
|
-
|
12
|
-
organization.validate.should eq ""
|
13
|
-
end
|
14
|
-
|
15
|
-
it "will fail on validateion if it has a source with no sourceid" do
|
16
|
-
# given
|
17
|
-
organization.name = "Lundalogik"
|
18
|
-
|
19
|
-
# when
|
20
|
-
organization.with_source do |source|
|
21
|
-
source.par_se('')
|
22
|
-
end
|
23
|
-
|
24
|
-
# then
|
25
|
-
organization.validate.length.should be > 0
|
26
|
-
end
|
27
|
-
|
28
|
-
it "will fail on validation if no name is specified" do
|
29
|
-
# given
|
30
|
-
organization.name = ""
|
31
|
-
|
32
|
-
# when, then
|
33
|
-
organization.validate.length.should be > 0
|
34
|
-
end
|
35
|
-
|
36
|
-
it "will auto convert coworker to coworker.ref during assignment" do
|
37
|
-
# given
|
38
|
-
coworker = FruitToLime::Coworker.new({:integration_id => "456", :first_name => "Billy", :last_name => "Bob"})
|
39
|
-
|
40
|
-
# when
|
41
|
-
organization.responsible_coworker = coworker
|
42
|
-
|
43
|
-
# then
|
44
|
-
organization.responsible_coworker.is_a?(FruitToLime::CoworkerReference).should eq true
|
45
|
-
end
|
46
|
-
|
47
|
-
it "will have a no relation as default" do
|
48
|
-
# given, when, then
|
49
|
-
organization.relation.should eq FruitToLime::Relation::NoRelation
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should only accept relations from Relations enum" do
|
53
|
-
# given, when
|
54
|
-
organization.relation = FruitToLime::Relation::IsACustomer
|
55
|
-
|
56
|
-
# then
|
57
|
-
organization.relation.should eq FruitToLime::Relation::IsACustomer
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should not accept invalid relations" do
|
61
|
-
# when, then
|
62
|
-
expect {
|
63
|
-
organization.relation = "hubbabubba"
|
64
|
-
}.to raise_error(FruitToLime::InvalidRelationError)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe "OrganizationReference" do
|
69
|
-
it "can be created from an organization" do
|
70
|
-
# given
|
71
|
-
org = FruitToLime::Organization.new
|
72
|
-
org.name = "Lundalogik"
|
73
|
-
org.integration_id = "123"
|
74
|
-
|
75
|
-
# when
|
76
|
-
ref = FruitToLime::OrganizationReference.from_organization(org)
|
77
|
-
|
78
|
-
# then
|
79
|
-
ref.is_a?(FruitToLime::OrganizationReference).should eq true
|
80
|
-
ref.heading.should eq "Lundalogik"
|
81
|
-
ref.integration_id.should eq "123"
|
82
|
-
end
|
83
|
-
|
84
|
-
it "can be created from an organization_reference" do
|
85
|
-
# given
|
86
|
-
orgref = FruitToLime::OrganizationReference.new
|
87
|
-
orgref.heading = "Lundalogik"
|
88
|
-
|
89
|
-
# when
|
90
|
-
ref = FruitToLime::OrganizationReference.from_organization(orgref)
|
91
|
-
|
92
|
-
# then
|
93
|
-
ref.is_a?(FruitToLime::OrganizationReference).should eq true
|
94
|
-
end
|
95
|
-
|
96
|
-
it "is nil when created from nil" do
|
97
|
-
# given, when
|
98
|
-
ref = FruitToLime::OrganizationReference.from_organization(nil)
|
99
|
-
|
100
|
-
# then
|
101
|
-
ref.should eq nil
|
102
|
-
end
|
103
|
-
end
|
1
|
+
require "spec_helper"
|
2
|
+
require 'fruit_to_lime'
|
3
|
+
|
4
|
+
describe "Organization" do
|
5
|
+
let(:organization) {
|
6
|
+
FruitToLime::Organization.new
|
7
|
+
}
|
8
|
+
|
9
|
+
it "must have a name" do
|
10
|
+
organization.name = "Lundalogik"
|
11
|
+
|
12
|
+
organization.validate.should eq ""
|
13
|
+
end
|
14
|
+
|
15
|
+
it "will fail on validateion if it has a source with no sourceid" do
|
16
|
+
# given
|
17
|
+
organization.name = "Lundalogik"
|
18
|
+
|
19
|
+
# when
|
20
|
+
organization.with_source do |source|
|
21
|
+
source.par_se('')
|
22
|
+
end
|
23
|
+
|
24
|
+
# then
|
25
|
+
organization.validate.length.should be > 0
|
26
|
+
end
|
27
|
+
|
28
|
+
it "will fail on validation if no name is specified" do
|
29
|
+
# given
|
30
|
+
organization.name = ""
|
31
|
+
|
32
|
+
# when, then
|
33
|
+
organization.validate.length.should be > 0
|
34
|
+
end
|
35
|
+
|
36
|
+
it "will auto convert coworker to coworker.ref during assignment" do
|
37
|
+
# given
|
38
|
+
coworker = FruitToLime::Coworker.new({:integration_id => "456", :first_name => "Billy", :last_name => "Bob"})
|
39
|
+
|
40
|
+
# when
|
41
|
+
organization.responsible_coworker = coworker
|
42
|
+
|
43
|
+
# then
|
44
|
+
organization.responsible_coworker.is_a?(FruitToLime::CoworkerReference).should eq true
|
45
|
+
end
|
46
|
+
|
47
|
+
it "will have a no relation as default" do
|
48
|
+
# given, when, then
|
49
|
+
organization.relation.should eq FruitToLime::Relation::NoRelation
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should only accept relations from Relations enum" do
|
53
|
+
# given, when
|
54
|
+
organization.relation = FruitToLime::Relation::IsACustomer
|
55
|
+
|
56
|
+
# then
|
57
|
+
organization.relation.should eq FruitToLime::Relation::IsACustomer
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should not accept invalid relations" do
|
61
|
+
# when, then
|
62
|
+
expect {
|
63
|
+
organization.relation = "hubbabubba"
|
64
|
+
}.to raise_error(FruitToLime::InvalidRelationError)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "OrganizationReference" do
|
69
|
+
it "can be created from an organization" do
|
70
|
+
# given
|
71
|
+
org = FruitToLime::Organization.new
|
72
|
+
org.name = "Lundalogik"
|
73
|
+
org.integration_id = "123"
|
74
|
+
|
75
|
+
# when
|
76
|
+
ref = FruitToLime::OrganizationReference.from_organization(org)
|
77
|
+
|
78
|
+
# then
|
79
|
+
ref.is_a?(FruitToLime::OrganizationReference).should eq true
|
80
|
+
ref.heading.should eq "Lundalogik"
|
81
|
+
ref.integration_id.should eq "123"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "can be created from an organization_reference" do
|
85
|
+
# given
|
86
|
+
orgref = FruitToLime::OrganizationReference.new
|
87
|
+
orgref.heading = "Lundalogik"
|
88
|
+
|
89
|
+
# when
|
90
|
+
ref = FruitToLime::OrganizationReference.from_organization(orgref)
|
91
|
+
|
92
|
+
# then
|
93
|
+
ref.is_a?(FruitToLime::OrganizationReference).should eq true
|
94
|
+
end
|
95
|
+
|
96
|
+
it "is nil when created from nil" do
|
97
|
+
# given, when
|
98
|
+
ref = FruitToLime::OrganizationReference.from_organization(nil)
|
99
|
+
|
100
|
+
# then
|
101
|
+
ref.should eq nil
|
102
|
+
end
|
103
|
+
end
|