contactually-ruby 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +80 -0
  4. data/Rakefile +7 -0
  5. data/lib/contactually-ruby.rb +38 -0
  6. data/lib/contactually/accounts.rb +22 -0
  7. data/lib/contactually/api.rb +87 -0
  8. data/lib/contactually/buckets.rb +49 -0
  9. data/lib/contactually/contact_groupings.rb +16 -0
  10. data/lib/contactually/contacts.rb +54 -0
  11. data/lib/contactually/contents.rb +30 -0
  12. data/lib/contactually/errors.rb +21 -0
  13. data/lib/contactually/groupings.rb +36 -0
  14. data/lib/contactually/middleware/error_detector.rb +31 -0
  15. data/lib/contactually/notes.rb +31 -0
  16. data/lib/contactually/representer/account_representer.rb +15 -0
  17. data/lib/contactually/representer/bucket_representer.rb +16 -0
  18. data/lib/contactually/representer/contact_representer.rb +48 -0
  19. data/lib/contactually/representer/content_representer.rb +18 -0
  20. data/lib/contactually/representer/grouping_representer.rb +30 -0
  21. data/lib/contactually/representer/grouping_statistic_representer.rb +14 -0
  22. data/lib/contactually/representer/note_representer.rb +15 -0
  23. data/lib/contactually/representer/task_representer.rb +21 -0
  24. data/lib/contactually/tasks.rb +49 -0
  25. data/lib/contactually/utils.rb +44 -0
  26. data/lib/contactually/version.rb +3 -0
  27. data/spec/accounts_spec.rb +58 -0
  28. data/spec/api_spec.rb +125 -0
  29. data/spec/buckets_spec.rb +97 -0
  30. data/spec/contact_groupings_spec.rb +44 -0
  31. data/spec/contacts_spec.rb +133 -0
  32. data/spec/contents_spec.rb +80 -0
  33. data/spec/error_detector_spec.rb +24 -0
  34. data/spec/fixtures/account.json +10 -0
  35. data/spec/fixtures/accounts_index.json +19 -0
  36. data/spec/fixtures/bucket.json +8 -0
  37. data/spec/fixtures/buckets_index.json +41 -0
  38. data/spec/fixtures/contact.json +38 -0
  39. data/spec/fixtures/contacts_index.json +172 -0
  40. data/spec/fixtures/content.json +10 -0
  41. data/spec/fixtures/contents_index.json +29 -0
  42. data/spec/fixtures/grouping.json +19 -0
  43. data/spec/fixtures/groupings_index.json +28 -0
  44. data/spec/fixtures/note.json +7 -0
  45. data/spec/fixtures/note_destroy.json +4 -0
  46. data/spec/fixtures/notes_index.json +30 -0
  47. data/spec/fixtures/task.json +27 -0
  48. data/spec/fixtures/tasks_index.json +41 -0
  49. data/spec/groupings_spec.rb +85 -0
  50. data/spec/notes_spec.rb +85 -0
  51. data/spec/spec_helper.rb +14 -0
  52. data/spec/tasks_spec.rb +127 -0
  53. metadata +205 -0
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": 123123,
3
+ "title": "Lolokopter",
4
+ "due_date": "2015-10-01T00:00:00Z",
5
+ "interaction_type": null,
6
+ "completed_at": null,
7
+ "deleted_at": null,
8
+ "is_follow_up": false,
9
+ "last_contacted": null,
10
+ "contact_id": 1234,
11
+ "ignored": null,
12
+ "completed_via": null,
13
+ "user_id": 12345,
14
+ "approval_data": {
15
+ "approval_type": false,
16
+ "approval_text": false,
17
+ "approval_url": false,
18
+ "approval_template": false,
19
+ "approval_account_id": false
20
+ },
21
+ "contact_program_step_id": null,
22
+ "unresponded_followup_id": null,
23
+ "user_bucket": {
24
+ "id": 12312,
25
+ "name": "Colleague"
26
+ }
27
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "meta": {
3
+ "total": 1,
4
+ "next_page": null,
5
+ "previous_page": null
6
+ },
7
+ "data": [
8
+ {
9
+ "id": 123123,
10
+ "title": "Lolokopter",
11
+ "due_date": "2015-10-01T00:00:00Z",
12
+ "interaction_type": null,
13
+ "completed_at": null,
14
+ "deleted_at": null,
15
+ "is_follow_up": false,
16
+ "last_contacted": null,
17
+ "contact_id": 1234,
18
+ "ignored": null,
19
+ "completed_via": null,
20
+ "user_id": 12345,
21
+ "approval_data": {
22
+ "approval_type": false,
23
+ "approval_text": false,
24
+ "approval_url": false,
25
+ "approval_template": false,
26
+ "approval_account_id": false
27
+ },
28
+ "contact_program_step_id": null,
29
+ "unresponded_followup_id": null,
30
+ "user_bucket": {
31
+ "id": 12312,
32
+ "name": "Colleague"
33
+ }
34
+ }
35
+ ],
36
+ "weekly_progress": [
37
+ 0,
38
+ 7
39
+ ],
40
+ "on_due_date": true
41
+ }
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactually::Groupings do
4
+
5
+ let(:groupings_index_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/groupings_index.json")) }
6
+ let(:grouping_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/grouping.json")) }
7
+
8
+ before(:all) do
9
+ Contactually.configure { |c| c.access_token = 'VALID_ACCESS_TOKEN' }
10
+ @master = Contactually::API.new
11
+ end
12
+
13
+ subject { described_class.new @master }
14
+
15
+ describe '#initialize' do
16
+ specify do
17
+ expect(subject).to be_kind_of Contactually::Groupings
18
+ end
19
+
20
+ specify do
21
+ expect(subject.instance_variable_get(:@master)).to be_kind_of Contactually::API
22
+ end
23
+ end
24
+
25
+ describe '#index' do
26
+ it 'calls the api with correct params' do
27
+ allow(@master).to receive(:call).with('groupings.json', :get, { foo: :bar }).and_return({ 'data' => [] })
28
+ subject.index({ foo: :bar })
29
+ expect(@master).to have_received(:call)
30
+ end
31
+
32
+ it 'returns groupings from json response' do
33
+ allow(@master).to receive(:call).with('groupings.json', :get, {}).and_return(JSON.load(groupings_index_json))
34
+ expect(subject.index({})).to be_kind_of Array
35
+ expect(subject.index({})[0]).to be_kind_of Contactually::Grouping
36
+ end
37
+ end
38
+
39
+ describe '#create' do
40
+ it 'calls the api with correct params' do
41
+ allow(@master).to receive(:call).with('groupings.json', :post, { grouping: { foo: :bar }}).and_return({ 'id' => 1234 })
42
+ subject.create({ grouping: { foo: :bar }})
43
+ expect(@master).to have_received(:call)
44
+ end
45
+
46
+ it 'returns groupings from json response' do
47
+ allow(@master).to receive(:call).with('groupings.json', :post, { grouping: { foo: :bar }}).and_return(JSON.load(grouping_json))
48
+ expect(subject.create({ grouping: { foo: :bar }})).to be_kind_of Contactually::Grouping
49
+ end
50
+ end
51
+
52
+ describe '#destroy' do
53
+ it 'calls the api with correct params' do
54
+ allow(@master).to receive(:call).with('groupings/1.json', :delete, {})
55
+ subject.destroy(1)
56
+ expect(@master).to have_received(:call)
57
+ end
58
+ end
59
+
60
+ describe '#show' do
61
+ it 'calls the api with correct params' do
62
+ allow(@master).to receive(:call).with('groupings/1.json', :get, { foo: :bar }).and_return({ id: 1234 })
63
+ subject.show(1, { foo: :bar })
64
+ expect(@master).to have_received(:call)
65
+ end
66
+
67
+ it 'returns a grouping from json response' do
68
+ allow(@master).to receive(:call).with('groupings/1.json', :get, { foo: :bar }).and_return(JSON.load(grouping_json))
69
+ expect(subject.show(1, { foo: :bar })).to be_kind_of Contactually::Grouping
70
+ end
71
+ end
72
+
73
+ describe '#update' do
74
+ it 'calls the api with correct params' do
75
+ allow(@master).to receive(:call).with('groupings/1.json', :put, { grouping: { foo: :bar }}).and_return({ id: 1234 })
76
+ subject.update(1, { grouping: { foo: :bar }})
77
+ expect(@master).to have_received(:call)
78
+ end
79
+
80
+ it 'returns a grouping from json response' do
81
+ allow(@master).to receive(:call).with('groupings/1.json', :put, { grouping: { foo: :bar }}).and_return(JSON.load(grouping_json))
82
+ expect(subject.update(1, { grouping: { foo: :bar }})).to be_kind_of Contactually::Grouping
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactually::Notes do
4
+
5
+ let(:notes_index_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/notes_index.json")) }
6
+ let(:note_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/note.json")) }
7
+
8
+ before(:all) do
9
+ Contactually.configure { |c| c.access_token = 'VALID_ACCESS_TOKEN' }
10
+ @master = Contactually::API.new
11
+ end
12
+
13
+ subject { described_class.new @master }
14
+
15
+ describe '#initialize' do
16
+ specify do
17
+ expect(subject).to be_kind_of Contactually::Notes
18
+ end
19
+
20
+ specify do
21
+ expect(subject.instance_variable_get(:@master)).to be_kind_of Contactually::API
22
+ end
23
+ end
24
+
25
+ describe '#index' do
26
+ it 'calls the api with correct params' do
27
+ allow(@master).to receive(:call).with('notes.json', :get, { foo: :bar }).and_return({ 'data' => [] })
28
+ subject.index({ foo: :bar })
29
+ expect(@master).to have_received(:call)
30
+ end
31
+
32
+ it 'returns notes from json response' do
33
+ allow(@master).to receive(:call).with('notes.json', :get, {}).and_return(JSON.load(notes_index_json))
34
+ expect(subject.index({})).to be_kind_of Array
35
+ expect(subject.index({})[0]).to be_kind_of Contactually::Note
36
+ end
37
+ end
38
+
39
+ describe '#show' do
40
+ it 'calls the api with correct params' do
41
+ allow(@master).to receive(:call).with('notes/1.json', :get, { foo: :bar }).and_return(JSON.load(note_json))
42
+ subject.show(1, { foo: :bar })
43
+ expect(@master).to have_received(:call)
44
+ end
45
+
46
+ it 'returns a note' do
47
+ allow(@master).to receive(:call).with('notes/1.json', :get, { foo: :bar }).and_return(JSON.load(note_json))
48
+ expect(subject.show(1, { foo: :bar })).to be_kind_of Contactually::Note
49
+ end
50
+ end
51
+
52
+ describe '#create' do
53
+ it 'calls the api with correct params' do
54
+ allow(@master).to receive(:call).with('notes.json', :post, { note: { foo: :bar }}).and_return(JSON.load(note_json))
55
+ subject.create({ note: { foo: :bar }})
56
+ expect(@master).to have_received(:call)
57
+ end
58
+
59
+ it 'returns a note' do
60
+ allow(@master).to receive(:call).with('notes.json', :post, { note: { foo: :bar }}).and_return(JSON.load(note_json))
61
+ expect(subject.create({ note: { foo: :bar }})).to be_kind_of Contactually::Note
62
+ end
63
+ end
64
+
65
+ describe '#update' do
66
+ it 'calls the api with correct params' do
67
+ allow(@master).to receive(:call).with('notes/1.json', :put, { note: { foo: :bar }}).and_return(JSON.load(note_json))
68
+ subject.update(1, { note: { foo: :bar }})
69
+ expect(@master).to have_received(:call)
70
+ end
71
+
72
+ it 'returns a note' do
73
+ allow(@master).to receive(:call).with('notes/1.json', :put, { note: { foo: :bar }}).and_return(JSON.load(note_json))
74
+ expect(subject.update(1, { note: { foo: :bar }})).to be_kind_of Contactually::Note
75
+ end
76
+ end
77
+
78
+ describe '#destroy' do
79
+ it 'calls the api with correct params' do
80
+ allow(@master).to receive(:call).with('notes/1.json', :delete, { foo: :bar })
81
+ subject.destroy(1, { foo: :bar })
82
+ expect(@master).to have_received(:call)
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rspec'
5
+ require 'pry-byebug'
6
+ require 'contactually-ruby'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ RSpec.configure do |config|
13
+ config.color = true
14
+ end
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactually::Tasks do
4
+
5
+ let(:task_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/task.json")) }
6
+ let(:tasks_index_json) { File.read(File.join(File.dirname(__FILE__),"fixtures/tasks_index.json")) }
7
+
8
+ before(:all) do
9
+ Contactually.configure { |c| c.access_token = 'VALID_ACCESS_TOKEN' }
10
+ @master = Contactually::API.new
11
+ end
12
+
13
+ subject { described_class.new @master }
14
+ describe '#initialize' do
15
+ specify do
16
+ expect(subject).to be_kind_of Contactually::Tasks
17
+ end
18
+
19
+ specify do
20
+ expect(subject.instance_variable_get(:@master)).to be_kind_of Contactually::API
21
+ end
22
+ end
23
+
24
+ describe '#show' do
25
+ it 'calls the api with correct params' do
26
+ allow(@master).to receive(:call).with('tasks/1.json', :get, { foo: :bar }).and_return(JSON.load(task_json))
27
+ subject.show(1, { foo: :bar })
28
+ expect(@master).to have_received(:call)
29
+ end
30
+
31
+ it 'returns a task' do
32
+ allow(@master).to receive(:call).with('tasks/1.json', :get, { foo: :bar }).and_return(JSON.load(task_json))
33
+ expect(subject.show(1, { foo: :bar })).to be_kind_of Contactually::Task
34
+ end
35
+ end
36
+
37
+ describe '#complete' do
38
+ it 'calls the api with correct params' do
39
+ allow(@master).to receive(:call).with('tasks/1/complete.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
40
+ subject.complete(1, { foo: :bar })
41
+ expect(@master).to have_received(:call)
42
+ end
43
+
44
+ it 'returns a task' do
45
+ allow(@master).to receive(:call).with('tasks/1/complete.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
46
+ expect(subject.complete(1, { foo: :bar })).to be_kind_of Contactually::Task
47
+ end
48
+ end
49
+
50
+ describe '#create' do
51
+ it 'calls the api with correct params' do
52
+ allow(@master).to receive(:call).with('tasks.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
53
+ subject.create({ foo: :bar })
54
+ expect(@master).to have_received(:call)
55
+ end
56
+
57
+ it 'returns a new task' do
58
+ allow(@master).to receive(:call).with('tasks.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
59
+ expect(subject.create({ foo: :bar })).to be_kind_of Contactually::Task
60
+ end
61
+ end
62
+
63
+ describe '#update' do
64
+ it 'calls the api with correct params' do
65
+ allow(@master).to receive(:call).with('tasks/1.json', :put, { foo: :bar }).and_return(JSON.load(task_json))
66
+ subject.update(1, { foo: :bar })
67
+ expect(@master).to have_received(:call)
68
+ end
69
+
70
+ it 'returns a new task' do
71
+ allow(@master).to receive(:call).with('tasks/1.json', :put, { foo: :bar }).and_return(JSON.load(task_json))
72
+ expect(subject.update(1, { foo: :bar })).to be_kind_of Contactually::Task
73
+ end
74
+ end
75
+
76
+ describe '#destroy' do
77
+ it 'calls the api with correct params' do
78
+ allow(@master).to receive(:call).with('tasks/1.json', :delete, { foo: :bar }).and_return(JSON.load('{ "deleted": true }'))
79
+ subject.destroy(1, { foo: :bar })
80
+ expect(@master).to have_received(:call)
81
+ end
82
+ end
83
+
84
+ describe '#generate_followups' do
85
+ it 'calls the api with correct params' do
86
+ allow(@master).to receive(:call).with('tasks/generate_followups.json', :post, { foo: :bar }).and_return(JSON.load('{ "deleted": true }'))
87
+ subject.generate_followups({ foo: :bar })
88
+ expect(@master).to have_received(:call)
89
+ end
90
+ end
91
+
92
+ describe '#generate_followups' do
93
+ it 'calls the api with correct params' do
94
+ allow(@master).to receive(:call).with('tasks/1/snooze.json', :post, { foo: :bar }).and_return(JSON.load('{ "snooze": true }'))
95
+ subject.snooze(1, { foo: :bar })
96
+ expect(@master).to have_received(:call)
97
+ end
98
+ end
99
+
100
+ describe '#ignore' do
101
+ it 'calls the api with correct params' do
102
+ allow(@master).to receive(:call).with('tasks/1/ignore.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
103
+ subject.ignore(1, { foo: :bar })
104
+ expect(@master).to have_received(:call)
105
+ end
106
+
107
+ it 'returns a new task' do
108
+ allow(@master).to receive(:call).with('tasks/1/ignore.json', :post, { foo: :bar }).and_return(JSON.load(task_json))
109
+ expect(subject.ignore(1, { foo: :bar })).to be_kind_of Contactually::Task
110
+ end
111
+ end
112
+
113
+ describe '#index' do
114
+ it 'calls the api with correct params' do
115
+ allow(@master).to receive(:call).with('tasks.json', :get, { foo: :bar }).and_return({ 'data' => [] })
116
+ subject.index({ foo: :bar })
117
+ expect(@master).to have_received(:call)
118
+ end
119
+
120
+ it 'returns tasks from json response' do
121
+ allow(@master).to receive(:call).with('tasks.json', :get, {}).and_return(JSON.load(tasks_index_json))
122
+ expect(subject.index({})).to be_kind_of Array
123
+ expect(subject.index({})[0]).to be_kind_of Contactually::Task
124
+ end
125
+ end
126
+
127
+ end
metadata ADDED
@@ -0,0 +1,205 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contactually-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Tim Segraves
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.9'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: roar
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0.12'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '10'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '10'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3'
97
+ description: This is a simple wrapper for the contactually api.
98
+ email:
99
+ - tim@revaluate.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - lib/contactually-ruby.rb
108
+ - lib/contactually/accounts.rb
109
+ - lib/contactually/api.rb
110
+ - lib/contactually/buckets.rb
111
+ - lib/contactually/contact_groupings.rb
112
+ - lib/contactually/contacts.rb
113
+ - lib/contactually/contents.rb
114
+ - lib/contactually/errors.rb
115
+ - lib/contactually/groupings.rb
116
+ - lib/contactually/middleware/error_detector.rb
117
+ - lib/contactually/notes.rb
118
+ - lib/contactually/representer/account_representer.rb
119
+ - lib/contactually/representer/bucket_representer.rb
120
+ - lib/contactually/representer/contact_representer.rb
121
+ - lib/contactually/representer/content_representer.rb
122
+ - lib/contactually/representer/grouping_representer.rb
123
+ - lib/contactually/representer/grouping_statistic_representer.rb
124
+ - lib/contactually/representer/note_representer.rb
125
+ - lib/contactually/representer/task_representer.rb
126
+ - lib/contactually/tasks.rb
127
+ - lib/contactually/utils.rb
128
+ - lib/contactually/version.rb
129
+ - spec/accounts_spec.rb
130
+ - spec/api_spec.rb
131
+ - spec/buckets_spec.rb
132
+ - spec/contact_groupings_spec.rb
133
+ - spec/contacts_spec.rb
134
+ - spec/contents_spec.rb
135
+ - spec/error_detector_spec.rb
136
+ - spec/fixtures/account.json
137
+ - spec/fixtures/accounts_index.json
138
+ - spec/fixtures/bucket.json
139
+ - spec/fixtures/buckets_index.json
140
+ - spec/fixtures/contact.json
141
+ - spec/fixtures/contacts_index.json
142
+ - spec/fixtures/content.json
143
+ - spec/fixtures/contents_index.json
144
+ - spec/fixtures/grouping.json
145
+ - spec/fixtures/groupings_index.json
146
+ - spec/fixtures/note.json
147
+ - spec/fixtures/note_destroy.json
148
+ - spec/fixtures/notes_index.json
149
+ - spec/fixtures/task.json
150
+ - spec/fixtures/tasks_index.json
151
+ - spec/groupings_spec.rb
152
+ - spec/notes_spec.rb
153
+ - spec/spec_helper.rb
154
+ - spec/tasks_spec.rb
155
+ homepage: https://github.com/revaluate/contactually-ruby
156
+ licenses:
157
+ - MIT
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '2.0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.4.8
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: A wrapper for the contactually.com V2 api
179
+ test_files:
180
+ - spec/accounts_spec.rb
181
+ - spec/api_spec.rb
182
+ - spec/buckets_spec.rb
183
+ - spec/contact_groupings_spec.rb
184
+ - spec/contacts_spec.rb
185
+ - spec/contents_spec.rb
186
+ - spec/error_detector_spec.rb
187
+ - spec/fixtures/account.json
188
+ - spec/fixtures/accounts_index.json
189
+ - spec/fixtures/bucket.json
190
+ - spec/fixtures/buckets_index.json
191
+ - spec/fixtures/contact.json
192
+ - spec/fixtures/contacts_index.json
193
+ - spec/fixtures/content.json
194
+ - spec/fixtures/contents_index.json
195
+ - spec/fixtures/grouping.json
196
+ - spec/fixtures/groupings_index.json
197
+ - spec/fixtures/note.json
198
+ - spec/fixtures/note_destroy.json
199
+ - spec/fixtures/notes_index.json
200
+ - spec/fixtures/task.json
201
+ - spec/fixtures/tasks_index.json
202
+ - spec/groupings_spec.rb
203
+ - spec/notes_spec.rb
204
+ - spec/spec_helper.rb
205
+ - spec/tasks_spec.rb