icontact 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac45e275cf9346ad3c10aefcefc4437a37a8c078
4
- data.tar.gz: 2ff173fa0a5b2fc2aadb83160a52efcdf970d296
3
+ metadata.gz: d3a505fef9d111e1ef537217756169f65c579596
4
+ data.tar.gz: 06965beb80528dd7cf36f572102d2e10b66552f6
5
5
  SHA512:
6
- metadata.gz: f623902b65f724bdf153b4431bd66eb6903ea3bf70f15a0f85ab594ba48625c79822a603995e54da878975a41fef59e811fde0687e951f1629c12026039e7236
7
- data.tar.gz: 73ae5fb5e32626a77bcbaadd8b691cdf093646af27de3137edb4778c939876b0fd1b2655c580bc88e758f974588a260720ed957bb6d8a71f06e9610b328b05ea
6
+ metadata.gz: be07d42d4083962a9f58e951f22c3c6111113b9c4bdbd865b69c12794a76fc73dd166b8836521fb9ffe9c02f9fb1f9906b1a08ceaceda038e1c0fd4bf18720d8
7
+ data.tar.gz: 3d7d61dfb0e167e2333157d1c78d6f9c476bfb0c6b84034aef12f42ba1bfda4554d0f7233f8689cb453dd00ceb0ad68577df7ab9fb0619a10739ec49fcde49f3
data/.gitignore CHANGED
@@ -1,4 +1,3 @@
1
- config/*.yml
2
- spec/fixtures/vcr_cassettes/*.yml
1
+ spec/*.yml
3
2
  *.log
4
3
  pkg/
data/Gemfile.lock CHANGED
@@ -1,22 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- icontact (0.0.2)
4
+ icontact (0.0.3)
5
5
  faraday (~> 0.8)
6
6
  oj (~> 2.11)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.3.6)
12
- crack (0.4.2)
13
- safe_yaml (~> 1.0.0)
14
11
  diff-lcs (1.2.5)
15
- faker (1.4.3)
16
- i18n (~> 0.5)
17
12
  faraday (0.9.0)
18
13
  multipart-post (>= 1.2, < 3)
19
- i18n (0.6.11)
20
14
  multipart-post (2.0.0)
21
15
  oj (2.11.1)
22
16
  rake (10.3.2)
@@ -32,20 +26,12 @@ GEM
32
26
  rspec-mocks (3.1.3)
33
27
  rspec-support (~> 3.1.0)
34
28
  rspec-support (3.1.2)
35
- safe_yaml (1.0.4)
36
- vcr (2.9.3)
37
- webmock (1.20.3)
38
- addressable (>= 2.3.6)
39
- crack (>= 0.3.2)
40
29
 
41
30
  PLATFORMS
42
31
  ruby
43
32
 
44
33
  DEPENDENCIES
45
34
  bundler (~> 1.5)
46
- faker (~> 1.4)
47
35
  icontact!
48
36
  rake (~> 10.3)
49
37
  rspec (~> 3.0)
50
- vcr (~> 2.9)
51
- webmock (~> 1.18)
data/icontact.gemspec CHANGED
@@ -1,9 +1,7 @@
1
1
  # encoding: utf-8
2
- require File.expand_path('../lib/icontact/version', __FILE__)
3
-
4
2
  Gem::Specification.new do |gem|
5
3
  gem.name = 'icontact'
6
- gem.version = IContact::VERSION
4
+ gem.version = '0.0.3'
7
5
  gem.authors = ['Devin Turner']
8
6
  gem.email = ['devin.turner09@gmail.com']
9
7
  gem.summary = 'Ruby wrapper for the iContact API'
@@ -17,13 +15,9 @@ Gem::Specification.new do |gem|
17
15
 
18
16
  gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
19
17
 
20
- gem.add_runtime_dependency 'oj', '~> 2.11'
21
- gem.add_runtime_dependency 'faraday', '~> 0.8'
22
-
18
+ gem.add_runtime_dependency 'oj', '~> 2.11'
19
+ gem.add_runtime_dependency 'faraday', '~> 0.8'
23
20
  gem.add_development_dependency 'bundler', '~> 1.5'
24
21
  gem.add_development_dependency 'rake', '~> 10.3'
25
22
  gem.add_development_dependency 'rspec', '~> 3.0'
26
- gem.add_development_dependency 'vcr', '~> 2.9'
27
- gem.add_development_dependency 'webmock', '~> 1.18'
28
- gem.add_development_dependency 'faker', '~> 1.4'
29
23
  end
@@ -0,0 +1,30 @@
1
+ module IContact
2
+ class Api
3
+ module Accounts
4
+
5
+ def get_account(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
7
+ response = get(accounts_path + id)
8
+ resource(response, 'account')
9
+ end
10
+
11
+ def get_accounts
12
+ response = get(accounts_path)
13
+ resource(response, 'accounts')
14
+ end
15
+
16
+ def update_account(id, data)
17
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
18
+ response = post(accounts_path + id, data)
19
+ resource(response, 'account')
20
+ end
21
+
22
+ private
23
+
24
+ def accounts_path
25
+ '/icp/a/'
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -3,6 +3,7 @@ module IContact
3
3
  module ClientFolders
4
4
 
5
5
  def get_client_folder(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(client_folders_path + id)
7
8
  resource(response, 'clientfolder')
8
9
  end
@@ -23,11 +24,13 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_client_folder(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(client_folders_path + id, data)
27
29
  resource(response, 'clientfolder')
28
30
  end
29
31
 
30
32
  def update_client_folder!(id, data)
33
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
31
34
  response = put(client_folders_path + id, data)
32
35
  resource(response, 'clientfolder')
33
36
  end
@@ -3,6 +3,7 @@ module IContact
3
3
  module Contacts
4
4
 
5
5
  def get_contact(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(contacts_path + id)
7
8
  resource(response, 'contact')
8
9
  end
@@ -23,11 +24,13 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_contact(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(contacts_path + id, data)
27
29
  resource(response, 'contact')
28
30
  end
29
31
 
30
32
  def update_contact!(id, data)
33
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
31
34
  response = put(contacts_path + id, data)
32
35
  resource(response, 'contact')
33
36
  end
@@ -38,11 +41,13 @@ module IContact
38
41
  end
39
42
 
40
43
  def delete_contact(id)
44
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
41
45
  response = delete(contacts_path + id)
42
46
  resource(response, 'status')
43
47
  end
44
48
 
45
49
  def find_contacts(data)
50
+ raise ArgumentError, 'Data cannot be empty' if data.nil? || data.empty?
46
51
  data.merge!(limit: 10000) unless data.has_key?(:limit)
47
52
  response = get(contacts_path + query(data))
48
53
  resource(response, 'contacts')
@@ -51,7 +56,7 @@ module IContact
51
56
  private
52
57
 
53
58
  def contacts_path
54
- "/icp/a/#{account_id}/c/#{client_id}/contacts/"
59
+ "/icp/a/#{account_id}/c/#{client_folder_id}/contacts/"
55
60
  end
56
61
 
57
62
  end
@@ -3,6 +3,7 @@ module IContact
3
3
  module CustomFields
4
4
 
5
5
  def get_custom_field(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(custom_fields_path + id)
7
8
  resource(response, 'customfield')
8
9
  end
@@ -23,11 +24,13 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_custom_field(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(custom_fields_path + id, data)
27
29
  resource(response, 'customfield')
28
30
  end
29
31
 
30
32
  def update_custom_field!(id, data)
33
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
31
34
  response = put(custom_fields_path + id, data)
32
35
  resource(response, 'customfield')
33
36
  end
@@ -38,6 +41,7 @@ module IContact
38
41
  end
39
42
 
40
43
  def delete_custom_field(id)
44
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
41
45
  response = delete(custom_fields_path + id)
42
46
  resource(response, 'status')
43
47
  end
@@ -45,7 +49,7 @@ module IContact
45
49
  private
46
50
 
47
51
  def custom_fields_path
48
- "/icp/a/#{account_id}/c/#{client_id}/customfields/"
52
+ "/icp/a/#{account_id}/c/#{client_folder_id}/customfields/"
49
53
  end
50
54
 
51
55
  end
@@ -3,6 +3,7 @@ module IContact
3
3
  module Lists
4
4
 
5
5
  def get_list(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(lists_path + id)
7
8
  resource(response, 'list')
8
9
  end
@@ -23,11 +24,13 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_list(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(lists_path + id, data)
27
29
  resource(response, 'list')
28
30
  end
29
31
 
30
32
  def update_list!(id, data)
33
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
31
34
  response = put(lists_path + id, data)
32
35
  resource(response, 'list')
33
36
  end
@@ -38,6 +41,7 @@ module IContact
38
41
  end
39
42
 
40
43
  def delete_list(id)
44
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
41
45
  response = delete(lists_path + id)
42
46
  resource(response, 'status')
43
47
  end
@@ -45,7 +49,7 @@ module IContact
45
49
  private
46
50
 
47
51
  def lists_path
48
- "/icp/a/#{account_id}/c/#{client_id}/lists/"
52
+ "/icp/a/#{account_id}/c/#{client_folder_id}/lists/"
49
53
  end
50
54
 
51
55
  end
@@ -3,6 +3,7 @@ module IContact
3
3
  module Subscriptions
4
4
 
5
5
  def get_subscription(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(subscriptions_path + id)
7
8
  resource(response, 'subscription')
8
9
  end
@@ -23,11 +24,13 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_subscription(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(subscriptions_path + id, data)
27
29
  resource(response, 'subscription')
28
30
  end
29
31
 
30
32
  def move_contact(id, data)
33
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
31
34
  response = put(subscriptions_path + id, data)
32
35
  resource(response, 'subscription')
33
36
  end
@@ -40,7 +43,7 @@ module IContact
40
43
  private
41
44
 
42
45
  def subscriptions_path
43
- "/icp/a/#{account_id}/c/#{client_id}/subscriptions/"
46
+ "/icp/a/#{account_id}/c/#{client_folder_id}/subscriptions/"
44
47
  end
45
48
 
46
49
  end
@@ -3,6 +3,7 @@ module IContact
3
3
  module Users
4
4
 
5
5
  def get_user(id)
6
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
6
7
  response = get(users_path + id)
7
8
  resource(response, 'user')
8
9
  end
@@ -23,6 +24,7 @@ module IContact
23
24
  end
24
25
 
25
26
  def update_user(id, data)
27
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
26
28
  response = post(users_path + id, data)
27
29
  resource(response, 'user')
28
30
  end
@@ -33,6 +35,7 @@ module IContact
33
35
  end
34
36
 
35
37
  def delete_user(id)
38
+ raise ArgumentError, 'ID cannot be nil' if id.nil?
36
39
  response = delete(users_path + id)
37
40
  resource(response, 'status')
38
41
  end
data/lib/icontact/api.rb CHANGED
@@ -1,17 +1,13 @@
1
- require 'faraday'
2
- require 'oj'
3
-
4
1
  require_relative 'connection'
5
- require_relative 'api/client_folders'
6
- require_relative 'api/contacts'
7
- require_relative 'api/custom_fields'
8
- require_relative 'api/lists'
9
- require_relative 'api/subscriptions'
10
- require_relative 'api/users'
2
+
3
+ Dir[File.dirname(__FILE__) + '/api/*'].each do |file|
4
+ require file
5
+ end
11
6
 
12
7
  module IContact
13
8
  class Api
14
9
  include Connection
10
+ include Accounts
15
11
  include ClientFolders
16
12
  include Contacts
17
13
  include CustomFields
@@ -19,30 +15,26 @@ module IContact
19
15
  include Subscriptions
20
16
  include Users
21
17
 
22
- attr_accessor :account_id, :client_id
23
- attr_reader :app_id, :username, :password, :accounts, :clients
18
+ attr_accessor :account_id, :client_folder_id
19
+ attr_reader :app_id, :username, :password
24
20
 
25
21
  def initialize(username, password, app_id)
22
+ raise ArgumentError, 'Username cannot be nil' if username.nil?
23
+ raise ArgumentError, 'Password cannot be nil' if password.nil?
24
+ raise ArgumentError, 'App ID cannot be nil' if app_id.nil?
25
+
26
26
  @app_id = app_id
27
27
  @username = username
28
28
  @password = password
29
29
  @account_id = get_accounts.first['accountId']
30
- @client_id = get_clients.first['clientFolderId']
31
- end
32
-
33
- def get_accounts
34
- response = get('/icp/a/')
35
- @accounts = resource(response, 'accounts')
36
- end
37
-
38
- def get_clients
39
- response = get("/icp/a/#{account_id}/c")
40
- @clients = resource(response, 'clientfolders')
30
+ raise IContact::NotAuthorized, 'Unable to find account' if account_id.nil?
31
+ @client_folder_id = get_client_folders.first['clientFolderId']
32
+ raise IContact::NotAuthorized, 'Unable to find client folder' if client_folder_id.nil?
41
33
  end
42
34
 
43
35
  def ping
44
- return false if account_id.nil? || client_id.nil?
45
- url = "#{BASE_URL}/icp/a/#{account_id}/c/#{client_id}/"
36
+ return false if account_id.nil? || client_folder_id.nil?
37
+ url = "#{BASE_URL}/icp/a/#{account_id}/c/#{client_folder_id}/"
46
38
  response = connection.run_request(:get, url, '', headers)
47
39
  response.status.to_i == 200
48
40
  end
@@ -13,10 +13,12 @@ module IContact
13
13
  end
14
14
 
15
15
  def post(path, data)
16
+ raise ArgumentError, 'Data cannot be empty' if data.nil? || data.empty?
16
17
  request(:post, path, data)
17
18
  end
18
19
 
19
20
  def put(path, data)
21
+ raise ArgumentError, 'Data cannot be empty' if data.nil? || data.empty?
20
22
  request(:put, path, data)
21
23
  end
22
24
 
@@ -52,8 +54,6 @@ module IContact
52
54
  case response.status.to_i
53
55
  when 200..299
54
56
  response_success(response)
55
- when 404 # Return empty array instead of throwing an error
56
- []
57
57
  else
58
58
  IContact::ErrorHandler.new(response)
59
59
  end
@@ -1,7 +1,4 @@
1
1
  class IContactError < StandardError
2
- def initialize(message)
3
- super(message)
4
- end
5
2
  end
6
3
 
7
4
  # http://www.icontact.com/developerportal/documentation/http-status-codes/
@@ -20,6 +17,8 @@ module IContact
20
17
 
21
18
  class IContact::PaymentRequest < IContactError; end
22
19
 
20
+ class IContact::ResourceNotFound < IContactError; end
21
+
23
22
  class IContact::MethodNotAllowed < IContactError; end
24
23
 
25
24
  class IContact::InsufficientSpace < IContactError; end
@@ -34,6 +33,7 @@ module IContact
34
33
  401 => IContact::NotAuthorized,
35
34
  402 => IContact::PaymentRequest,
36
35
  403 => IContact::Forbidden,
36
+ 404 => IContact::ResourceNotFound,
37
37
  405 => IContact::MethodNotAllowed,
38
38
  406 => IContact::NotAcceptable,
39
39
  415 => IContact::UnsupportedMediaType,
data/lib/icontact.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'icontact/version'
1
+ require 'faraday'
2
+ require 'oj'
3
+
2
4
  require 'icontact/errors'
3
5
  require 'icontact/api'
4
6
 
5
7
  module IContact
6
-
7
8
  end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe IContact::Api do
4
+
5
+ before do
6
+ @username = options['username']
7
+ @password = options['password']
8
+ @app_id = options['app_id']
9
+ @client = IContact::Api.new(@username, @password, @app_id)
10
+ end
11
+
12
+ describe '#initialize' do
13
+ context 'with valid attributes' do
14
+ it 'sets a username' do
15
+ expect(@client.username).to eq(@username)
16
+ end
17
+
18
+ it 'sets a password' do
19
+ expect(@client.password).to eq(@password)
20
+ end
21
+
22
+ it 'sets an app id' do
23
+ expect(@client.app_id).to eq(@app_id)
24
+ end
25
+ end
26
+
27
+ context 'with invalid attributes' do
28
+ it 'raises an error when username is nil' do
29
+ expect { IContact::Api.new(nil, @password, @app_id) }.to raise_error(ArgumentError)
30
+ end
31
+
32
+ it 'raises an error when password is nil' do
33
+ expect { IContact::Api.new(@username, nil, @app_id) }.to raise_error(ArgumentError)
34
+ end
35
+
36
+ it 'raises an error when app id is nil' do
37
+ expect { IContact::Api.new(@username, @password, nil) }.to raise_error(ArgumentError)
38
+ end
39
+ end
40
+ end
41
+
42
+ describe '#ping' do
43
+ context 'with valid account_id and client_folder_id' do
44
+ it 'connects to the icontact api' do
45
+ expect(@client.ping).to eq(true)
46
+ end
47
+ end
48
+
49
+ context 'with invalid account_id or client_folder_id' do
50
+ it 'returns false with invalid account_id' do
51
+ @client.account_id = 'hello'
52
+ expect(@client.ping).to eq(false)
53
+ end
54
+ it 'returns false with invalid client_folder_id' do
55
+ @client.client_folder_id = 'tacos'
56
+ expect(@client.ping).to eq(false)
57
+ end
58
+ end
59
+ end
60
+
61
+ describe 'attributes' do
62
+ it 'sets a new account id' do
63
+ account_id = @client.get_accounts.sample['accountId']
64
+ @client.account_id = account_id
65
+ expect(@client.account_id).to eq(account_id)
66
+ end
67
+
68
+ it 'sets a new client folder id' do
69
+ client_folder_id = @client.get_client_folders.sample['clientFolderId']
70
+ @client.client_folder_id = client_folder_id
71
+ expect(@client.client_folder_id).to eq(client_folder_id)
72
+ end
73
+ end
74
+
75
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,27 +1,16 @@
1
- require 'webmock/rspec'
2
- require 'faker'
3
1
  require 'icontact'
4
2
  require 'yaml'
5
- require 'vcr'
6
3
 
7
- def options
8
- path = File.join(File.dirname(__FILE__), '../config/test.yml')
9
- @options ||= YAML::load_file(File.expand_path(path))
10
- end
4
+ # Set your username, password, and app id in spec/config.yml
5
+ # EXAMPLE:
6
+ # username: 'user@example.com'
7
+ # password: 'your-api-password'
8
+ # app_id: 'your-app-id'
11
9
 
12
- def client
13
- @client ||= IContact::Api.new(options['username'], options['password'], options['app_id'])
14
- end
15
10
 
16
- VCR.configure do |config|
17
- config.default_cassette_options = { record: :new_episodes }
18
- config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
19
- # config.debug_logger = File.open('log/vcr.log', 'w')
20
- config.hook_into :webmock
21
-
22
- config.filter_sensitive_data('<-APP-ID->') { options['app_id'] }
23
- config.filter_sensitive_data('<-API-USERNAME->') { options['username'] }
24
- config.filter_sensitive_data('<-API-PASSWORD->') { options['password'] }
11
+ def options
12
+ path = File.join(File.dirname(__FILE__), 'config.yml')
13
+ @options ||= YAML::load_file(path)
25
14
  end
26
15
 
27
16
  RSpec.configure do |config|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icontact
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Devin Turner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2014-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -80,48 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: vcr
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.9'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.9'
97
- - !ruby/object:Gem::Dependency
98
- name: webmock
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.18'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.18'
111
- - !ruby/object:Gem::Dependency
112
- name: faker
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.4'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.4'
125
83
  description:
126
84
  email:
127
85
  - devin.turner09@gmail.com
@@ -136,10 +94,10 @@ files:
136
94
  - LICENSE.txt
137
95
  - README.md
138
96
  - Rakefile
139
- - config/test.yml.example
140
97
  - icontact.gemspec
141
98
  - lib/icontact.rb
142
99
  - lib/icontact/api.rb
100
+ - lib/icontact/api/accounts.rb
143
101
  - lib/icontact/api/client_folders.rb
144
102
  - lib/icontact/api/contacts.rb
145
103
  - lib/icontact/api/custom_fields.rb
@@ -148,10 +106,7 @@ files:
148
106
  - lib/icontact/api/users.rb
149
107
  - lib/icontact/connection.rb
150
108
  - lib/icontact/errors.rb
151
- - lib/icontact/version.rb
152
- - spec/icontact/api/contacts_spec.rb
153
- - spec/icontact/api_spec.rb
154
- - spec/icontact_spec.rb
109
+ - spec/icontact/icontact_spec.rb
155
110
  - spec/spec_helper.rb
156
111
  homepage: https://github.com/l1h3r/icontact
157
112
  licenses:
@@ -1,3 +0,0 @@
1
- username: 'your username'
2
- password: 'your password'
3
- app_id: 'your app id'
@@ -1,3 +0,0 @@
1
- module IContact
2
- VERSION = '0.0.2'
3
- end
@@ -1,88 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe IContact::Api::Contacts do
4
-
5
- let(:contact_id) { '9316234' }
6
-
7
- describe '#get_contact' do
8
- it 'returns a single contact' do
9
- VCR.use_cassette('get_contact') do
10
- contact = client.get_contact(contact_id)
11
- expect(contact).to be_a(Hash)
12
- expect(contact).not_to be_empty
13
- expect(contact['contactId']).to eq(contact_id)
14
- end
15
- end
16
- end
17
-
18
- describe '#get_contacts' do
19
- it 'returns all contacts' do
20
- VCR.use_cassette('get_contacts') do
21
- contacts = client.get_contacts
22
- expect(contacts).to be_a(Array)
23
- expect(contacts).not_to be_empty
24
- end
25
- end
26
- end
27
-
28
- describe '#create_contact' do
29
- it 'creates and returns a new contact' do
30
- VCR.use_cassette('create_contact') do
31
- data = {
32
- firstName: Faker::Name.first_name,
33
- lastName: Faker::Name.last_name,
34
- email: Faker::Internet.email
35
- }
36
- contact = client.create_contact(data)
37
- expect(contact).to be_a(Hash)
38
- expect(contact).not_to be_empty
39
- expect(contact['contactId']).not_to be_nil
40
- end
41
- end
42
- end
43
-
44
- describe '#create_contacts' do
45
- it 'creats a returns a collection of new contacts' do
46
- VCR.use_cassette('create_contacts') do
47
- data = [{
48
- firstName: Faker::Name.first_name,
49
- lastName: Faker::Name.last_name,
50
- email: Faker::Internet.email
51
- },{
52
- firstName: Faker::Name.first_name,
53
- lastName: Faker::Name.last_name,
54
- email: Faker::Internet.email
55
- }]
56
- contacts = client.create_contacts(data)
57
- expect(contacts).to be_a(Array)
58
- expect(contacts).not_to be_empty
59
- expect(contacts.count).to eq(2)
60
- end
61
- end
62
- end
63
-
64
- describe '#find_contacts' do
65
- context 'when searching by first name' do
66
- it 'returns all contacts that match the given params' do
67
- VCR.use_cassette('find_contacts_first_name') do
68
- contacts = client.find_contacts(firstName: 'Charlie')
69
- expect(contacts).to be_a(Array)
70
- expect(contacts).not_to be_empty
71
- expect(contacts.first['firstName']).to eq('Charlie')
72
- end
73
- end
74
- end
75
-
76
- context 'when searching by last name' do
77
- it 'returns all contacts that match the given params' do
78
- VCR.use_cassette('find_contacts_last_name') do
79
- contacts = client.find_contacts(lastName: 'Br*')
80
- expect(contacts).to be_a(Array)
81
- expect(contacts).not_to be_empty
82
- expect(contacts.first['lastName']).to start_with('Br')
83
- end
84
- end
85
- end
86
- end
87
-
88
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe IContact::Api do
4
-
5
- describe '#get_accounts' do
6
- it 'returns all accounts for the user' do
7
- VCR.use_cassette('get_accounts') do
8
- accounts = client.get_accounts
9
- expect(accounts).to be_a(Array)
10
- expect(accounts).not_to be_empty
11
- end
12
- end
13
- end
14
-
15
- describe '#get_clients' do
16
- it 'returns all clients for the account' do
17
- VCR.use_cassette('get_clients') do
18
- clients = client.get_clients
19
- expect(clients).to be_a(Array)
20
- expect(clients).not_to be_empty
21
- end
22
- end
23
- end
24
-
25
- describe '#ping' do
26
- it 'connects to iContact' do
27
- VCR.use_cassette('ping') do
28
- expect(client.ping).to eq(true)
29
- end
30
- end
31
- end
32
-
33
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe IContact do
4
-
5
- it 'has a version number' do
6
- expect(IContact::VERSION).not_to eq(nil)
7
- end
8
-
9
- end