insightly 0.2.2 → 0.2.3
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/insightly/base.rb +1 -0
- data/lib/insightly/contact_info.rb +47 -41
- data/lib/insightly/version.rb +1 -1
- data/spec/unit/contact_info_spec.rb +138 -0
- metadata +4 -3
data/lib/insightly/base.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#METODO contacts allow you to set special dates to remember - can we access that via api?
|
1
2
|
#METODO only allow build to set fields that are part of the API fields
|
2
3
|
#METODO make a distinction between fields that you can set and save and ones you can only read - like DATE_UPDATED_UTC
|
3
4
|
module Insightly
|
@@ -1,61 +1,67 @@
|
|
1
1
|
module Insightly
|
2
|
-
class ContactInfo
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
class ContactInfo < BaseData
|
3
|
+
api_field "CONTACT_INFO_ID",
|
4
|
+
"TYPE",
|
5
|
+
"SUBTYPE",
|
6
|
+
"LABEL",
|
7
|
+
"DETAIL"
|
6
8
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
def self.phone(label, number)
|
10
|
+
item = self.new
|
11
|
+
item.type = "PHONE"
|
12
|
+
item.label = label
|
13
|
+
item.detail = number
|
14
|
+
item
|
13
15
|
end
|
14
16
|
|
15
|
-
def self.
|
16
|
-
self.new
|
17
|
+
def self.email(label, email)
|
18
|
+
item = self.new
|
19
|
+
item.type = "EMAIL"
|
20
|
+
item.label = label
|
21
|
+
item.detail = email
|
22
|
+
item
|
17
23
|
end
|
18
24
|
|
19
|
-
def
|
20
|
-
|
25
|
+
def self.social(label, info, subtype)
|
26
|
+
item = self.new
|
27
|
+
item.type = "SOCIAL"
|
28
|
+
item.subtype = subtype
|
29
|
+
item.label = label
|
30
|
+
item.detail = info
|
31
|
+
item
|
21
32
|
end
|
22
33
|
|
23
|
-
def
|
24
|
-
|
34
|
+
def self.website(label, url)
|
35
|
+
item = self.new
|
36
|
+
item.type = "WEBSITE"
|
37
|
+
item.label = label
|
38
|
+
item.detail = url
|
39
|
+
item
|
25
40
|
end
|
26
|
-
def contact_info_id
|
27
|
-
@data["CONTACT_INFO_ID"]
|
28
41
|
|
42
|
+
def self.twitter_id(id)
|
43
|
+
self.social("TwitterID", id, "TwitterID")
|
29
44
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
def subtype
|
34
|
-
@data["SUBTYPE"]
|
45
|
+
|
46
|
+
def self.linked_in(url)
|
47
|
+
self.social("LinkedInPublicProfileUrl", url, "LinkedInPublicProfileUrl")
|
35
48
|
end
|
36
|
-
|
37
|
-
|
49
|
+
|
50
|
+
def self.work_phone(number)
|
51
|
+
self.phone("Work", number)
|
38
52
|
end
|
39
|
-
|
40
|
-
|
53
|
+
|
54
|
+
def self.work_email(email)
|
55
|
+
self.email("Work", email)
|
41
56
|
end
|
42
57
|
|
43
|
-
def contact_info_id=(value)
|
44
|
-
@data["CONTACT_INFO_ID"] = value
|
45
58
|
|
46
|
-
|
47
|
-
|
48
|
-
@data["TYPE"] = value
|
49
|
-
end
|
50
|
-
def subtype=(value)
|
51
|
-
@data["SUBTYPE"] = value
|
52
|
-
end
|
53
|
-
def label=(value)
|
54
|
-
@data["LABEL"] = value
|
55
|
-
end
|
56
|
-
def detail=(value)
|
57
|
-
@data["DETAIL"] = value
|
59
|
+
def self.business_website(url)
|
60
|
+
self.website("Work", url)
|
58
61
|
end
|
59
62
|
|
63
|
+
def self.blog(url)
|
64
|
+
self.website("Blog", url)
|
65
|
+
end
|
60
66
|
end
|
61
67
|
end
|
data/lib/insightly/version.rb
CHANGED
@@ -0,0 +1,138 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
|
+
|
3
|
+
describe Insightly::ContactInfo do
|
4
|
+
before(:each) do
|
5
|
+
Insightly::Configuration.api_key = INSIGHTLY_API_KEY
|
6
|
+
|
7
|
+
# @all = Insightly::Contact.new(20315449)
|
8
|
+
@contact_info = Insightly::ContactInfo.build({
|
9
|
+
"LABEL" => "Work",
|
10
|
+
"SUBTYPE" => nil,
|
11
|
+
"CONTACT_INFO_ID" => 1,
|
12
|
+
"TYPE" => "WEBSITE",
|
13
|
+
"DETAIL" => "http://www.truckingoffice.com"
|
14
|
+
|
15
|
+
})
|
16
|
+
end
|
17
|
+
it "should be able to build an contact_info from data" do
|
18
|
+
data = {
|
19
|
+
"LABEL" => "Work",
|
20
|
+
"SUBTYPE" => nil,
|
21
|
+
"CONTACT_INFO_ID" => 1,
|
22
|
+
"TYPE" => "WEBSITE",
|
23
|
+
"DETAIL" => "http://www.truckingoffice.com"
|
24
|
+
|
25
|
+
}
|
26
|
+
@contact_info = Insightly::ContactInfo.build(data)
|
27
|
+
|
28
|
+
@contact_info.remote_data.should == data
|
29
|
+
end
|
30
|
+
it "should be able to retrieve the data as an array" do
|
31
|
+
@contact_info.remote_data["CONTACT_INFO_ID"].should == 1
|
32
|
+
end
|
33
|
+
it "should be able to convert to json" do
|
34
|
+
@contact_info.to_json.should == @contact_info.remote_data.to_json
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should know if two contact_info are equal" do
|
38
|
+
@contact_info2 = Insightly::ContactInfo.build(@contact_info.remote_data.clone)
|
39
|
+
@contact_info2.should == @contact_info
|
40
|
+
@contact_info.detail = nil
|
41
|
+
@contact_info2.should_not == @contact_info
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have accessor for contact_info_id" do
|
45
|
+
@contact_info.contact_info_id = 2
|
46
|
+
@contact_info.contact_info_id.should == 2
|
47
|
+
end
|
48
|
+
it "should have accessor for type" do
|
49
|
+
@contact_info.type = 2
|
50
|
+
@contact_info.type.should == 2
|
51
|
+
end
|
52
|
+
it "should have accessor for subtype" do
|
53
|
+
@contact_info.subtype = 2
|
54
|
+
@contact_info.subtype.should == 2
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should have accessor for label" do
|
58
|
+
@contact_info.label = "Worker"
|
59
|
+
@contact_info.label.should == "Worker"
|
60
|
+
end
|
61
|
+
it "should have accessor for detail" do
|
62
|
+
@contact_info.detail = "New hire"
|
63
|
+
@contact_info.detail.should == "New hire"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should be easy to add a phone number" do
|
67
|
+
@info = Insightly::ContactInfo.phone("Work","210-555-1212")
|
68
|
+
@info.label.should == "Work"
|
69
|
+
@info.subtype.should be_nil
|
70
|
+
@info.detail.should == "210-555-1212"
|
71
|
+
@info.type.should == "PHONE"
|
72
|
+
end
|
73
|
+
it "should be easy to add a work phone number" do
|
74
|
+
@info = Insightly::ContactInfo.work_phone("210-555-1212")
|
75
|
+
@info.label.should == "Work"
|
76
|
+
@info.subtype.should be_nil
|
77
|
+
@info.detail.should == "210-555-1212"
|
78
|
+
@info.type.should == "PHONE"
|
79
|
+
end
|
80
|
+
it "should be easy to add an email" do
|
81
|
+
@info = Insightly::ContactInfo.email("Work","bob@aol.com")
|
82
|
+
@info.label.should == "Work"
|
83
|
+
@info.subtype.should be_nil
|
84
|
+
@info.detail.should == "bob@aol.com"
|
85
|
+
@info.type.should == "EMAIL"
|
86
|
+
end
|
87
|
+
it "should be easy to add a work email" do
|
88
|
+
@info = Insightly::ContactInfo.work_email("bob@aol.com")
|
89
|
+
@info.label.should == "Work"
|
90
|
+
@info.subtype.should be_nil
|
91
|
+
@info.detail.should == "bob@aol.com"
|
92
|
+
@info.type.should == "EMAIL"
|
93
|
+
end
|
94
|
+
it "should be easy to add a website" do
|
95
|
+
@info = Insightly::ContactInfo.website("Work","http://www.truckingoffice.com")
|
96
|
+
@info.label.should == "Work"
|
97
|
+
@info.subtype.should be_nil
|
98
|
+
@info.detail.should == "http://www.truckingoffice.com"
|
99
|
+
@info.type.should == "WEBSITE"
|
100
|
+
end
|
101
|
+
it "should be easy to add a business website" do
|
102
|
+
@info = Insightly::ContactInfo.business_website("http://www.truckingoffice.com")
|
103
|
+
@info.label.should == "Work"
|
104
|
+
@info.subtype.should be_nil
|
105
|
+
@info.detail.should == "http://www.truckingoffice.com"
|
106
|
+
@info.type.should == "WEBSITE"
|
107
|
+
end
|
108
|
+
it "should be easy to add a blog" do
|
109
|
+
@info = Insightly::ContactInfo.blog("http://www.r26d.com")
|
110
|
+
@info.label.should == "Blog"
|
111
|
+
@info.subtype.should be_nil
|
112
|
+
@info.detail.should == "http://www.r26d.com"
|
113
|
+
@info.type.should == "WEBSITE"
|
114
|
+
end
|
115
|
+
it "should be easy to add a twitter id" do
|
116
|
+
@info = Insightly::ContactInfo.twitter_id("economysizegeek")
|
117
|
+
@info.label.should == "TwitterID"
|
118
|
+
@info.subtype.should == "TwitterID"
|
119
|
+
@info.detail.should == "economysizegeek"
|
120
|
+
@info.type.should == "SOCIAL"
|
121
|
+
end
|
122
|
+
it "should be easy to add a social entry" do
|
123
|
+
@info = Insightly::ContactInfo.social('TwitterID','economysizegeek','TwitterID')
|
124
|
+
@info.label.should == "TwitterID"
|
125
|
+
@info.subtype.should == "TwitterID"
|
126
|
+
@info.detail.should == "economysizegeek"
|
127
|
+
@info.type.should == "SOCIAL"
|
128
|
+
end
|
129
|
+
it "should be easy to add a linked in profile" do
|
130
|
+
@info = Insightly::ContactInfo.linked_in("http://www.linkedin.com/company/1499784")
|
131
|
+
@info.label.should == "LinkedInPublicProfileUrl"
|
132
|
+
@info.subtype.should == "LinkedInPublicProfileUrl"
|
133
|
+
@info.detail.should == "http://www.linkedin.com/company/1499784"
|
134
|
+
@info.type.should == "SOCIAL"
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: insightly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dirk Elmendorf
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- spec/unit/task_category_spec.rb
|
168
168
|
- spec/unit/opportunity_category_spec.rb
|
169
169
|
- spec/unit/team_member_spec.rb
|
170
|
+
- spec/unit/contact_info_spec.rb
|
170
171
|
- spec/unit/opportunity_state_reason_spec.rb
|
171
172
|
- spec/unit/address_spec.rb
|
172
173
|
- spec/unit/relationship_spec.rb
|