constantcontact-ruby 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/README.md +136 -0
  4. data/constantcontact-ruby.gemspec +31 -0
  5. data/lib/constantcontact/api.rb +1012 -0
  6. data/lib/constantcontact/auth/oauth2.rb +105 -0
  7. data/lib/constantcontact/auth/session_data_store.rb +69 -0
  8. data/lib/constantcontact/components/account/account_address.rb +26 -0
  9. data/lib/constantcontact/components/account/account_info.rb +38 -0
  10. data/lib/constantcontact/components/account/verified_email_address.rb +26 -0
  11. data/lib/constantcontact/components/activities/activity.rb +43 -0
  12. data/lib/constantcontact/components/activities/activity_error.rb +26 -0
  13. data/lib/constantcontact/components/activities/add_contacts.rb +127 -0
  14. data/lib/constantcontact/components/activities/add_contacts_import_data.rb +46 -0
  15. data/lib/constantcontact/components/activities/export_contacts.rb +30 -0
  16. data/lib/constantcontact/components/component.rb +48 -0
  17. data/lib/constantcontact/components/contacts/address.rb +27 -0
  18. data/lib/constantcontact/components/contacts/contact.rb +92 -0
  19. data/lib/constantcontact/components/contacts/contact_list.rb +26 -0
  20. data/lib/constantcontact/components/contacts/custom_field.rb +26 -0
  21. data/lib/constantcontact/components/contacts/email_address.rb +33 -0
  22. data/lib/constantcontact/components/contacts/note.rb +26 -0
  23. data/lib/constantcontact/components/email_marketing/campaign.rb +83 -0
  24. data/lib/constantcontact/components/email_marketing/campaign_preview.rb +29 -0
  25. data/lib/constantcontact/components/email_marketing/click_through_details.rb +27 -0
  26. data/lib/constantcontact/components/email_marketing/message_footer.rb +29 -0
  27. data/lib/constantcontact/components/email_marketing/schedule.rb +27 -0
  28. data/lib/constantcontact/components/email_marketing/test_send.rb +45 -0
  29. data/lib/constantcontact/components/event_spot/contact.rb +27 -0
  30. data/lib/constantcontact/components/event_spot/event.rb +69 -0
  31. data/lib/constantcontact/components/event_spot/event_address.rb +29 -0
  32. data/lib/constantcontact/components/event_spot/event_fee.rb +27 -0
  33. data/lib/constantcontact/components/event_spot/event_item.rb +36 -0
  34. data/lib/constantcontact/components/event_spot/event_item_attribute.rb +26 -0
  35. data/lib/constantcontact/components/event_spot/event_track.rb +31 -0
  36. data/lib/constantcontact/components/event_spot/guest.rb +31 -0
  37. data/lib/constantcontact/components/event_spot/guest_section.rb +34 -0
  38. data/lib/constantcontact/components/event_spot/notification_option.rb +27 -0
  39. data/lib/constantcontact/components/event_spot/online_meeting.rb +28 -0
  40. data/lib/constantcontact/components/event_spot/payment_address.rb +29 -0
  41. data/lib/constantcontact/components/event_spot/payment_summary.rb +33 -0
  42. data/lib/constantcontact/components/event_spot/promocode.rb +25 -0
  43. data/lib/constantcontact/components/event_spot/registrant.rb +52 -0
  44. data/lib/constantcontact/components/event_spot/registrant_fee.rb +29 -0
  45. data/lib/constantcontact/components/event_spot/registrant_field.rb +27 -0
  46. data/lib/constantcontact/components/event_spot/registrant_order.rb +39 -0
  47. data/lib/constantcontact/components/event_spot/registrant_promo_code.rb +31 -0
  48. data/lib/constantcontact/components/event_spot/registrant_promo_code_info.rb +27 -0
  49. data/lib/constantcontact/components/event_spot/registrant_section.rb +34 -0
  50. data/lib/constantcontact/components/event_spot/sale_item.rb +29 -0
  51. data/lib/constantcontact/components/library/file/library_file.rb +27 -0
  52. data/lib/constantcontact/components/library/folder/library_folder.rb +26 -0
  53. data/lib/constantcontact/components/library/info/library_summary.rb +26 -0
  54. data/lib/constantcontact/components/library/info/move_results.rb +26 -0
  55. data/lib/constantcontact/components/library/info/upload_status.rb +26 -0
  56. data/lib/constantcontact/components/result_set.rb +50 -0
  57. data/lib/constantcontact/components/tracking/bounce_activity.rb +28 -0
  58. data/lib/constantcontact/components/tracking/click_activity.rb +26 -0
  59. data/lib/constantcontact/components/tracking/forward_activity.rb +26 -0
  60. data/lib/constantcontact/components/tracking/open_activity.rb +26 -0
  61. data/lib/constantcontact/components/tracking/send_activity.rb +27 -0
  62. data/lib/constantcontact/components/tracking/tracking_activity.rb +26 -0
  63. data/lib/constantcontact/components/tracking/tracking_summary.rb +27 -0
  64. data/lib/constantcontact/components/tracking/unsubscribe_activity.rb +27 -0
  65. data/lib/constantcontact/exceptions/ctct_exception.rb +25 -0
  66. data/lib/constantcontact/exceptions/illegal_argument_exception.rb +11 -0
  67. data/lib/constantcontact/exceptions/oauth2_exception.rb +11 -0
  68. data/lib/constantcontact/exceptions/webhooks_exception.rb +11 -0
  69. data/lib/constantcontact/services/account_service.rb +39 -0
  70. data/lib/constantcontact/services/activity_service.rb +136 -0
  71. data/lib/constantcontact/services/base_service.rb +68 -0
  72. data/lib/constantcontact/services/campaign_schedule_service.rb +101 -0
  73. data/lib/constantcontact/services/campaign_tracking_service.rb +152 -0
  74. data/lib/constantcontact/services/contact_service.rb +105 -0
  75. data/lib/constantcontact/services/contact_tracking_service.rb +152 -0
  76. data/lib/constantcontact/services/email_marketing_service.rb +94 -0
  77. data/lib/constantcontact/services/event_spot_service.rb +448 -0
  78. data/lib/constantcontact/services/library_service.rb +281 -0
  79. data/lib/constantcontact/services/list_service.rb +81 -0
  80. data/lib/constantcontact/util/config.rb +180 -0
  81. data/lib/constantcontact/util/helpers.rb +27 -0
  82. data/lib/constantcontact/version.rb +12 -0
  83. data/lib/constantcontact/webhooks/helpers/validator.rb +30 -0
  84. data/lib/constantcontact/webhooks/models/billing_change_notification.rb +27 -0
  85. data/lib/constantcontact/webhooks/webhooks_util.rb +45 -0
  86. data/lib/constantcontact.rb +124 -0
  87. data/spec/constantcontact/api_spec.rb +1560 -0
  88. data/spec/constantcontact/auth/oauth2_spec.rb +125 -0
  89. data/spec/constantcontact/components/contacts/address_spec.rb +18 -0
  90. data/spec/constantcontact/components/contacts/contact_list_spec.rb +18 -0
  91. data/spec/constantcontact/components/contacts/contact_spec.rb +18 -0
  92. data/spec/constantcontact/components/contacts/custom_field_spec.rb +18 -0
  93. data/spec/constantcontact/components/contacts/email_address_spec.rb +18 -0
  94. data/spec/constantcontact/sdk_spec.rb +24 -0
  95. data/spec/constantcontact/services/account_service_spec.rb +46 -0
  96. data/spec/constantcontact/services/activity_service_spec.rb +244 -0
  97. data/spec/constantcontact/services/base_service_spec.rb +50 -0
  98. data/spec/constantcontact/services/campaign_schedule_service_spec.rb +115 -0
  99. data/spec/constantcontact/services/campaign_tracking_service_spec.rb +131 -0
  100. data/spec/constantcontact/services/contact_service_spec.rb +111 -0
  101. data/spec/constantcontact/services/contact_tracking_service_spec.rb +131 -0
  102. data/spec/constantcontact/services/email_marketing_spec.rb +100 -0
  103. data/spec/constantcontact/services/event_spot_spec.rb +423 -0
  104. data/spec/constantcontact/services/library_service_spec.rb +252 -0
  105. data/spec/constantcontact/services/list_service_spec.rb +89 -0
  106. data/spec/constantcontact/webhooks/webhooks_spec.rb +26 -0
  107. metadata +243 -0
