contactology 0.0.1

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 (86) hide show
  1. data/.gitignore +5 -0
  2. data/.infinity_test +16 -0
  3. data/.rspec +3 -0
  4. data/.rvmrc +41 -0
  5. data/.watchr +36 -0
  6. data/Gemfile +6 -0
  7. data/Rakefile +1 -0
  8. data/contactology.gemspec +28 -0
  9. data/lib/contactology.rb +125 -0
  10. data/lib/contactology/api.rb +80 -0
  11. data/lib/contactology/basic_object.rb +21 -0
  12. data/lib/contactology/campaign.rb +127 -0
  13. data/lib/contactology/campaign/preview.rb +11 -0
  14. data/lib/contactology/campaigns.rb +2 -0
  15. data/lib/contactology/campaigns/standard.rb +80 -0
  16. data/lib/contactology/campaigns/transactional.rb +58 -0
  17. data/lib/contactology/configuration.rb +42 -0
  18. data/lib/contactology/contact.rb +193 -0
  19. data/lib/contactology/errors.rb +4 -0
  20. data/lib/contactology/issue.rb +24 -0
  21. data/lib/contactology/issues.rb +18 -0
  22. data/lib/contactology/list.rb +192 -0
  23. data/lib/contactology/list_proxy.rb +25 -0
  24. data/lib/contactology/parser.rb +5 -0
  25. data/lib/contactology/send_result.rb +35 -0
  26. data/lib/contactology/stash.rb +29 -0
  27. data/lib/contactology/transactional_message.rb +38 -0
  28. data/lib/contactology/version.rb +3 -0
  29. data/spec/factories/campaigns.rb +18 -0
  30. data/spec/factories/contacts.rb +3 -0
  31. data/spec/factories/issues.rb +9 -0
  32. data/spec/factories/lists.rb +3 -0
  33. data/spec/factories/transactional_messages.rb +5 -0
  34. data/spec/fixtures/net/campaign/destroy.yml +246 -0
  35. data/spec/fixtures/net/campaign/find/failure.yml +36 -0
  36. data/spec/fixtures/net/campaign/find/success.yml +176 -0
  37. data/spec/fixtures/net/campaign/find_by_name/failure.yml +36 -0
  38. data/spec/fixtures/net/campaign/find_by_name/success.yml +211 -0
  39. data/spec/fixtures/net/campaign/preview.yml +106 -0
  40. data/spec/fixtures/net/campaigns/standard/create/failure.yml +106 -0
  41. data/spec/fixtures/net/campaigns/standard/create/invalid.yml +141 -0
  42. data/spec/fixtures/net/campaigns/standard/create/success.yml +176 -0
  43. data/spec/fixtures/net/campaigns/standard/send_campaign/failure.yml +316 -0
  44. data/spec/fixtures/net/campaigns/standard/send_campaign/success.yml +316 -0
  45. data/spec/fixtures/net/campaigns/transactional/create/failure.yml +36 -0
  46. data/spec/fixtures/net/campaigns/transactional/create/success.yml +71 -0
  47. data/spec/fixtures/net/contact/active.yml +106 -0
  48. data/spec/fixtures/net/contact/change_email/success.yml +176 -0
  49. data/spec/fixtures/net/contact/change_email/unknown.yml +36 -0
  50. data/spec/fixtures/net/contact/create.yml +106 -0
  51. data/spec/fixtures/net/contact/destroy.yml +141 -0
  52. data/spec/fixtures/net/contact/find/active.yml +106 -0
  53. data/spec/fixtures/net/contact/find/suppressed.yml +141 -0
  54. data/spec/fixtures/net/contact/find/unknown.yml +36 -0
  55. data/spec/fixtures/net/contact/lists/empty.yml +106 -0
  56. data/spec/fixtures/net/contact/lists/full.yml +246 -0
  57. data/spec/fixtures/net/contact/lists/unknown.yml +71 -0
  58. data/spec/fixtures/net/contact/suppress.yml +141 -0
  59. data/spec/fixtures/net/list/all.yml +141 -0
  60. data/spec/fixtures/net/list/create.yml +106 -0
  61. data/spec/fixtures/net/list/destroy.yml +176 -0
  62. data/spec/fixtures/net/list/find/success.yml +141 -0
  63. data/spec/fixtures/net/list/find/unknown.yml +36 -0
  64. data/spec/fixtures/net/list/import/success.yml +351 -0
  65. data/spec/fixtures/net/list/subscribe/success.yml +211 -0
  66. data/spec/fixtures/net/list/unsubscribe/success.yml +246 -0
  67. data/spec/fixtures/net/transactional_message/send_message/failure.yml +176 -0
  68. data/spec/fixtures/net/transactional_message/send_message/success.yml +176 -0
  69. data/spec/models/contactology/api_spec.rb +51 -0
  70. data/spec/models/contactology/campaign_spec.rb +75 -0
  71. data/spec/models/contactology/campaigns/standard_spec.rb +84 -0
  72. data/spec/models/contactology/campaigns/transactional_spec.rb +28 -0
  73. data/spec/models/contactology/configuration_spec.rb +29 -0
  74. data/spec/models/contactology/contact_spec.rb +175 -0
  75. data/spec/models/contactology/issues_spec.rb +34 -0
  76. data/spec/models/contactology/list_spec.rb +125 -0
  77. data/spec/models/contactology/send_result_spec.rb +65 -0
  78. data/spec/models/contactology/stash_spec.rb +65 -0
  79. data/spec/models/contactology/transactional_message_spec.rb +65 -0
  80. data/spec/models/contactology_spec.rb +67 -0
  81. data/spec/requests/contacts_spec.rb +4 -0
  82. data/spec/spec_helper.rb +15 -0
  83. data/spec/support/contactology.rb +34 -0
  84. data/spec/support/factory_girl.rb +19 -0
  85. data/spec/support/vcr.rb +11 -0
  86. metadata +282 -0
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactology::SendResult do
4
+ let(:result) { new_result }
5
+ subject { result }
6
+
7
+ context '#successful?' do
8
+ context 'when success is true' do
9
+ subject { result.successful? }
10
+
11
+ it { should be_true }
12
+ end
13
+
14
+ context 'when success is false' do
15
+ let(:result) { new_result default_options.merge('success' => false) }
16
+ subject { result.successful? }
17
+
18
+ it { should be_false }
19
+ end
20
+ end
21
+
22
+ context '#issues' do
23
+ context 'with no issues given' do
24
+ let(:result) { new_result 'success' => true }
25
+ subject { result.issues }
26
+
27
+ it { should be_kind_of Contactology::Issues }
28
+ it { should be_empty }
29
+ its(:score) { should == 0 }
30
+ end
31
+
32
+ context 'with issues given' do
33
+ let(:result) { new_result default_options.merge('issues' => {'issues' => [{'text' => 'Test Issue'}]}) }
34
+ subject { result.issues }
35
+
36
+ it 'contains the issues' do
37
+ subject.any? { |i| i.text == 'Test Issue' }.should be_true
38
+ end
39
+ end
40
+ end
41
+
42
+ context '#score' do
43
+ it 'returns the issues score' do
44
+ subject.score.should == default_options['issues']['score']
45
+ end
46
+ end
47
+
48
+
49
+ private
50
+
51
+
52
+ def default_options
53
+ {
54
+ 'success' => true,
55
+ 'issues' => {
56
+ 'score' => 100,
57
+ 'issues' => []
58
+ }
59
+ }
60
+ end
61
+
62
+ def new_result(options = default_options)
63
+ Contactology::SendResult.new options
64
+ end
65
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactology::Stash do
4
+ class Stashie < Contactology::Stash
5
+ property :id
6
+ property :name, :from => :stashName
7
+ property :value, :required => true
8
+ end
9
+
10
+ context 'given defined properties' do
11
+ subject { new_stashie }
12
+
13
+ it { should be_instance_of Stashie }
14
+ its(:id) { should == 1 }
15
+ its(:name) { should == 'stashie' }
16
+ its(:value) { should == 2 }
17
+ end
18
+
19
+ context 'missing a required property' do
20
+ subject { new_stashie :id => 1 }
21
+
22
+ it 'raises an ArgumentError for the missing property' do
23
+ expect { subject }.to raise_error(ArgumentError, "The property 'value' is required for this Dash.")
24
+ end
25
+ end
26
+
27
+ context 'given fewer than the defined attributes' do
28
+ subject { new_stashie :value => 3.00 }
29
+
30
+ it { should be_instance_of Stashie }
31
+ its(:id) { should be_nil }
32
+ its(:name) { should be_nil }
33
+ its(:value) { should == 3 }
34
+ end
35
+
36
+ context 'given more than the defined attributes' do
37
+ subject { Stashie.new :value => 1, :unknown => true }
38
+
39
+ it { should be_instance_of Stashie }
40
+
41
+ it 'raises NoMethodError for undefined property' do
42
+ expect { subject.unknown }.to raise_error(NoMethodError)
43
+ end
44
+
45
+ its(:id) { should be_nil }
46
+ its(:name) { should be_nil }
47
+ its(:value) { should == 1 }
48
+ end
49
+
50
+
51
+ private
52
+
53
+
54
+ def default_attributes
55
+ {
56
+ :id => 1,
57
+ :name => 'stashie',
58
+ :value => 2.00
59
+ }
60
+ end
61
+
62
+ def new_stashie(attributes = default_attributes)
63
+ Stashie.new(attributes)
64
+ end
65
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactology::TransactionalMessage do
4
+ let(:message) { Factory.build_via_new :transactional_message }
5
+ subject { message }
6
+
7
+ context '#campaign' do
8
+ it 'is required' do
9
+ expect {
10
+ Contactology::TransactionalMessage.new Factory.attributes_for(:transactional_message).merge(:campaign => nil)
11
+ }.to raise_error(ArgumentError)
12
+ end
13
+ end
14
+
15
+ context '#contact' do
16
+ it 'is required' do
17
+ expect {
18
+ Contactology::TransactionalMessage.new Factory.attributes_for(:transactional_message).merge(:contact => nil)
19
+ }.to raise_error(ArgumentError)
20
+ end
21
+ end
22
+
23
+ context '#replacements' do
24
+ it 'is required' do
25
+ expect {
26
+ Contactology::TransactionalMessage.new Factory.attributes_for(:transactional_message).merge(:replacements => nil)
27
+ }.to raise_error(ArgumentError)
28
+ end
29
+ end
30
+
31
+ context '#send_message' do
32
+ context 'when successful' do
33
+ use_vcr_cassette 'transactional_message/send_message/success'
34
+ let(:contact) { Factory :contact }
35
+ let(:campaign) { Factory :transactional_campaign }
36
+ let(:message) { Factory.build_via_new :transactional_message, :campaign => campaign, :contact => contact }
37
+ after(:each) { contact.destroy; campaign.destroy }
38
+
39
+ subject { message.send_message }
40
+
41
+ it { should be_true }
42
+ end
43
+
44
+ context 'when unsuccessful' do
45
+ use_vcr_cassette 'transactional_message/send_message/failure'
46
+ let(:contact) { Factory :contact }
47
+ let(:campaign) { Factory :transactional_campaign }
48
+ let(:message) { Factory.build_via_new :transactional_message, :campaign => campaign, :contact => contact }
49
+ before(:each) { campaign.destroy }
50
+ after(:each) { contact.destroy }
51
+
52
+ subject { message.send_message }
53
+
54
+ it { should be_false }
55
+ end
56
+ end
57
+
58
+ context '#source' do
59
+ it 'is required' do
60
+ expect {
61
+ Contactology::TransactionalMessage.new Factory.attributes_for(:transactional_message).merge(:source => nil)
62
+ }.to raise_error(ArgumentError)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe Contactology do
4
+ maintain_contactology_configuration
5
+
6
+ let(:configuration) { Contactology.configuration }
7
+
8
+ context '.configuration' do
9
+ it 'yields a Contactology::Configuration instance' do
10
+ Contactology.configuration do |yielded|
11
+ yielded.should be_kind_of Contactology::Configuration
12
+ end
13
+ end
14
+
15
+ it 'yields the same configuration instance across multiple calls' do
16
+ Contactology.configuration do |config|
17
+ Contactology.configuration do |config2|
18
+ config.object_id.should == config2.object_id
19
+ end
20
+ end
21
+ end
22
+
23
+ it 'returns the configuration when queried' do
24
+ Contactology.configuration do |config|
25
+ Contactology.configuration.object_id.should == config.object_id
26
+ end
27
+ end
28
+
29
+ it 'may be explicitly overridden' do
30
+ configuration = Contactology::Configuration.new
31
+ expect {
32
+ Contactology.configuration = configuration
33
+ }.to change(Contactology, :configuration).to(configuration)
34
+ end
35
+
36
+ it 'raises an ArgumentError when set to a non-Configuration object' do
37
+ expect {
38
+ Contactology.configuration = 'bad'
39
+ }.to raise_error(ArgumentError)
40
+ end
41
+ end
42
+
43
+ context '.endpoint' do
44
+ it 'returns the configuration endpoint' do
45
+ Contactology.endpoint.should == configuration.endpoint
46
+ end
47
+
48
+ it 'overrides the configuration endpoint' do
49
+ expect {
50
+ Contactology.endpoint = 'https://example.local/'
51
+ }.to change(configuration, :endpoint).to('https://example.local/')
52
+ end
53
+ end
54
+
55
+ context '.key' do
56
+ it 'returns the configuration key' do
57
+ configuration.key = 'test'
58
+ Contactology.key.should == configuration.key
59
+ end
60
+
61
+ it 'overrides the configuration key' do
62
+ expect {
63
+ Contactology.key = 'testing'
64
+ }.to change(configuration, :key).to('testing')
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Contacts' do
4
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.require(:default, :development)
4
+
5
+ # Requires supporting files with custom matchers and macros, etc.,
6
+ # in ./support/ and its subdirectories.
7
+ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each do |file|
8
+ require(file)
9
+ end
10
+
11
+ RSpec.configure do |config|
12
+ config.mock_with :rspec
13
+ config.filter_run :focus => true
14
+ config.run_all_when_everything_filtered = true
15
+ end
@@ -0,0 +1,34 @@
1
+ require 'pathname'
2
+
3
+ path = Pathname.new(File.expand_path('../../contactology.yml', __FILE__))
4
+
5
+ if path.exist?
6
+ begin
7
+ CONTACTOLOGY_CONFIGURATION = YAML.load_file(path)
8
+ Contactology.configure do |config|
9
+ config.key = CONTACTOLOGY_CONFIGURATION['key'] || abort("Contactology configuration file (#{path}) is missing the key value.")
10
+ config.endpoint = CONTACTOLOGY_CONFIGURATION['endpoint'] if CONTACTOLOGY_CONFIGURATION.has_key?('endpoint')
11
+ end
12
+ rescue NoMethodError
13
+ abort "Contactology configuration file (#{path}) is malformatted or unreadable."
14
+ end
15
+ else
16
+ abort "Contactology test configuration (#{path}) not found."
17
+ end
18
+
19
+ module ConfigurationSpecHelpers
20
+ def maintain_contactology_configuration
21
+ before(:each) do
22
+ @_isolated_configuration = Contactology.configuration
23
+ Contactology.configuration = @_isolated_configuration.dup
24
+ end
25
+
26
+ after(:each) do
27
+ Contactology.configuration = @_isolated_configuration
28
+ end
29
+ end
30
+ end
31
+
32
+ RSpec.configure do |config|
33
+ config.extend ConfigurationSpecHelpers
34
+ end
@@ -0,0 +1,19 @@
1
+ Dir[File.expand_path('../../factories', __FILE__) + '/*.rb'].each do |factory|
2
+ require factory
3
+ end
4
+
5
+ def Factory.build_via_new(name, attributes = {})
6
+ attributes = Factory.attributes_for(name).merge(attributes)
7
+ klass = FactoryGirl.factory_by_name(name).build_class
8
+ klass.new(attributes)
9
+ end
10
+
11
+ ##
12
+ # Override the default Factory() create alias method to build the attributes
13
+ # hash, then create them all though the new method. This gets around :required
14
+ # attribute issues in Hashie objects.
15
+ #
16
+ def Factory(name, attributes = {})
17
+ Factory.build_via_new(name, attributes).save!
18
+ end
19
+
@@ -0,0 +1,11 @@
1
+ VCR.config do |config|
2
+ config.cassette_library_dir = File.expand_path('../../fixtures/net', __FILE__)
3
+ config.default_cassette_options = { :record => :none }
4
+ config.stub_with :webmock
5
+ config.filter_sensitive_data('%{API_KEY}') { CONTACTOLOGY_CONFIGURATION['key'] }
6
+ config.filter_sensitive_data('%{API_ENDPOINT}') { CONTACTOLOGY_CONFIGURATION['endpoint'] }
7
+ end
8
+
9
+ RSpec.configure do |config|
10
+ config.extend(VCR::RSpec::Macros)
11
+ end
metadata ADDED
@@ -0,0 +1,282 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contactology
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Nathaniel Bibler
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-08-03 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hashie
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: "1.1"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: httparty
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: vcr
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: "1.5"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: "2.0"
57
+ type: :development
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: infinity_test
61
+ prerelease: false
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :development
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: factory_girl
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: "2.0"
79
+ type: :development
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: rack
83
+ prerelease: false
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: "1.2"
90
+ type: :development
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: watchr
94
+ prerelease: false
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ type: :development
102
+ version_requirements: *id008
103
+ description: This library provides Ruby calls to interact with the Contactology email marketing API
104
+ email:
105
+ - git@nathanielbibler.com
106
+ executables: []
107
+
108
+ extensions: []
109
+
110
+ extra_rdoc_files: []
111
+
112
+ files:
113
+ - .gitignore
114
+ - .infinity_test
115
+ - .rspec
116
+ - .rvmrc
117
+ - .watchr
118
+ - Gemfile
119
+ - Rakefile
120
+ - contactology.gemspec
121
+ - lib/contactology.rb
122
+ - lib/contactology/api.rb
123
+ - lib/contactology/basic_object.rb
124
+ - lib/contactology/campaign.rb
125
+ - lib/contactology/campaign/preview.rb
126
+ - lib/contactology/campaigns.rb
127
+ - lib/contactology/campaigns/standard.rb
128
+ - lib/contactology/campaigns/transactional.rb
129
+ - lib/contactology/configuration.rb
130
+ - lib/contactology/contact.rb
131
+ - lib/contactology/errors.rb
132
+ - lib/contactology/issue.rb
133
+ - lib/contactology/issues.rb
134
+ - lib/contactology/list.rb
135
+ - lib/contactology/list_proxy.rb
136
+ - lib/contactology/parser.rb
137
+ - lib/contactology/send_result.rb
138
+ - lib/contactology/stash.rb
139
+ - lib/contactology/transactional_message.rb
140
+ - lib/contactology/version.rb
141
+ - spec/factories/campaigns.rb
142
+ - spec/factories/contacts.rb
143
+ - spec/factories/issues.rb
144
+ - spec/factories/lists.rb
145
+ - spec/factories/transactional_messages.rb
146
+ - spec/fixtures/net/campaign/destroy.yml
147
+ - spec/fixtures/net/campaign/find/failure.yml
148
+ - spec/fixtures/net/campaign/find/success.yml
149
+ - spec/fixtures/net/campaign/find_by_name/failure.yml
150
+ - spec/fixtures/net/campaign/find_by_name/success.yml
151
+ - spec/fixtures/net/campaign/preview.yml
152
+ - spec/fixtures/net/campaigns/standard/create/failure.yml
153
+ - spec/fixtures/net/campaigns/standard/create/invalid.yml
154
+ - spec/fixtures/net/campaigns/standard/create/success.yml
155
+ - spec/fixtures/net/campaigns/standard/send_campaign/failure.yml
156
+ - spec/fixtures/net/campaigns/standard/send_campaign/success.yml
157
+ - spec/fixtures/net/campaigns/transactional/create/failure.yml
158
+ - spec/fixtures/net/campaigns/transactional/create/success.yml
159
+ - spec/fixtures/net/contact/active.yml
160
+ - spec/fixtures/net/contact/change_email/success.yml
161
+ - spec/fixtures/net/contact/change_email/unknown.yml
162
+ - spec/fixtures/net/contact/create.yml
163
+ - spec/fixtures/net/contact/destroy.yml
164
+ - spec/fixtures/net/contact/find/active.yml
165
+ - spec/fixtures/net/contact/find/suppressed.yml
166
+ - spec/fixtures/net/contact/find/unknown.yml
167
+ - spec/fixtures/net/contact/lists/empty.yml
168
+ - spec/fixtures/net/contact/lists/full.yml
169
+ - spec/fixtures/net/contact/lists/unknown.yml
170
+ - spec/fixtures/net/contact/suppress.yml
171
+ - spec/fixtures/net/list/all.yml
172
+ - spec/fixtures/net/list/create.yml
173
+ - spec/fixtures/net/list/destroy.yml
174
+ - spec/fixtures/net/list/find/success.yml
175
+ - spec/fixtures/net/list/find/unknown.yml
176
+ - spec/fixtures/net/list/import/success.yml
177
+ - spec/fixtures/net/list/subscribe/success.yml
178
+ - spec/fixtures/net/list/unsubscribe/success.yml
179
+ - spec/fixtures/net/transactional_message/send_message/failure.yml
180
+ - spec/fixtures/net/transactional_message/send_message/success.yml
181
+ - spec/models/contactology/api_spec.rb
182
+ - spec/models/contactology/campaign_spec.rb
183
+ - spec/models/contactology/campaigns/standard_spec.rb
184
+ - spec/models/contactology/campaigns/transactional_spec.rb
185
+ - spec/models/contactology/configuration_spec.rb
186
+ - spec/models/contactology/contact_spec.rb
187
+ - spec/models/contactology/issues_spec.rb
188
+ - spec/models/contactology/list_spec.rb
189
+ - spec/models/contactology/send_result_spec.rb
190
+ - spec/models/contactology/stash_spec.rb
191
+ - spec/models/contactology/transactional_message_spec.rb
192
+ - spec/models/contactology_spec.rb
193
+ - spec/requests/contacts_spec.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/contactology.rb
196
+ - spec/support/factory_girl.rb
197
+ - spec/support/vcr.rb
198
+ homepage: https://github.com/nbibler/contactology
199
+ licenses: []
200
+
201
+ post_install_message:
202
+ rdoc_options: []
203
+
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ none: false
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: "0"
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: "0"
218
+ requirements: []
219
+
220
+ rubyforge_project:
221
+ rubygems_version: 1.8.5
222
+ signing_key:
223
+ specification_version: 3
224
+ summary: A Ruby interface to the Contactology email marketing API
225
+ test_files:
226
+ - spec/factories/campaigns.rb
227
+ - spec/factories/contacts.rb
228
+ - spec/factories/issues.rb
229
+ - spec/factories/lists.rb
230
+ - spec/factories/transactional_messages.rb
231
+ - spec/fixtures/net/campaign/destroy.yml
232
+ - spec/fixtures/net/campaign/find/failure.yml
233
+ - spec/fixtures/net/campaign/find/success.yml
234
+ - spec/fixtures/net/campaign/find_by_name/failure.yml
235
+ - spec/fixtures/net/campaign/find_by_name/success.yml
236
+ - spec/fixtures/net/campaign/preview.yml
237
+ - spec/fixtures/net/campaigns/standard/create/failure.yml
238
+ - spec/fixtures/net/campaigns/standard/create/invalid.yml
239
+ - spec/fixtures/net/campaigns/standard/create/success.yml
240
+ - spec/fixtures/net/campaigns/standard/send_campaign/failure.yml
241
+ - spec/fixtures/net/campaigns/standard/send_campaign/success.yml
242
+ - spec/fixtures/net/campaigns/transactional/create/failure.yml
243
+ - spec/fixtures/net/campaigns/transactional/create/success.yml
244
+ - spec/fixtures/net/contact/active.yml
245
+ - spec/fixtures/net/contact/change_email/success.yml
246
+ - spec/fixtures/net/contact/change_email/unknown.yml
247
+ - spec/fixtures/net/contact/create.yml
248
+ - spec/fixtures/net/contact/destroy.yml
249
+ - spec/fixtures/net/contact/find/active.yml
250
+ - spec/fixtures/net/contact/find/suppressed.yml
251
+ - spec/fixtures/net/contact/find/unknown.yml
252
+ - spec/fixtures/net/contact/lists/empty.yml
253
+ - spec/fixtures/net/contact/lists/full.yml
254
+ - spec/fixtures/net/contact/lists/unknown.yml
255
+ - spec/fixtures/net/contact/suppress.yml
256
+ - spec/fixtures/net/list/all.yml
257
+ - spec/fixtures/net/list/create.yml
258
+ - spec/fixtures/net/list/destroy.yml
259
+ - spec/fixtures/net/list/find/success.yml
260
+ - spec/fixtures/net/list/find/unknown.yml
261
+ - spec/fixtures/net/list/import/success.yml
262
+ - spec/fixtures/net/list/subscribe/success.yml
263
+ - spec/fixtures/net/list/unsubscribe/success.yml
264
+ - spec/fixtures/net/transactional_message/send_message/failure.yml
265
+ - spec/fixtures/net/transactional_message/send_message/success.yml
266
+ - spec/models/contactology/api_spec.rb
267
+ - spec/models/contactology/campaign_spec.rb
268
+ - spec/models/contactology/campaigns/standard_spec.rb
269
+ - spec/models/contactology/campaigns/transactional_spec.rb
270
+ - spec/models/contactology/configuration_spec.rb
271
+ - spec/models/contactology/contact_spec.rb
272
+ - spec/models/contactology/issues_spec.rb
273
+ - spec/models/contactology/list_spec.rb
274
+ - spec/models/contactology/send_result_spec.rb
275
+ - spec/models/contactology/stash_spec.rb
276
+ - spec/models/contactology/transactional_message_spec.rb
277
+ - spec/models/contactology_spec.rb
278
+ - spec/requests/contacts_spec.rb
279
+ - spec/spec_helper.rb
280
+ - spec/support/contactology.rb
281
+ - spec/support/factory_girl.rb
282
+ - spec/support/vcr.rb