insightly2 0.1.4

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 (240) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/README.md +113 -0
  7. data/Rakefile +6 -0
  8. data/config/gem_secret.yml.example +1 -0
  9. data/insightly2.gemspec +29 -0
  10. data/lib/insightly2/client.rb +54 -0
  11. data/lib/insightly2/dsl/comments.rb +47 -0
  12. data/lib/insightly2/dsl/contacts.rb +130 -0
  13. data/lib/insightly2/dsl/countries.rb +12 -0
  14. data/lib/insightly2/dsl/currencies.rb +12 -0
  15. data/lib/insightly2/dsl/custom_fields.rb +22 -0
  16. data/lib/insightly2/dsl/emails.rb +57 -0
  17. data/lib/insightly2/dsl/events.rb +52 -0
  18. data/lib/insightly2/dsl/file_attachments.rb +14 -0
  19. data/lib/insightly2/dsl/file_categories.rb +52 -0
  20. data/lib/insightly2/dsl/notes.rb +85 -0
  21. data/lib/insightly2/dsl/opportunities.rb +134 -0
  22. data/lib/insightly2/dsl/opportunity_categories.rb +52 -0
  23. data/lib/insightly2/dsl/opportunity_state_reasons.rb +12 -0
  24. data/lib/insightly2/dsl/organisations.rb +128 -0
  25. data/lib/insightly2/dsl/pipeline_stages.rb +22 -0
  26. data/lib/insightly2/dsl/pipelines.rb +22 -0
  27. data/lib/insightly2/dsl/project_categories.rb +52 -0
  28. data/lib/insightly2/dsl/projects.rb +129 -0
  29. data/lib/insightly2/dsl/relationships.rb +12 -0
  30. data/lib/insightly2/dsl/tags.rb +15 -0
  31. data/lib/insightly2/dsl/task_categories.rb +52 -0
  32. data/lib/insightly2/dsl/tasks.rb +76 -0
  33. data/lib/insightly2/dsl/team_members.rb +53 -0
  34. data/lib/insightly2/dsl/teams.rb +53 -0
  35. data/lib/insightly2/dsl/users.rb +22 -0
  36. data/lib/insightly2/dsl.rb +65 -0
  37. data/lib/insightly2/errors/client_error.rb +10 -0
  38. data/lib/insightly2/errors/resource_not_found_error.rb +8 -0
  39. data/lib/insightly2/errors.rb +10 -0
  40. data/lib/insightly2/resources/comment.rb +10 -0
  41. data/lib/insightly2/resources/contact.rb +8 -0
  42. data/lib/insightly2/resources/country.rb +8 -0
  43. data/lib/insightly2/resources/currency.rb +8 -0
  44. data/lib/insightly2/resources/custom_field.rb +8 -0
  45. data/lib/insightly2/resources/email.rb +8 -0
  46. data/lib/insightly2/resources/event.rb +8 -0
  47. data/lib/insightly2/resources/file_attachment.rb +8 -0
  48. data/lib/insightly2/resources/file_category.rb +8 -0
  49. data/lib/insightly2/resources/note.rb +8 -0
  50. data/lib/insightly2/resources/object/attributes.rb +71 -0
  51. data/lib/insightly2/resources/object/serializers.rb +102 -0
  52. data/lib/insightly2/resources/object.rb +29 -0
  53. data/lib/insightly2/resources/opportunity.rb +8 -0
  54. data/lib/insightly2/resources/opportunity_category.rb +8 -0
  55. data/lib/insightly2/resources/opportunity_state_reason.rb +8 -0
  56. data/lib/insightly2/resources/organisation.rb +8 -0
  57. data/lib/insightly2/resources/pipeline.rb +8 -0
  58. data/lib/insightly2/resources/pipeline_stage.rb +8 -0
  59. data/lib/insightly2/resources/project.rb +8 -0
  60. data/lib/insightly2/resources/project_category.rb +8 -0
  61. data/lib/insightly2/resources/relationship.rb +8 -0
  62. data/lib/insightly2/resources/tag.rb +8 -0
  63. data/lib/insightly2/resources/task.rb +8 -0
  64. data/lib/insightly2/resources/task_category.rb +8 -0
  65. data/lib/insightly2/resources/team.rb +8 -0
  66. data/lib/insightly2/resources/team_member.rb +8 -0
  67. data/lib/insightly2/resources/user.rb +8 -0
  68. data/lib/insightly2/resources.rb +33 -0
  69. data/lib/insightly2/utils/url_helper.rb +17 -0
  70. data/lib/insightly2/utils.rb +8 -0
  71. data/lib/insightly2/version.rb +3 -0
  72. data/lib/insightly2.rb +22 -0
  73. data/spec/fixtures/vcr_cassettes/create_comment_attachment.yml +42 -0
  74. data/spec/fixtures/vcr_cassettes/create_contact.yml +47 -0
  75. data/spec/fixtures/vcr_cassettes/create_contact_image.yml +42 -0
  76. data/spec/fixtures/vcr_cassettes/create_email_comment.yml +47 -0
  77. data/spec/fixtures/vcr_cassettes/create_event.yml +95 -0
  78. data/spec/fixtures/vcr_cassettes/create_file_category.yml +89 -0
  79. data/spec/fixtures/vcr_cassettes/create_note.yml +95 -0
  80. data/spec/fixtures/vcr_cassettes/create_note_comment.yml +47 -0
  81. data/spec/fixtures/vcr_cassettes/create_note_file.yml +42 -0
  82. data/spec/fixtures/vcr_cassettes/create_opportunity.yml +98 -0
  83. data/spec/fixtures/vcr_cassettes/create_opportunity_category.yml +89 -0
  84. data/spec/fixtures/vcr_cassettes/create_opportunity_image.yml +42 -0
  85. data/spec/fixtures/vcr_cassettes/create_organisation.yml +116 -0
  86. data/spec/fixtures/vcr_cassettes/create_organisation_image.yml +42 -0
  87. data/spec/fixtures/vcr_cassettes/create_project.yml +106 -0
  88. data/spec/fixtures/vcr_cassettes/create_project_category.yml +89 -0
  89. data/spec/fixtures/vcr_cassettes/create_project_image.yml +42 -0
  90. data/spec/fixtures/vcr_cassettes/create_task.yml +98 -0
  91. data/spec/fixtures/vcr_cassettes/create_task_category.yml +89 -0
  92. data/spec/fixtures/vcr_cassettes/create_task_comment.yml +47 -0
  93. data/spec/fixtures/vcr_cassettes/create_team.yml +92 -0
  94. data/spec/fixtures/vcr_cassettes/create_team_member.yml +89 -0
  95. data/spec/fixtures/vcr_cassettes/delete_comment.yml +42 -0
  96. data/spec/fixtures/vcr_cassettes/delete_contact.yml +42 -0
  97. data/spec/fixtures/vcr_cassettes/delete_contact_image.yml +42 -0
  98. data/spec/fixtures/vcr_cassettes/delete_email.yml +42 -0
  99. data/spec/fixtures/vcr_cassettes/delete_event.yml +42 -0
  100. data/spec/fixtures/vcr_cassettes/delete_file_category.yml +42 -0
  101. data/spec/fixtures/vcr_cassettes/delete_note.yml +42 -0
  102. data/spec/fixtures/vcr_cassettes/delete_opportunity.yml +42 -0
  103. data/spec/fixtures/vcr_cassettes/delete_opportunity_category.yml +42 -0
  104. data/spec/fixtures/vcr_cassettes/delete_opportunity_image.yml +42 -0
  105. data/spec/fixtures/vcr_cassettes/delete_organisation.yml +42 -0
  106. data/spec/fixtures/vcr_cassettes/delete_organisation_image.yml +42 -0
  107. data/spec/fixtures/vcr_cassettes/delete_project.yml +42 -0
  108. data/spec/fixtures/vcr_cassettes/delete_project_category.yml +42 -0
  109. data/spec/fixtures/vcr_cassettes/delete_project_image.yml +42 -0
  110. data/spec/fixtures/vcr_cassettes/delete_task.yml +42 -0
  111. data/spec/fixtures/vcr_cassettes/delete_task_category.yml +42 -0
  112. data/spec/fixtures/vcr_cassettes/delete_team.yml +42 -0
  113. data/spec/fixtures/vcr_cassettes/delete_team_member.yml +42 -0
  114. data/spec/fixtures/vcr_cassettes/get_comment.yml +47 -0
  115. data/spec/fixtures/vcr_cassettes/get_contact.yml +47 -0
  116. data/spec/fixtures/vcr_cassettes/get_contact_emails.yml +47 -0
  117. data/spec/fixtures/vcr_cassettes/get_contact_image.yml +44 -0
  118. data/spec/fixtures/vcr_cassettes/get_contact_notes.yml +48 -0
  119. data/spec/fixtures/vcr_cassettes/get_contact_tasks.yml +48 -0
  120. data/spec/fixtures/vcr_cassettes/get_contacts.yml +184 -0
  121. data/spec/fixtures/vcr_cassettes/get_countries.yml +85 -0
  122. data/spec/fixtures/vcr_cassettes/get_currencies.yml +124 -0
  123. data/spec/fixtures/vcr_cassettes/get_custom_field.yml +46 -0
  124. data/spec/fixtures/vcr_cassettes/get_custom_fields.yml +46 -0
  125. data/spec/fixtures/vcr_cassettes/get_email.yml +48 -0
  126. data/spec/fixtures/vcr_cassettes/get_email_comments.yml +49 -0
  127. data/spec/fixtures/vcr_cassettes/get_emails.yml +47 -0
  128. data/spec/fixtures/vcr_cassettes/get_event.yml +48 -0
  129. data/spec/fixtures/vcr_cassettes/get_events.yml +48 -0
  130. data/spec/fixtures/vcr_cassettes/get_file_attachment.yml +4057 -0
  131. data/spec/fixtures/vcr_cassettes/get_file_categories.yml +46 -0
  132. data/spec/fixtures/vcr_cassettes/get_file_category.yml +46 -0
  133. data/spec/fixtures/vcr_cassettes/get_note.yml +48 -0
  134. data/spec/fixtures/vcr_cassettes/get_note_comments.yml +48 -0
  135. data/spec/fixtures/vcr_cassettes/get_notes.yml +52 -0
  136. data/spec/fixtures/vcr_cassettes/get_opportunities.yml +81 -0
  137. data/spec/fixtures/vcr_cassettes/get_opportunity.yml +49 -0
  138. data/spec/fixtures/vcr_cassettes/get_opportunity_categories.yml +46 -0
  139. data/spec/fixtures/vcr_cassettes/get_opportunity_category.yml +46 -0
  140. data/spec/fixtures/vcr_cassettes/get_opportunity_emails.yml +48 -0
  141. data/spec/fixtures/vcr_cassettes/get_opportunity_image.yml +44 -0
  142. data/spec/fixtures/vcr_cassettes/get_opportunity_notes.yml +48 -0
  143. data/spec/fixtures/vcr_cassettes/get_opportunity_state_history.yml +83 -0
  144. data/spec/fixtures/vcr_cassettes/get_opportunity_state_reasons.yml +47 -0
  145. data/spec/fixtures/vcr_cassettes/get_opportunity_tasks.yml +49 -0
  146. data/spec/fixtures/vcr_cassettes/get_organisation.yml +55 -0
  147. data/spec/fixtures/vcr_cassettes/get_organisation_emails.yml +48 -0
  148. data/spec/fixtures/vcr_cassettes/get_organisation_image.yml +42 -0
  149. data/spec/fixtures/vcr_cassettes/get_organisation_notes.yml +47 -0
  150. data/spec/fixtures/vcr_cassettes/get_organisation_tasks.yml +48 -0
  151. data/spec/fixtures/vcr_cassettes/get_organisations.yml +2092 -0
  152. data/spec/fixtures/vcr_cassettes/get_pipeline.yml +46 -0
  153. data/spec/fixtures/vcr_cassettes/get_pipeline_stage.yml +46 -0
  154. data/spec/fixtures/vcr_cassettes/get_pipeline_stages.yml +49 -0
  155. data/spec/fixtures/vcr_cassettes/get_pipelines.yml +46 -0
  156. data/spec/fixtures/vcr_cassettes/get_project.yml +52 -0
  157. data/spec/fixtures/vcr_cassettes/get_project_categories.yml +46 -0
  158. data/spec/fixtures/vcr_cassettes/get_project_category.yml +46 -0
  159. data/spec/fixtures/vcr_cassettes/get_project_emails.yml +48 -0
  160. data/spec/fixtures/vcr_cassettes/get_project_image.yml +44 -0
  161. data/spec/fixtures/vcr_cassettes/get_project_notes.yml +47 -0
  162. data/spec/fixtures/vcr_cassettes/get_project_tasks.yml +48 -0
  163. data/spec/fixtures/vcr_cassettes/get_projects.yml +52 -0
  164. data/spec/fixtures/vcr_cassettes/get_task.yml +49 -0
  165. data/spec/fixtures/vcr_cassettes/get_task_categories.yml +47 -0
  166. data/spec/fixtures/vcr_cassettes/get_task_category.yml +46 -0
  167. data/spec/fixtures/vcr_cassettes/get_task_comments.yml +47 -0
  168. data/spec/fixtures/vcr_cassettes/get_tasks.yml +148 -0
  169. data/spec/fixtures/vcr_cassettes/get_team.yml +47 -0
  170. data/spec/fixtures/vcr_cassettes/get_team_member.yml +46 -0
  171. data/spec/fixtures/vcr_cassettes/get_team_members.yml +46 -0
  172. data/spec/fixtures/vcr_cassettes/get_teams.yml +47 -0
  173. data/spec/fixtures/vcr_cassettes/get_user.yml +48 -0
  174. data/spec/fixtures/vcr_cassettes/get_users.yml +48 -0
  175. data/spec/fixtures/vcr_cassettes/update_comment.yml +97 -0
  176. data/spec/fixtures/vcr_cassettes/update_contact.yml +94 -0
  177. data/spec/fixtures/vcr_cassettes/update_contact_image.yml +42 -0
  178. data/spec/fixtures/vcr_cassettes/update_event.yml +97 -0
  179. data/spec/fixtures/vcr_cassettes/update_file_category.yml +91 -0
  180. data/spec/fixtures/vcr_cassettes/update_note.yml +100 -0
  181. data/spec/fixtures/vcr_cassettes/update_opportunity.yml +100 -0
  182. data/spec/fixtures/vcr_cassettes/update_opportunity_category.yml +91 -0
  183. data/spec/fixtures/vcr_cassettes/update_opportunity_image.yml +42 -0
  184. data/spec/fixtures/vcr_cassettes/update_organisation.yml +118 -0
  185. data/spec/fixtures/vcr_cassettes/update_organisation_image.yml +42 -0
  186. data/spec/fixtures/vcr_cassettes/update_project.yml +109 -0
  187. data/spec/fixtures/vcr_cassettes/update_project_category.yml +91 -0
  188. data/spec/fixtures/vcr_cassettes/update_project_image.yml +42 -0
  189. data/spec/fixtures/vcr_cassettes/update_task.yml +100 -0
  190. data/spec/fixtures/vcr_cassettes/update_task_category.yml +91 -0
  191. data/spec/fixtures/vcr_cassettes/update_team.yml +94 -0
  192. data/spec/fixtures/vcr_cassettes/update_team_member.yml +91 -0
  193. data/spec/fixtures/vcr_cassettes/z_insightly_client_status_check.yml +48 -0
  194. data/spec/insightly2/client_spec.rb +12 -0
  195. data/spec/insightly2/dsl/comments_spec.rb +45 -0
  196. data/spec/insightly2/dsl/contacts_spec.rb +130 -0
  197. data/spec/insightly2/dsl/countries_spec.rb +14 -0
  198. data/spec/insightly2/dsl/currencies_spec.rb +14 -0
  199. data/spec/insightly2/dsl/custom_fields_spec.rb +25 -0
  200. data/spec/insightly2/dsl/emails_spec.rb +56 -0
  201. data/spec/insightly2/dsl/events_spec.rb +55 -0
  202. data/spec/insightly2/dsl/file_attachments_spec.rb +15 -0
  203. data/spec/insightly2/dsl/file_categories_spec.rb +55 -0
  204. data/spec/insightly2/dsl/notes_spec.rb +86 -0
  205. data/spec/insightly2/dsl/opportunities_spec.rb +143 -0
  206. data/spec/insightly2/dsl/opportunity_categories_spec.rb +55 -0
  207. data/spec/insightly2/dsl/opportunity_state_reasons_spec.rb +14 -0
  208. data/spec/insightly2/dsl/organisations_spec.rb +131 -0
  209. data/spec/insightly2/dsl/pipeline_stages_spec.rb +25 -0
  210. data/spec/insightly2/dsl/pipelines_spec.rb +25 -0
  211. data/spec/insightly2/dsl/project_categories_spec.rb +55 -0
  212. data/spec/insightly2/dsl/projects_spec.rb +131 -0
  213. data/spec/insightly2/dsl/task_categories_spec.rb +55 -0
  214. data/spec/insightly2/dsl/tasks_spec.rb +75 -0
  215. data/spec/insightly2/dsl/team_members_spec.rb +56 -0
  216. data/spec/insightly2/dsl/teams_spec.rb +55 -0
  217. data/spec/insightly2/dsl/users_spec.rb +25 -0
  218. data/spec/insightly2/resources/comment_spec.rb +27 -0
  219. data/spec/insightly2/resources/contact_spec.rb +28 -0
  220. data/spec/insightly2/resources/custom_field_spec.rb +22 -0
  221. data/spec/insightly2/resources/email_spec.rb +29 -0
  222. data/spec/insightly2/resources/event_spec.rb +29 -0
  223. data/spec/insightly2/resources/file_attachment_spec.rb +31 -0
  224. data/spec/insightly2/resources/file_category_spec.rb +21 -0
  225. data/spec/insightly2/resources/note_spec.rb +29 -0
  226. data/spec/insightly2/resources/opportunity_category_spec.rb +21 -0
  227. data/spec/insightly2/resources/opportunity_spec.rb +30 -0
  228. data/spec/insightly2/resources/organisation_spec.rb +29 -0
  229. data/spec/insightly2/resources/pipeline_spec.rb +21 -0
  230. data/spec/insightly2/resources/pipeline_stage_spec.rb +21 -0
  231. data/spec/insightly2/resources/project_category_spec.rb +21 -0
  232. data/spec/insightly2/resources/project_spec.rb +30 -0
  233. data/spec/insightly2/resources/task_category_spec.rb +21 -0
  234. data/spec/insightly2/resources/task_spec.rb +32 -0
  235. data/spec/insightly2/resources/team_member_spec.rb +21 -0
  236. data/spec/insightly2/resources/team_spec.rb +27 -0
  237. data/spec/insightly2/resources/user_spec.rb +29 -0
  238. data/spec/insightly2_spec.rb +15 -0
  239. data/spec/spec_helper.rb +20 -0
  240. metadata +551 -0
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::DSL::TaskCategories do
4
+ let(:task_category_id) { 1947437 }
5
+
6
+ # GET /v2.1/TaskCategories/{id}
7
+ describe '#get_task_category' do
8
+ it 'returns a task category' do
9
+ VCR.use_cassette('get_task_category') do
10
+ expect(Insightly2.client.get_task_category(id: task_category_id)).to be_a(TaskCategory)
11
+ end
12
+ end
13
+ end
14
+
15
+ # GET /v2.1/TaskCategories
16
+ describe '#get_task_categories' do
17
+ it 'returns an array of task_categories' do
18
+ VCR.use_cassette('get_task_categories') do
19
+ task_categories = Insightly2.client.get_task_categories
20
+ expect(task_categories).to be_a(Array)
21
+ expect(task_categories.first).to be_a(TaskCategory)
22
+ end
23
+ end
24
+ end
25
+
26
+ # POST /v2.1/TaskCategories
27
+ describe '#create_task_category' do
28
+ it 'creates and returns task_category' do
29
+ VCR.use_cassette('create_task_category') do
30
+ task_category = Insightly2.client.get_task_category(id: task_category_id)
31
+ expect(Insightly2.client.create_task_category(category: task_category)).to be_a(TaskCategory)
32
+ end
33
+ end
34
+ end
35
+
36
+ # PUT /v2.1/TaskCategories
37
+ describe '#update_task_category' do
38
+ it 'updates and returns task_category' do
39
+ VCR.use_cassette('update_task_category') do
40
+ task_category = Insightly2.client.get_task_category(id: task_category_id)
41
+ expect(Insightly2.client.update_task_category(category: task_category)).to be_a(TaskCategory)
42
+ end
43
+ end
44
+ end
45
+
46
+ # DELETE /v2.1/TaskCategories/{id}
47
+ describe '#delete_task_category' do
48
+ it 'returns a response with code 202' do
49
+ VCR.use_cassette('delete_task_category') do
50
+ response = Insightly2.client.delete_task_category(id: task_category_id)
51
+ expect(response.status).to eq(202)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::DSL::Tasks do
4
+ let(:task_id) { 14694323 }
5
+
6
+ # GET /v2.1/Tasks/{id}
7
+ describe '#get_task' do
8
+ it 'returns a task' do
9
+ VCR.use_cassette('get_task') do
10
+ expect(Insightly2.client.get_task(id: task_id)).to be_a(Task)
11
+ end
12
+ end
13
+ end
14
+
15
+ # GET /v2.1/Tasks?ids={ids}
16
+ describe '#get_tasks' do
17
+ it 'returns an array of tasks' do
18
+ VCR.use_cassette('get_tasks') do
19
+ tasks = Insightly2.client.get_tasks
20
+ expect(tasks).to be_a(Array)
21
+ expect(tasks.first).to be_a(Task)
22
+ end
23
+ end
24
+ end
25
+
26
+ # GET /v2.1/Tasks/{id}/Comments
27
+ describe '#get_comment_tasks' do
28
+ it 'returns an array of task comments' do
29
+ VCR.use_cassette('get_task_comments') do
30
+ comments = Insightly2.client.get_task_comments(id: task_id)
31
+ expect(comments).to be_a(Array)
32
+ expect(comments.first).to be_a(Comment)
33
+ end
34
+ end
35
+ end
36
+
37
+ # POST /v2.1/Tasks
38
+ describe '#create_task' do
39
+ it 'creates and returns task' do
40
+ VCR.use_cassette('create_task') do
41
+ task = Insightly2.client.get_task(id: task_id)
42
+ expect(Insightly2.client.create_task(task: task)).to be_a(Task)
43
+ end
44
+ end
45
+ end
46
+
47
+ # POST /v2.1/Tasks/{c_id}/Comments
48
+ describe '#create_task_comment' do
49
+ it 'creates and returns comment' do
50
+ VCR.use_cassette('create_task_comment') do
51
+ expect(Insightly2.client.create_task_comment(id: task_id, comment: {title: 'Sharknado'})).to be_a(Comment)
52
+ end
53
+ end
54
+ end
55
+
56
+ # PUT /v2.1/Tasks
57
+ describe '#update_task' do
58
+ it 'updates and returns task' do
59
+ VCR.use_cassette('update_task') do
60
+ task = Insightly2.client.get_task(id: task_id)
61
+ expect(Insightly2.client.update_task(task: task)).to be_a(Task)
62
+ end
63
+ end
64
+ end
65
+
66
+ # DELETE /v2.1/Tasks/{id}
67
+ describe '#delete_task' do
68
+ it 'returns a response with code 202' do
69
+ VCR.use_cassette('delete_task') do
70
+ response = Insightly2.client.delete_task(id: task_id)
71
+ expect(response.status).to eq(202)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::DSL::TeamMembers do
4
+ let(:team_member_id) { 5016224 }
5
+ let(:team_id) { 2063767 }
6
+
7
+ # GET /v2.1/TeamMembers/{id}
8
+ describe '#get_team_member' do
9
+ it 'returns a team member' do
10
+ VCR.use_cassette('get_team_member') do
11
+ expect(Insightly2.client.get_team_member(id: team_member_id)).to be_a(TeamMember)
12
+ end
13
+ end
14
+ end
15
+
16
+ # GET /v2.1/TeamMembers?teamid={teamid}
17
+ describe '#get_team_members' do
18
+ it 'returns an array of team_members' do
19
+ VCR.use_cassette('get_team_members') do
20
+ team_members = Insightly2.client.get_team_members(team_id: team_id)
21
+ expect(team_members).to be_a(Array)
22
+ expect(team_members.first).to be_a(TeamMember)
23
+ end
24
+ end
25
+ end
26
+
27
+ # POST /v2.1/TeamMembers
28
+ describe '#create_team_member' do
29
+ it 'creates and returns a team_member' do
30
+ VCR.use_cassette('create_team_member') do
31
+ team_member = Insightly2.client.get_team_member(id: team_member_id)
32
+ expect(Insightly2.client.create_team_member(team_member: team_member)).to be_a(TeamMember)
33
+ end
34
+ end
35
+ end
36
+
37
+ # PUT /v2.1/TeamMembers
38
+ describe '#update_team_member' do
39
+ it 'updates and returns a team_member' do
40
+ VCR.use_cassette('update_team_member') do
41
+ team_member = Insightly2.client.get_team_member(id: team_member_id)
42
+ expect(Insightly2.client.update_team_member(team_member: team_member)).to be_a(TeamMember)
43
+ end
44
+ end
45
+ end
46
+
47
+ # DELETE /v2.1/TeamMembers/{id}
48
+ describe '#delete_team_member' do
49
+ it 'returns a response with code 202' do
50
+ VCR.use_cassette('delete_team_member') do
51
+ response = Insightly2.client.delete_team_member(id: team_member_id)
52
+ expect(response.status).to eq(202)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::DSL::Teams do
4
+ let(:team_id) { 2063767 }
5
+
6
+ # GET /v2.1/Teams/{id}
7
+ describe '#get_team' do
8
+ it 'returns a team' do
9
+ VCR.use_cassette('get_team') do
10
+ expect(Insightly2.client.get_team(id: team_id)).to be_a(Team)
11
+ end
12
+ end
13
+ end
14
+
15
+ # GET /v2.1/Teams
16
+ describe '#get_teams' do
17
+ it 'returns an array of teams' do
18
+ VCR.use_cassette('get_teams') do
19
+ teams = Insightly2.client.get_teams
20
+ expect(teams).to be_a(Array)
21
+ expect(teams.first).to be_a(Team)
22
+ end
23
+ end
24
+ end
25
+
26
+ # POST /v2.1/Teams
27
+ describe '#create_team' do
28
+ it 'creates and returns a team' do
29
+ VCR.use_cassette('create_team') do
30
+ team = Insightly2.client.get_team(id: team_id)
31
+ expect(Insightly2.client.create_team(team: team)).to be_a(Team)
32
+ end
33
+ end
34
+ end
35
+
36
+ # PUT /v2.1/Teams
37
+ describe '#update_team' do
38
+ it 'updates and returns a team' do
39
+ VCR.use_cassette('update_team') do
40
+ team = Insightly2.client.get_team(id: team_id)
41
+ expect(Insightly2.client.update_team(team: team)).to be_a(Team)
42
+ end
43
+ end
44
+ end
45
+
46
+ # DELETE /v2.1/Teams/{id}
47
+ describe '#delete_team' do
48
+ it 'returns a response with code 202' do
49
+ VCR.use_cassette('delete_team') do
50
+ response = Insightly2.client.delete_team(id: team_id)
51
+ expect(response.status).to eq(202)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::DSL::Users do
4
+ let(:user_id) { 607181 }
5
+
6
+ # GET /v2.1/Users/{id}
7
+ describe '#get_user' do
8
+ it 'returns a user' do
9
+ VCR.use_cassette('get_user') do
10
+ expect(Insightly2.client.get_user(id: user_id)).to be_a(User)
11
+ end
12
+ end
13
+ end
14
+
15
+ # GET /v2.1/Users
16
+ describe '#get_users' do
17
+ it 'returns an array of users' do
18
+ VCR.use_cassette('get_users') do
19
+ users = Insightly2.client.get_users
20
+ expect(users).to be_a(Array)
21
+ expect(users.first).to be_a(User)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Comment do
4
+ subject(:comment) do
5
+ VCR.use_cassette('get_comment') do
6
+ Insightly2.client.get_comment(id: 3469515)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Comment object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(comment_id body owner_user_id file_attachments).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+
21
+ %w(date_created_utc date_updated_utc).each do |method|
22
+ it "deserialize attribute #{method} as time" do
23
+ expect(subject.public_send(method)).to be_a(Time)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Contact do
4
+ subject(:contact) do
5
+ VCR.use_cassette('get_contact') do
6
+ Insightly2.client.get_contact(id: 70653019)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Contact object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(contact_id salutation first_name last_name background image_url default_linked_organisation
16
+ visible_to visible_team_id visible_user_ids addresses contactinfos dates tags links contactlinks emaillinks).each do |method|
17
+ it "responds to #{method}" do
18
+ expect(subject).to respond_to(method)
19
+ end
20
+ end
21
+
22
+ %w(date_created_utc date_updated_utc).each do |method|
23
+ it "deserialize attribute #{method} as time" do
24
+ expect(subject.public_send(method)).to be_a(Time)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::CustomField do
4
+ subject(:custom_field) do
5
+ VCR.use_cassette('get_custom_field') do
6
+ Insightly2.client.get_custom_field(id: 'CONTACT_FIELD_1')
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with CustomField object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(custom_field_id order_id field_for field_name field_type field_help_text
16
+ default_value group_id custom_field_options).each do |method|
17
+ it "responds to #{method}" do
18
+ expect(subject).to respond_to(method)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Email do
4
+ subject(:email) do
5
+ VCR.use_cassette('get_email') do
6
+ Insightly2.client.get_email(id: 17683283)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Email object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(email_id gmail_message_id email_date_utc email_from email_to email_cc subject body format size
16
+ owner_user_id date_created_utc visible_to visible_team_id visible_user_ids
17
+ file_attachments emaillinks).each do |method|
18
+ it "responds to #{method}" do
19
+ expect(subject).to respond_to(method)
20
+ end
21
+ end
22
+
23
+ %w(date_created_utc).each do |method|
24
+ it "deserialize attribute #{method} as time" do
25
+ expect(subject.public_send(method)).to be_a(Time)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Event do
4
+ subject(:event) do
5
+ VCR.use_cassette('get_event') do
6
+ Insightly2.client.get_event(id: 2402366)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Event object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(event_id title location details start_date_utc end_date_utc all_day publicly_visible
16
+ reminder_date_utc reminder_sent eventlinks owner_user_id date_created_utc
17
+ date_updated_utc).each do |method|
18
+ it "responds to #{method}" do
19
+ expect(subject).to respond_to(method)
20
+ end
21
+ end
22
+
23
+ %w(date_created_utc date_updated_utc).each do |method|
24
+ it "deserialize attribute #{method} as time" do
25
+ expect(subject.public_send(method)).to be_a(Time)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::FileAttachment do
4
+ # TODO - I don't believe it's possible to get a file attachment
5
+ # in a parseable format directly from the file attachment end point.
6
+ # You have to extract it from another resources array of file attachment
7
+ # hashes. The deserializer can currently only accept a response object
8
+ # so it's not possible to pass a hash and get back a resource object
9
+ # which is what we want to do in this test.
10
+
11
+ # subject(:file_attachment) do
12
+ # VCR.use_cassette('get_email_comments') do
13
+ # comments = Insightly2.client.get_email_comments(id: 17683283)
14
+ # comment = comments.last
15
+ # file_attachment = comment['FILE_ATTACHMENTS'].last
16
+ # FileAttachment.parse(file_attachment)
17
+ # end
18
+ # end
19
+
20
+ # describe 'instance' do
21
+ # it 'is decorated with FileAttachment object' do
22
+ # expect(subject).to be_a(described_class)
23
+ # end
24
+ #
25
+ # %w(file_attachment_id).each do |method|
26
+ # it "responds to #{method}" do
27
+ # expect(subject).to respond_to(method)
28
+ # end
29
+ # end
30
+ # end
31
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::FileCategory do
4
+ subject(:file_category) do
5
+ VCR.use_cassette('get_file_category') do
6
+ Insightly2.client.get_file_category(id: 1947439)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with FileCategory object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(category_id category_name active background_color).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Note do
4
+ subject(:note) do
5
+ VCR.use_cassette('get_note') do
6
+ Insightly2.client.get_note(id: 15377334)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Note object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(note_id title body link_subject_id link_subject_type owner_user_id date_created_utc
16
+ date_updated_utc visible_to visible_team_id visible_user_ids file_attachments
17
+ notelinks).each do |method|
18
+ it "responds to #{method}" do
19
+ expect(subject).to respond_to(method)
20
+ end
21
+ end
22
+
23
+ %w(date_created_utc date_updated_utc).each do |method|
24
+ it "deserialize attribute #{method} as time" do
25
+ expect(subject.public_send(method)).to be_a(Time)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::OpportunityCategory do
4
+ subject(:opportunity_category) do
5
+ VCR.use_cassette('get_opportunity_category') do
6
+ Insightly2.client.get_opportunity_category(id: 2175382)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with OpportunityCategory object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(category_id category_name active background_color).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Opportunity do
4
+ subject(:opportunity) do
5
+ VCR.use_cassette('get_opportunity') do
6
+ Insightly2.client.get_opportunity(id: 4070112)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Opportunity object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(opportunity_id opportunity_name opportunity_details probability bid_currency bid_amount
16
+ bid_type bid_duration forecast_close_date category_id pipeline_id stage_id opportunity_state
17
+ image_url responsible_user_id owner_user_id date_created_utc date_updated_utc visible_to
18
+ visible_team_id visible_user_ids customfields tags links emaillinks).each do |method|
19
+ it "responds to #{method}" do
20
+ expect(subject).to respond_to(method)
21
+ end
22
+ end
23
+
24
+ %w(date_created_utc date_updated_utc).each do |method|
25
+ it "deserialize attribute #{method} as time" do
26
+ expect(subject.public_send(method)).to be_a(Time)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Organisation do
4
+ subject(:organisation) do
5
+ VCR.use_cassette('get_organisation') do
6
+ Insightly2.client.get_organisation(id: 39831139)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Organisation object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(organisation_id organisation_name background image_url owner_user_id date_created_utc
16
+ date_updated_utc visible_to visible_team_id visible_user_ids customfields addresses
17
+ contactinfos dates tags links organisationlinks emaillinks).each do |method|
18
+ it "responds to #{method}" do
19
+ expect(subject).to respond_to(method)
20
+ end
21
+ end
22
+
23
+ %w(date_created_utc date_updated_utc).each do |method|
24
+ it "deserialize attribute #{method} as time" do
25
+ expect(subject.public_send(method)).to be_a(Time)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Pipeline do
4
+ subject(:pipeline) do
5
+ VCR.use_cassette('get_pipeline') do
6
+ Insightly2.client.get_pipeline(id: 124170)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Pipeline object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(pipeline_id pipeline_name for_opportunities for_projects owner_user_id).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::PipelineStage do
4
+ subject(:pipeline_stage) do
5
+ VCR.use_cassette('get_pipeline_stage') do
6
+ Insightly2.client.get_pipeline_stage(id: 377384)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with PipelineStage object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(pipeline_id stage_id stage_name stage_order owner_user_id).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::ProjectCategory do
4
+ subject(:project_category) do
5
+ VCR.use_cassette('get_project_category') do
6
+ Insightly2.client.get_project_category(id: 1947441)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with ProjectCategory object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(category_id category_name active background_color).each do |method|
16
+ it "responds to #{method}" do
17
+ expect(subject).to respond_to(method)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Insightly2::Resources::Project do
4
+ subject(:project) do
5
+ VCR.use_cassette('get_project') do
6
+ Insightly2.client.get_project(id: 1657941)
7
+ end
8
+ end
9
+
10
+ describe 'instance' do
11
+ it 'is decorated with Project object' do
12
+ expect(subject).to be_a(described_class)
13
+ end
14
+
15
+ %w(project_id project_name status project_details opportunity_id started_date completed_date
16
+ image_url responsible_user_id owner_user_id date_created_utc date_updated_utc category_id
17
+ pipeline_id stage_id visible_to visible_team_id visible_user_ids customfields tags links
18
+ emaillinks).each do |method|
19
+ it "responds to #{method}" do
20
+ expect(subject).to respond_to(method)
21
+ end
22
+ end
23
+
24
+ %w(date_created_utc date_updated_utc).each do |method|
25
+ it "deserialize attribute #{method} as time" do
26
+ expect(subject.public_send(method)).to be_a(Time)
27
+ end
28
+ end
29
+ end
30
+ end