@@ -0,0 +1,423 @@
1
+ #
2
+ # event_spot_service_spec.rb
3
+ # ConstantContact
4
+ #
5
+ # Copyright (c) 2013 Constant Contact. All rights reserved.
6
+
7
+ require 'spec_helper'
8
+
9
+ describe ConstantContact::Services::EventSpotService do
10
+ before(:each) do
11
+ @request = double('http request', :user => nil, :password => nil, :url => 'http://example.com', :redirection_history => nil)
12
+ end
13
+
14
+ describe "#get_events" do
15
+ it "returns a set of events" do
16
+ json = load_file('events.json')
17
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
18
+
19
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
20
+ RestClient.stub(:get).and_return(response)
21
+ events = ConstantContact::Services::EventSpotService.get_events()
22
+ events.should be_kind_of(ConstantContact::Components::ResultSet)
23
+ events.results.collect{|e| e.should be_kind_of(ConstantContact::Components::Event) }
24
+ end
25
+ end
26
+
27
+ describe "#get_event" do
28
+ it "returns an event" do
29
+ json = load_file('event.json')
30
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
31
+
32
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
33
+ RestClient.stub(:get).and_return(response)
34
+ event = ConstantContact::Services::EventSpotService.get_event(1)
35
+
36
+ event.should be_kind_of(ConstantContact::Components::Event)
37
+ end
38
+ end
39
+
40
+ describe "#add_event" do
41
+ it "adds an event" do
42
+ json = load_file('event.json')
43
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
44
+
45
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
46
+ RestClient.stub(:post).and_return(response)
47
+ event = ConstantContact::Components::Event.create(JSON.parse(json))
48
+ added = ConstantContact::Services::EventSpotService.add_event(event)
49
+
50
+ added.should respond_to(:id)
51
+ added.id.should_not be_empty
52
+ end
53
+ end
54
+
55
+ describe "#publish_event" do
56
+ it "updates an event with status of ACTIVE" do
57
+ json = load_file('event.json')
58
+ hash = JSON.parse json
59
+ hash["status"] = "ACTIVE"
60
+
61
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
62
+ response = RestClient::Response.create(hash.to_json, net_http_resp, {}, @request)
63
+ RestClient.stub(:patch).and_return(response)
64
+
65
+ event = ConstantContact::Components::Event.create(JSON.parse(json))
66
+ updated = ConstantContact::Services::EventSpotService.publish_event(event)
67
+ updated.should be_kind_of(ConstantContact::Components::Event)
68
+ updated.should respond_to(:status)
69
+ updated.status.should eq("ACTIVE")
70
+ end
71
+ end
72
+
73
+ describe "#cancel_event" do
74
+ it "updates an event's status to CANCELLED" do
75
+ json = load_file('event.json')
76
+ hash = JSON.parse json
77
+ hash["status"] = "CANCELLED"
78
+
79
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
80
+ response = RestClient::Response.create(hash.to_json, net_http_resp, {}, @request)
81
+ RestClient.stub(:patch).and_return(response)
82
+
83
+ event = ConstantContact::Components::Event.create(JSON.parse(json))
84
+ updated = ConstantContact::Services::EventSpotService.cancel_event(event)
85
+ updated.should be_kind_of(ConstantContact::Components::Event)
86
+ updated.should respond_to(:status)
87
+ updated.status.should eq("CANCELLED")
88
+ end
89
+ end
90
+
91
+ describe "#get_fees" do
92
+ it "returns an array of fees for an event" do
93
+ event_json = load_file('event.json')
94
+ fees_json = load_file('fees.json')
95
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
96
+
97
+ response = RestClient::Response.create(fees_json, net_http_resp, {}, @request)
98
+ RestClient.stub(:get).and_return(response)
99
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
100
+ fees = ConstantContact::Services::EventSpotService.get_fees(event)
101
+ #fees.should be_kind_of(ConstantContact::Components::ResultSet)
102
+ #fees.results.collect{|f| f.should be_kind_of(ConstantContact::Components::Fee) }
103
+
104
+ fees.should be_kind_of(Array) # inconsistent with oether APIs.
105
+ fees.collect{|f| f.should be_kind_of(ConstantContact::Components::EventFee) }
106
+ end
107
+ end
108
+
109
+ describe "#get_fee" do
110
+ it "return an event fee" do
111
+ event_json = load_file('event.json')
112
+ fee_json = load_file('fees.json')
113
+
114
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
115
+ response = RestClient::Response.create(fee_json, net_http_resp, {}, @request)
116
+ RestClient.stub(:get).and_return(response)
117
+
118
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
119
+ fee = ConstantContact::Components::EventFee.create(JSON.parse(fee_json))
120
+ retrieved = ConstantContact::Services::EventSpotService.get_fee(event, fee)
121
+ retrieved.should be_kind_of(ConstantContact::Components::EventFee)
122
+ end
123
+ end
124
+
125
+ describe "#add_fee" do
126
+ it "adds an event fee" do
127
+ event_json = load_file('event.json')
128
+ fee_json = load_file('fee.json')
129
+
130
+ net_http_resp = Net::HTTPResponse.new(1.0, 201, 'Created')
131
+ response = RestClient::Response.create(fee_json, net_http_resp, {}, @request)
132
+ RestClient.stub(:post).and_return(response)
133
+
134
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
135
+ fee = ConstantContact::Components::EventFee.create(JSON.parse(fee_json))
136
+ added = ConstantContact::Services::EventSpotService.add_fee(event, fee)
137
+ added.should be_kind_of(ConstantContact::Components::EventFee)
138
+ added.id.should_not be_empty
139
+ end
140
+ end
141
+
142
+ describe "#update_fee" do
143
+ it "updates an event fee" do
144
+ event_json = load_file('event.json')
145
+ fee_json = load_file('fee.json')
146
+ hash = JSON.parse fee_json
147
+ hash['fee'] += 1
148
+
149
+ net_http_resp = Net::HTTPResponse.new(1.0, 201, 'Created')
150
+ response = RestClient::Response.create(hash.to_json, net_http_resp, {}, @request)
151
+ RestClient.stub(:put).and_return(response)
152
+
153
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
154
+ fee = ConstantContact::Components::EventFee.create(JSON.parse(fee_json))
155
+ updated = ConstantContact::Services::EventSpotService.update_fee(event, fee)
156
+ updated.should be_kind_of(ConstantContact::Components::EventFee)
157
+ updated.fee.should_not eq(fee.fee)
158
+ updated.fee.should eq(fee.fee + 1)
159
+ end
160
+ end
161
+
162
+ describe "#delete_fee" do
163
+ it "deletes an event fee" do
164
+ event_json = load_file('event.json')
165
+ fee_json = load_file('fees.json')
166
+
167
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
168
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
169
+ RestClient.stub(:delete).and_return(response)
170
+
171
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
172
+ fee = ConstantContact::Components::EventFee.create(JSON.parse(fee_json))
173
+ ConstantContact::Services::EventSpotService.delete_fee(event, fee).should be_true
174
+ end
175
+ end
176
+
177
+ describe "#get_registrants" do
178
+ it "returns an array of event registrants" do
179
+ event_json = load_file('event.json')
180
+ registrants_json = load_file('registrants.json')
181
+
182
+ net_http_resp = Net::HTTPResponse.new(1.0, 201, 'Created')
183
+ response = RestClient::Response.create(registrants_json, net_http_resp, {}, @request)
184
+ RestClient.stub(:get).and_return(response)
185
+
186
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
187
+ registrants = ConstantContact::Services::EventSpotService.get_registrants(event)
188
+ registrants.should be_kind_of(ConstantContact::Components::ResultSet)
189
+ registrants.results.collect{|r| r .should be_kind_of(ConstantContact::Components::Registrant) }
190
+ end
191
+ end
192
+
193
+ describe "#get_registrant" do
194
+ it "returns an event registrant" do
195
+ event_json = load_file('event.json')
196
+ registrant_json = load_file('registrant.json')
197
+
198
+ net_http_resp = Net::HTTPResponse.new(1.0, 201, 'Created')
199
+ response = RestClient::Response.create(registrant_json, net_http_resp, {}, @request)
200
+ RestClient.stub(:get).and_return(response)
201
+
202
+ event = ConstantContact::Components::Event.create(JSON.parse(event_json))
203
+ registrant = ConstantContact::Components::Registrant.create(JSON.parse(registrant_json))
204
+ retrieved = ConstantContact::Services::EventSpotService.get_registrant(event, registrant)
205
+ retrieved.should be_kind_of(ConstantContact::Components::Registrant)
206
+ retrieved.id.should_not be_empty
207
+ end
208
+ end
209
+
210
+ describe "#get_event_items" do
211
+ it "returns an array of event items" do
212
+ json_response = load_file('event_items_response.json')
213
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
214
+
215
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
216
+ RestClient.stub(:get).and_return(response)
217
+
218
+ results = ConstantContact::Services::EventSpotService.get_event_items(1)
219
+ results.should be_kind_of(Array)
220
+ results.first.should be_kind_of(ConstantContact::Components::EventItem)
221
+ results.first.name.should eq('Running Belt')
222
+ end
223
+ end
224
+
225
+ describe "#get_event_item" do
226
+ it "returns an event item" do
227
+ json = load_file('event_item_response.json')
228
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
229
+
230
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
231
+ RestClient.stub(:get).and_return(response)
232
+
233
+ result = ConstantContact::Services::EventSpotService.get_event_item(1, 1)
234
+ result.should be_kind_of(ConstantContact::Components::EventItem)
235
+ result.name.should eq('Running Belt')
236
+ end
237
+ end
238
+
239
+ describe "#add_event_item" do
240
+ it "adds an event item" do
241
+ json = load_file('event_item_response.json')
242
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
243
+
244
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
245
+ RestClient.stub(:post).and_return(response)
246
+ event_item = ConstantContact::Components::EventItem.create(JSON.parse(json))
247
+
248
+ result = ConstantContact::Services::EventSpotService.add_event_item(1, event_item)
249
+ result.should be_kind_of(ConstantContact::Components::EventItem)
250
+ result.name.should eq('Running Belt')
251
+ end
252
+ end
253
+
254
+ describe "#delete_event_item" do
255
+ it "deletes an event item" do
256
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
257
+
258
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
259
+ RestClient.stub(:delete).and_return(response)
260
+
261
+ result = ConstantContact::Services::EventSpotService.delete_event_item(1, 1)
262
+ result.should be_true
263
+ end
264
+ end
265
+
266
+ describe "#update_event_item" do
267
+ it "updates an event item" do
268
+ json = load_file('event_item_response.json')
269
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
270
+
271
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
272
+ RestClient.stub(:put).and_return(response)
273
+ event_item = ConstantContact::Components::EventItem.create(JSON.parse(json))
274
+
275
+ result = ConstantContact::Services::EventSpotService.update_event_item(1, event_item)
276
+ result.should be_kind_of(ConstantContact::Components::EventItem)
277
+ result.name.should eq('Running Belt')
278
+ end
279
+ end
280
+
281
+ describe "#get_event_item_attributes" do
282
+ it "returns an array of event item attributes" do
283
+ json_response = load_file('event_item_attributes_response.json')
284
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
285
+
286
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
287
+ RestClient.stub(:get).and_return(response)
288
+
289
+ results = ConstantContact::Services::EventSpotService.get_event_item_attributes(1, 1)
290
+ results.should be_kind_of(Array)
291
+ results.first.should be_kind_of(ConstantContact::Components::EventItemAttribute)
292
+ results.first.name.should eq('Royal Blue')
293
+ end
294
+ end
295
+
296
+ describe "#get_event_item_attribute" do
297
+ it "returns an event item attribute" do
298
+ json = load_file('event_item_attribute_response.json')
299
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
300
+
301
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
302
+ RestClient.stub(:get).and_return(response)
303
+
304
+ result = ConstantContact::Services::EventSpotService.get_event_item_attribute(1, 1, 1)
305
+ result.should be_kind_of(ConstantContact::Components::EventItemAttribute)
306
+ result.name.should eq('Hi-Vis Green')
307
+ end
308
+ end
309
+
310
+ describe "#add_event_item_attribute" do
311
+ it "adds an event item attribute" do
312
+ json = load_file('event_item_attribute_response.json')
313
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
314
+
315
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
316
+ RestClient.stub(:post).and_return(response)
317
+ event_item_attribute = ConstantContact::Components::EventItemAttribute.create(JSON.parse(json))
318
+
319
+ result = ConstantContact::Services::EventSpotService.add_event_item_attribute(1, 1, event_item_attribute)
320
+ result.should be_kind_of(ConstantContact::Components::EventItemAttribute)
321
+ result.name.should eq('Hi-Vis Green')
322
+ end
323
+ end
324
+
325
+ describe "#delete_event_item_attribute" do
326
+ it "deletes an event item attribute" do
327
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
328
+
329
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
330
+ RestClient.stub(:delete).and_return(response)
331
+
332
+ result = ConstantContact::Services::EventSpotService.delete_event_item_attribute(1, 1, 1)
333
+ result.should be_true
334
+ end
335
+ end
336
+
337
+ describe "#update_event_item_attribute" do
338
+ it "updates an event item attribute" do
339
+ json = load_file('event_item_attribute_response.json')
340
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
341
+
342
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
343
+ RestClient.stub(:put).and_return(response)
344
+ event_item_attribute = ConstantContact::Components::EventItemAttribute.create(JSON.parse(json))
345
+
346
+ result = ConstantContact::Services::EventSpotService.update_event_item_attribute(1, 1, event_item_attribute)
347
+ result.should be_kind_of(ConstantContact::Components::EventItemAttribute)
348
+ result.name.should eq('Hi-Vis Green')
349
+ end
350
+ end
351
+
352
+ describe "#get_promocodes" do
353
+ it "returns an array of promocodes" do
354
+ json_response = load_file('promocodes_response.json')
355
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
356
+
357
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
358
+ RestClient.stub(:get).and_return(response)
359
+
360
+ results = ConstantContact::Services::EventSpotService.get_promocodes(1)
361
+ results.should be_kind_of(Array)
362
+ results.first.should be_kind_of(ConstantContact::Components::Promocode)
363
+ results.first.code_name.should eq('REDUCED_FEE')
364
+ end
365
+ end
366
+
367
+ describe "#get_promocode" do
368
+ it "returns a promocode" do
369
+ json = load_file('promocode_response.json')
370
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
371
+
372
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
373
+ RestClient.stub(:get).and_return(response)
374
+
375
+ result = ConstantContact::Services::EventSpotService.get_promocode(1, 1)
376
+ result.should be_kind_of(ConstantContact::Components::Promocode)
377
+ result.code_name.should eq('TOTAL_FEE')
378
+ end
379
+ end
380
+
381
+ describe "#add_promocode" do
382
+ it "adds a promocode" do
383
+ json = load_file('promocode_response.json')
384
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
385
+
386
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
387
+ RestClient.stub(:post).and_return(response)
388
+ promocode = ConstantContact::Components::Promocode.create(JSON.parse(json))
389
+
390
+ result = ConstantContact::Services::EventSpotService.add_promocode(1, promocode)
391
+ result.should be_kind_of(ConstantContact::Components::Promocode)
392
+ result.code_name.should eq('TOTAL_FEE')
393
+ end
394
+ end
395
+
396
+ describe "#delete_promocode" do
397
+ it "deletes a promocode" do
398
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
399
+
400
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
401
+ RestClient.stub(:delete).and_return(response)
402
+
403
+ result = ConstantContact::Services::EventSpotService.delete_promocode(1, 1)
404
+ result.should be_true
405
+ end
406
+ end
407
+
408
+ describe "#update_promocode" do
409
+ it "updates an event item" do
410
+ json = load_file('promocode_response.json')
411
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
412
+
413
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
414
+ RestClient.stub(:put).and_return(response)
415
+ promocode = ConstantContact::Components::Promocode.create(JSON.parse(json))
416
+
417
+ result = ConstantContact::Services::EventSpotService.update_promocode(1, promocode)
418
+ result.should be_kind_of(ConstantContact::Components::Promocode)
419
+ result.code_name.should eq('TOTAL_FEE')
420
+ end
421
+ end
422
+
423
+ end
@@ -0,0 +1,252 @@
1
+ #
2
+ # library_service_spec.rb
3
+ # ConstantContact
4
+ #
5
+ # Copyright (c) 2013 Constant Contact. All rights reserved.
6
+
7
+ require 'spec_helper'
8
+
9
+ describe ConstantContact::Services::LibraryService do
10
+ before(:each) do
11
+ @request = double('http request', :user => nil, :password => nil, :url => 'http://example.com', :redirection_history => nil)
12
+ end
13
+
14
+ describe "#get_library_info" do
15
+ it "retrieves a MyLibrary usage information" do
16
+ json_response = load_file('library_info_response.json')
17
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
18
+
19
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
20
+ RestClient.stub(:get).and_return(response)
21
+
22
+ info = ConstantContact::Services::LibraryService.get_library_info()
23
+ info.should be_kind_of(ConstantContact::Components::LibrarySummary)
24
+ info.usage_summary['folder_count'].should eq(6)
25
+ end
26
+ end
27
+
28
+ describe "#get_library_folders" do
29
+ it "retrieves a list of MyLibrary folders" do
30
+ json_response = load_file('library_folders_response.json')
31
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
32
+
33
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
34
+ RestClient.stub(:get).and_return(response)
35
+
36
+ folders = ConstantContact::Services::LibraryService.get_library_folders({:limit => 2})
37
+ folders.should be_kind_of(ConstantContact::Components::ResultSet)
38
+ folders.results.first.should be_kind_of(ConstantContact::Components::LibraryFolder)
39
+ folders.results.first.name.should eq('backgrounds')
40
+ end
41
+ end
42
+
43
+ describe "#add_library_folder" do
44
+ it "creates a new MyLibrary folder" do
45
+ json = load_file('library_folder_response.json')
46
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
47
+
48
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
49
+ RestClient.stub(:post).and_return(response)
50
+ new_folder = ConstantContact::Components::LibraryFolder.create(JSON.parse(json))
51
+
52
+ folder = ConstantContact::Services::LibraryService.add_library_folder(new_folder)
53
+ folder.should be_kind_of(ConstantContact::Components::LibraryFolder)
54
+ folder.name.should eq('wildflowers')
55
+ end
56
+ end
57
+
58
+ describe "#get_library_folder" do
59
+ it "retrieves a specific MyLibrary folder using the folder_id path parameter" do
60
+ json = load_file('library_folder_response.json')
61
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
62
+
63
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
64
+ RestClient.stub(:get).and_return(response)
65
+
66
+ folder = ConstantContact::Services::LibraryService.get_library_folder(6)
67
+ folder.should be_kind_of(ConstantContact::Components::LibraryFolder)
68
+ folder.name.should eq('wildflowers')
69
+ end
70
+ end
71
+
72
+ describe "#update_library_folder" do
73
+ it "retrieves a specific MyLibrary folder using the folder_id path parameter" do
74
+ json = load_file('library_folder_response.json')
75
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
76
+
77
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
78
+ RestClient.stub(:put).and_return(response)
79
+ folder = ConstantContact::Components::LibraryFolder.create(JSON.parse(json))
80
+
81
+ response = ConstantContact::Services::LibraryService.update_library_folder(folder)
82
+ response.should be_kind_of(ConstantContact::Components::LibraryFolder)
83
+ response.name.should eq('wildflowers')
84
+ end
85
+ end
86
+
87
+ describe "#delete_library_folder" do
88
+ it "deletes a MyLibrary folder" do
89
+ folder_id = 6
90
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
91
+
92
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
93
+ RestClient.stub(:delete).and_return(response)
94
+
95
+ result = ConstantContact::Services::LibraryService.delete_library_folder(folder_id)
96
+ result.should be_true
97
+ end
98
+ end
99
+
100
+ describe "#get_library_trash" do
101
+ it "retrieve all files in the Trash folder" do
102
+ json = load_file('library_trash_response.json')
103
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
104
+
105
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
106
+ RestClient.stub(:get).and_return(response)
107
+
108
+ files = ConstantContact::Services::LibraryService.get_library_trash({:sort_by => 'SIZE_DESC'})
109
+ files.should be_kind_of(ConstantContact::Components::ResultSet)
110
+ files.results.first.should be_kind_of(ConstantContact::Components::LibraryFile)
111
+ files.results.first.name.should eq('menu_form.pdf')
112
+ end
113
+ end
114
+
115
+ describe "#delete_library_trash" do
116
+ it "permanently deletes all files in the Trash folder" do
117
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
118
+
119
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
120
+ RestClient.stub(:delete).and_return(response)
121
+
122
+ result = ConstantContact::Services::LibraryService.delete_library_trash()
123
+ result.should be_true
124
+ end
125
+ end
126
+
127
+ describe "#get_library_files" do
128
+ it "retrieves a collection of MyLibrary files in the Constant Contact account" do
129
+ json_response = load_file('library_files_response.json')
130
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
131
+
132
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
133
+ RestClient.stub(:get).and_return(response)
134
+
135
+ files = ConstantContact::Services::LibraryService.get_library_files({:type => 'ALL'})
136
+ files.should be_kind_of(ConstantContact::Components::ResultSet)
137
+ files.results.first.should be_kind_of(ConstantContact::Components::LibraryFile)
138
+ files.results.first.name.should eq('IMG_0341.JPG')
139
+ end
140
+ end
141
+
142
+ describe "#get_library_files_by_folder" do
143
+ it "retrieves a collection of MyLibrary files in the Constant Contact account" do
144
+ folder_id = -1
145
+ json_response = load_file('library_files_by_folder_response.json')
146
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
147
+
148
+ response = RestClient::Response.create(json_response, net_http_resp, {}, @request)
149
+ RestClient.stub(:get).and_return(response)
150
+
151
+ files = ConstantContact::Services::LibraryService.get_library_files_by_folder(folder_id, {:limit => 10})
152
+ files.should be_kind_of(ConstantContact::Components::ResultSet)
153
+ files.results.first.should be_kind_of(ConstantContact::Components::LibraryFile)
154
+ files.results.first.name.should eq('IMG_0341.JPG')
155
+ end
156
+ end
157
+
158
+ describe "#get_library_file" do
159
+ it "retrieve a MyLibrary file using the file_id path parameter" do
160
+ json = load_file('library_file_response.json')
161
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
162
+
163
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
164
+ RestClient.stub(:get).and_return(response)
165
+
166
+ file = ConstantContact::Services::LibraryService.get_library_file(6)
167
+ file.should be_kind_of(ConstantContact::Components::LibraryFile)
168
+ file.name.should eq('IMG_0261.JPG')
169
+ end
170
+ end
171
+
172
+ describe "#add_library_file" do
173
+ it "adds a new MyLibrary file using the multipart content-type" do
174
+ file_name = 'logo.jpg'
175
+ folder_id = 1
176
+ description = 'Logo'
177
+ source = 'MyComputer'
178
+ file_type = 'JPG'
179
+ contents = load_file('logo.jpg')
180
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
181
+ net_http_resp.add_field('Location', 'https://api.d1.constantcontact.com/v2/library/files/123456789')
182
+
183
+ response = RestClient::Response.create("", net_http_resp, {}, @request)
184
+ RestClient.stub(:post).and_return(response)
185
+
186
+ response = ConstantContact::Services::LibraryService.add_library_file(file_name, folder_id, description, source, file_type, contents)
187
+ response.should be_kind_of(String)
188
+ response.should eq('123456789')
189
+ end
190
+ end
191
+
192
+ describe "#update_library_file" do
193
+ it "updates information for a specific MyLibrary file" do
194
+ json = load_file('library_file_response.json')
195
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
196
+
197
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
198
+ RestClient.stub(:put).and_return(response)
199
+ file = ConstantContact::Components::LibraryFile.create(JSON.parse(json))
200
+
201
+ response = ConstantContact::Services::LibraryService.update_library_file(file)
202
+ response.should be_kind_of(ConstantContact::Components::LibraryFile)
203
+ response.name.should eq('IMG_0261.JPG')
204
+ end
205
+ end
206
+
207
+ describe "#delete_library_file" do
208
+ it "deletes one or more MyLibrary files specified by the fileId path parameter" do
209
+ file_id = '6, 7'
210
+ net_http_resp = Net::HTTPResponse.new(1.0, 204, 'No Content')
211
+
212
+ response = RestClient::Response.create('', net_http_resp, {}, @request)
213
+ RestClient.stub(:delete).and_return(response)
214
+
215
+ result = ConstantContact::Services::LibraryService.delete_library_file(file_id)
216
+ result.should be_true
217
+ end
218
+ end
219
+
220
+ describe "#get_library_files_upload_status" do
221
+ it "retrieves the upload status for one or more MyLibrary files using the file_id path parameter" do
222
+ file_id = '6, 7'
223
+ json = load_file('library_files_upload_status_response.json')
224
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
225
+
226
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
227
+ RestClient.stub(:get).and_return(response)
228
+
229
+ statuses = ConstantContact::Services::LibraryService.get_library_files_upload_status(file_id)
230
+ statuses.should be_kind_of(Array)
231
+ statuses.first.should be_kind_of(ConstantContact::Components::UploadStatus)
232
+ statuses.first.status.should eq('Active')
233
+ end
234
+ end
235
+
236
+ describe "#move_library_files" do
237
+ it "moves one or more MyLibrary files to a different folder in the user's account" do
238
+ folder_id = 1
239
+ file_id = '8, 9'
240
+ json = load_file('library_files_move_results_response.json')
241
+ net_http_resp = Net::HTTPResponse.new(1.0, 200, 'OK')
242
+
243
+ response = RestClient::Response.create(json, net_http_resp, {}, @request)
244
+ RestClient.stub(:put).and_return(response)
245
+
246
+ results = ConstantContact::Services::LibraryService.move_library_files(folder_id, file_id)
247
+ results.should be_kind_of(Array)
248
+ results.first.should be_kind_of(ConstantContact::Components::MoveResults)
249
+ results.first.uri.should eq('https://api.d1.constantcontact.com/v2/library/files/9')
250
+ end
251
+ end
252
+ end