bing-ads-api 0.1.0

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 (75) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +92 -0
  3. data/Rakefile +38 -0
  4. data/lib/bing-ads-api.rb +38 -0
  5. data/lib/bing-ads-api.yml +345 -0
  6. data/lib/bing-ads-api/api_exception.rb +42 -0
  7. data/lib/bing-ads-api/client_proxy.rb +131 -0
  8. data/lib/bing-ads-api/config.rb +75 -0
  9. data/lib/bing-ads-api/constants.rb +133 -0
  10. data/lib/bing-ads-api/data/ad.rb +119 -0
  11. data/lib/bing-ads-api/data/ad_group.rb +121 -0
  12. data/lib/bing-ads-api/data/campaign.rb +40 -0
  13. data/lib/bing-ads-api/data/report_request.rb +78 -0
  14. data/lib/bing-ads-api/data/report_request_status.rb +48 -0
  15. data/lib/bing-ads-api/data/reporting/account_performance_report_request.rb +176 -0
  16. data/lib/bing-ads-api/data/reporting/campaign_performance_report_request.rb +186 -0
  17. data/lib/bing-ads-api/data/reporting/helpers/column_helper.rb +65 -0
  18. data/lib/bing-ads-api/data/reporting/helpers/filter_helper.rb +124 -0
  19. data/lib/bing-ads-api/data/reporting/helpers/scope_helper.rb +51 -0
  20. data/lib/bing-ads-api/data/reporting/helpers/time_helper.rb +69 -0
  21. data/lib/bing-ads-api/data/reporting/performance_report_request.rb +78 -0
  22. data/lib/bing-ads-api/data_object.rb +35 -0
  23. data/lib/bing-ads-api/fault/ad_api_error.rb +15 -0
  24. data/lib/bing-ads-api/fault/ad_api_fault_detail.rb +67 -0
  25. data/lib/bing-ads-api/fault/api_fault_detail.rb +97 -0
  26. data/lib/bing-ads-api/fault/application_fault.rb +18 -0
  27. data/lib/bing-ads-api/fault/batch_error.rb +47 -0
  28. data/lib/bing-ads-api/fault/operation_error.rb +22 -0
  29. data/lib/bing-ads-api/fault/partial_errors.rb +75 -0
  30. data/lib/bing-ads-api/service.rb +174 -0
  31. data/lib/bing-ads-api/service/campaign_management.rb +483 -0
  32. data/lib/bing-ads-api/service/reporting.rb +101 -0
  33. data/lib/bing-ads-api/soap_hasheable.rb +143 -0
  34. data/lib/bing-ads-api/version.rb +6 -0
  35. data/lib/locales/es.yml +174 -0
  36. data/lib/tasks/bing-ads-api_tasks.rake +4 -0
  37. data/test/bing-ads-api_test.rb +134 -0
  38. data/test/campaign_management_test.rb +463 -0
  39. data/test/data_object_test.rb +46 -0
  40. data/test/dummy/README.rdoc +261 -0
  41. data/test/dummy/Rakefile +7 -0
  42. data/test/dummy/app/assets/javascripts/application.js +15 -0
  43. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  44. data/test/dummy/app/controllers/application_controller.rb +3 -0
  45. data/test/dummy/app/helpers/application_helper.rb +2 -0
  46. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  47. data/test/dummy/config.ru +4 -0
  48. data/test/dummy/config/application.rb +56 -0
  49. data/test/dummy/config/boot.rb +10 -0
  50. data/test/dummy/config/database.yml +25 -0
  51. data/test/dummy/config/environment.rb +5 -0
  52. data/test/dummy/config/environments/development.rb +37 -0
  53. data/test/dummy/config/environments/production.rb +67 -0
  54. data/test/dummy/config/environments/test.rb +37 -0
  55. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  56. data/test/dummy/config/initializers/inflections.rb +15 -0
  57. data/test/dummy/config/initializers/mime_types.rb +5 -0
  58. data/test/dummy/config/initializers/secret_token.rb +7 -0
  59. data/test/dummy/config/initializers/session_store.rb +8 -0
  60. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  61. data/test/dummy/config/locales/en.yml +5 -0
  62. data/test/dummy/config/routes.rb +58 -0
  63. data/test/dummy/db/development.sqlite3 +0 -0
  64. data/test/dummy/db/test.sqlite3 +0 -0
  65. data/test/dummy/log/development.log +29 -0
  66. data/test/dummy/log/test.log +3264 -0
  67. data/test/dummy/public/404.html +26 -0
  68. data/test/dummy/public/422.html +26 -0
  69. data/test/dummy/public/500.html +25 -0
  70. data/test/dummy/public/favicon.ico +0 -0
  71. data/test/dummy/script/rails +6 -0
  72. data/test/report_request_test.rb +312 -0
  73. data/test/reporting_test.rb +145 -0
  74. data/test/test_helper.rb +11 -0
  75. metadata +205 -0
@@ -0,0 +1,463 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'test_helper'
3
+
4
+ # Public : Test case for Campaign Management services
5
+ #
6
+ # Author:: jlopezn@neonline.cl
7
+ class CampaignManagementTest < ActiveSupport::TestCase
8
+
9
+ def setup
10
+
11
+ @config = BingAdsApi::Config.instance
12
+ @options = {
13
+ :environment => :sandbox,
14
+ :username => "desarrollo_neonline",
15
+ :password => "neonline2013",
16
+ :developer_token => "BBD37VB98",
17
+ :customer_id => "21021746",
18
+ :account_id => "5978083"
19
+ }
20
+ @service = BingAdsApi::CampaignManagement.new(@options)
21
+
22
+ end
23
+
24
+ test "truth" do
25
+ assert_kind_of Module, BingAdsApi
26
+ end
27
+
28
+ test "initialize" do
29
+ @service = BingAdsApi::CampaignManagement.new(@options)
30
+ assert !@service.nil?, "CampaignManagement service not instantiated"
31
+ end
32
+
33
+ test "get campaigns by account" do
34
+ response = @service.get_campaigns_by_account_id(@options[:account_id])
35
+ assert !response.nil?, "No response received"
36
+ assert response.is_a?(Array), "No Array as response received"
37
+ end
38
+
39
+ test "add campaign" do
40
+
41
+ name = "Test Campaign #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}"
42
+ campaigns = [
43
+ BingAdsApi::Campaign.new(
44
+ :budget_type => BingAdsApi::Campaign::DAILY_BUDGET_STANDARD,
45
+ :conversion_tracking_enabled => "false",
46
+ :daily_budget => 2000,
47
+ :daylight_saving => "false",
48
+ :description => name + " description",
49
+ :monthly_budget => 5400,
50
+ :name => name + " name",
51
+ :status => BingAdsApi::Campaign::PAUSED,
52
+ :time_zone => BingAdsApi::Campaign::SANTIAGO),
53
+ ]
54
+ response = @service.add_campaigns(@options[:account_id], campaigns)
55
+
56
+ puts "response[:campaign_ids][:long]"
57
+ puts response[:campaign_ids][:long]
58
+ assert !response[:campaign_ids][:long].nil?, "No campaigns id received"
59
+ end
60
+
61
+ test "add campaigns" do
62
+ name = "Test Campaign #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}"
63
+ campaigns = [
64
+ BingAdsApi::Campaign.new(
65
+ :budget_type => BingAdsApi::Campaign::DAILY_BUDGET_STANDARD,
66
+ :conversion_tracking_enabled => "false",
67
+ :daily_budget => 2000,
68
+ :daylight_saving => "false",
69
+ :description => name + " first description",
70
+ :monthly_budget => 5400,
71
+ :name => name + " first name",
72
+ :status => BingAdsApi::Campaign::PAUSED,
73
+ :time_zone => BingAdsApi::Campaign::SANTIAGO),
74
+
75
+ BingAdsApi::Campaign.new(
76
+ :budget_type => BingAdsApi::Campaign::DAILY_BUDGET_STANDARD,
77
+ :conversion_tracking_enabled => "false",
78
+ :daily_budget => 2500,
79
+ :daylight_saving => "false",
80
+ :description => name + " second description",
81
+ :monthly_budget => 7800,
82
+ :name => name + " second name",
83
+ :status => BingAdsApi::Campaign::PAUSED,
84
+ :time_zone => BingAdsApi::Campaign::SANTIAGO),
85
+
86
+ ]
87
+ response = @service.add_campaigns(@options[:account_id], campaigns)
88
+ puts "response.inspect"
89
+ puts response.inspect
90
+
91
+ puts "response[:campaign_ids][:long]"
92
+ puts response[:campaign_ids][:long]
93
+ assert !response[:campaign_ids][:long].nil?, "No campaigns ids received"
94
+ assert response[:campaign_ids][:long].is_a?(Array), "No array with campaign ids received"
95
+ assert response[:campaign_ids][:long].size == campaigns.size, "expected campaign_ids: #{campaigns.size}. Received: #{response[:campaign_ids][:long].size}"
96
+
97
+ end
98
+
99
+
100
+ test "update campaigns" do
101
+
102
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
103
+ assert !campaigns.nil?, "No campaigns received"
104
+
105
+ campaigns.each do |campaign|
106
+ campaign.description = campaign.description + " updated #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}"
107
+ campaign.status = nil
108
+ end
109
+
110
+ response = @service.update_campaigns(@options[:account_id], campaigns)
111
+
112
+ puts "UpdateCampaigns response"
113
+ puts response.inspect
114
+ assert !response.nil?, "No response received"
115
+
116
+ end
117
+
118
+
119
+ test "get ad groups by campaign" do
120
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
121
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
122
+ campaign_id = campaigns.first.id
123
+
124
+ response = @service.get_ad_groups_by_campaign_id(campaign_id)
125
+
126
+ puts "GetAdGroupsByCampaignId response :"
127
+ puts response.inspect
128
+
129
+ assert !response.empty?, "No ad groups received from campaign #{campaign_id}"
130
+ assert response.is_a?(Array), "No array response received"
131
+ end
132
+
133
+
134
+ test "get ad groups by ids" do
135
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
136
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
137
+ campaign_id = campaigns.first.id
138
+
139
+ groups = @service.get_ad_groups_by_campaign_id(campaign_id)
140
+
141
+ ad_group_ids = groups.map{ |gr| gr.id }
142
+ response = @service.get_ad_groups_by_ids(campaign_id, ad_group_ids)
143
+
144
+ puts "GetAdGroupsByIds response :"
145
+ puts response.inspect
146
+
147
+ assert !response.nil?, "No ad groups received in campaign #{campaign_id} where ad_group_ids #{ad_group_ids}"
148
+ assert response.size == ad_group_ids.size, "Excpected #{ad_group_ids.size} ad groups. Received #{response.size}"
149
+
150
+ end
151
+
152
+ test "add ad group" do
153
+
154
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
155
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
156
+ campaign_id = campaigns.first.id
157
+
158
+ name = "Ad Group #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}"
159
+ ad_groups = [
160
+ BingAdsApi::AdGroup.new(
161
+ :ad_distribution => BingAdsApi::AdGroup::SEARCH,
162
+ :language => BingAdsApi::AdGroup::SPANISH,
163
+ :name => name + " name",
164
+ :pricing_model => BingAdsApi::AdGroup::CPC,
165
+ :bidding_model => BingAdsApi::AdGroup::KEYWORD)
166
+ ]
167
+ response = @service.add_ad_groups(campaign_id, ad_groups)
168
+
169
+ puts "AddAdGroups response[:ad_group_ids][:long]"
170
+ puts response[:ad_group_ids][:long]
171
+ assert !response[:ad_group_ids][:long].nil?, "No ad groups id received"
172
+
173
+ end
174
+
175
+
176
+ test "add ad groups" do
177
+
178
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
179
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
180
+ campaign_id = campaigns.first.id
181
+
182
+ name = "Ad Group #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}"
183
+ ad_groups = [
184
+ BingAdsApi::AdGroup.new(
185
+ :ad_distribution => BingAdsApi::AdGroup::SEARCH,
186
+ :language => BingAdsApi::AdGroup::SPANISH,
187
+ :name => name + " name",
188
+ :pricing_model => BingAdsApi::AdGroup::CPC,
189
+ :bidding_model => BingAdsApi::AdGroup::KEYWORD),
190
+
191
+ BingAdsApi::AdGroup.new(
192
+ :ad_distribution => BingAdsApi::AdGroup::SEARCH,
193
+ :language => BingAdsApi::AdGroup::SPANISH,
194
+ :name => name + " second name",
195
+ :pricing_model => BingAdsApi::AdGroup::CPC,
196
+ :bidding_model => BingAdsApi::AdGroup::KEYWORD)
197
+
198
+ ]
199
+ response = @service.add_ad_groups(campaign_id, ad_groups)
200
+
201
+ puts "AddAdGroups response[:ad_group_ids][:long]"
202
+ puts response[:ad_group_ids][:long]
203
+ assert !response[:ad_group_ids][:long].nil?, "No ad groups id received"
204
+ assert response[:ad_group_ids][:long].is_a?(Array), "No array with ad group ids received"
205
+ assert response[:ad_group_ids][:long].size == ad_groups.size, "expected ad_group_ids: #{ad_groups.size}. Received: #{response[:ad_group_ids][:long].size}"
206
+
207
+ end
208
+
209
+
210
+ test "update ad groups" do
211
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
212
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
213
+ campaign_id = campaigns.first.id
214
+
215
+ ad_groups = @service.get_ad_groups_by_campaign_id(campaign_id)
216
+
217
+ ad_groups_to_update = ad_groups.map do |ad_group|
218
+ BingAdsApi::AdGroup.new(
219
+ :id => ad_group.id,
220
+ :name => ad_group.name + " updated #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S")}" )
221
+ end
222
+
223
+ response = @service.update_ad_groups(campaign_id, ad_groups_to_update)
224
+
225
+ puts "UpdateAdGroups response"
226
+ puts response
227
+ assert !response.nil?, "No response received"
228
+
229
+ end
230
+
231
+
232
+ test "add ads" do
233
+
234
+ ad_group_id = 1980939070
235
+
236
+ date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
237
+
238
+ # TextAds
239
+ text_ads = [
240
+ BingAdsApi::TextAd.new(
241
+ :type => BingAdsApi::Ad::TEXT,
242
+ :status => BingAdsApi::Ad::INACTIVE,
243
+ :destination_url => "http://www.adxion.com",
244
+ :display_url => "AdXion.com",
245
+ :text => "TextAd #{date}",
246
+ :title => "TextAd"),
247
+
248
+ BingAdsApi::TextAd.new(
249
+ :type => BingAdsApi::Ad::TEXT,
250
+ :status => BingAdsApi::Ad::INACTIVE,
251
+ :destination_url => "http://www.adxion.com",
252
+ :display_url => "AdXion.com",
253
+ :text => "TextAd 2 #{date}",
254
+ :title => "TextAd 2")
255
+ ]
256
+ response = @service.add_ads(ad_group_id, text_ads)
257
+ assert !response.nil? , "No response received adding text ads"
258
+
259
+ assert response[:partial_errors].nil?, "TextAds response with partial errors"
260
+
261
+ puts "Text: AddAds response[:ad_ids][:long]"
262
+ puts response[:ad_ids][:long]
263
+ assert !response[:ad_ids][:long].nil?, "No ad ids received for TextAds"
264
+
265
+
266
+ mobile_ads = [
267
+ BingAdsApi::MobileAd.new(
268
+ :bussines_name => "Bussiness 1",
269
+ :destination_url => "http://www.adxion.com",
270
+ :display_url => "AdXion.com",
271
+ :phone_number => "555555555",
272
+ :text => "Publish with us",
273
+ :title => "MobileAd"),
274
+
275
+ BingAdsApi::MobileAd.new(
276
+ :bussines_name => "Bussiness 2",
277
+ :destination_url => "http://www.adxion.com",
278
+ :display_url => "AdXion.com",
279
+ :phone_number => "555555555",
280
+ :text => "Keep publishing",
281
+ :title => "MobileAd 2")
282
+ ]
283
+ response = @service.add_ads(ad_group_id, mobile_ads)
284
+ assert !response.nil? , "No response received adding mobile ads"
285
+
286
+ puts response[:partial_errors] if !response[:partial_errors].nil?
287
+ assert response[:partial_errors].nil?, "MobileAds response with partial errors"
288
+
289
+ puts "Mobile: AddAds response[:ad_ids][:long]"
290
+ puts response[:ad_ids][:long]
291
+ assert !response[:ad_ids][:long].nil?, "No ad ids received for MobileAds"
292
+
293
+ # product_ads = [
294
+ # BingAdsApi::MobileAd.new(
295
+ # :promotional_text => "My Promotional text #{date}"),
296
+ #
297
+ # BingAdsApi::MobileAd.new(
298
+ # :promotional_text => "My Promotional text 2 #{date}")
299
+ # ]
300
+ # response = @service.add_ads(ad_group_id, product_ads)
301
+ # assert !response.nil? , "No response received adding product ads"
302
+
303
+ end
304
+
305
+
306
+ test "add ad" do
307
+
308
+ ad_group_id = 1980939070
309
+
310
+ date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
311
+
312
+ # TextAd
313
+ text_ad = BingAdsApi::TextAd.new(
314
+ :type => BingAdsApi::Ad::TEXT,
315
+ :status => BingAdsApi::Ad::INACTIVE,
316
+ :destination_url => "http://www.adxion.com",
317
+ :display_url => "AdXion.com",
318
+ :text => "Text Ad #{date}",
319
+ :title => "Text Ad")
320
+
321
+ response = @service.add_ads(ad_group_id, text_ad)
322
+ assert !response.nil? , "No response received adding text ad"
323
+
324
+ assert response[:partial_errors].nil?, "TextAd response with partial errors"
325
+
326
+ puts "Text: AddAds response[:ad_ids][:long]"
327
+ puts response[:ad_ids][:long]
328
+ assert !response[:ad_ids][:long].nil?, "No ad ids received for TextAd"
329
+
330
+
331
+ # MobileAd
332
+ mobile_ad = BingAdsApi::MobileAd.new(
333
+ :bussines_name => "Bussiness",
334
+ :destination_url => "http://www.adxion.com",
335
+ :display_url => "adxion.com",
336
+ :phone_number => "555555555",
337
+ :text => "Publish with us",
338
+ :title => "Mobile Ad")
339
+
340
+ response = @service.add_ads(ad_group_id, mobile_ad)
341
+ assert !response.nil? , "No response received adding mobile ad"
342
+
343
+ puts response[:partial_errors] if !response[:partial_errors].nil?
344
+ assert response[:partial_errors].nil?, "MobileAd response with partial errors"
345
+
346
+ puts "Mobile: AddAds response[:ad_ids][:long]"
347
+ puts response[:ad_ids][:long]
348
+ assert !response[:ad_ids][:long].nil?, "No ad ids received for MobileAd"
349
+
350
+
351
+ # ProductAd
352
+ # product_ad = BingAdsApi::ProductAd.new(
353
+ # :promotional_text => "Promotion #{date}")
354
+ # response = @service.add_ads(ad_group_id, product_ad)
355
+ # assert !response.nil? , "No response received adding product ad"
356
+ #
357
+ # puts response[:partial_errors] if !response[:partial_errors].nil?
358
+ # assert response[:partial_errors].nil?, "ProductAd response with partial errors"
359
+ #
360
+ # puts "Product: AddAds response[:ad_ids][:long]"
361
+ # puts response[:ad_ids][:long]
362
+ # assert !response[:ad_ids][:long].nil?, "No ad ids received for ProductAd"
363
+
364
+ end
365
+
366
+ test "add ad with partial errors" do
367
+
368
+ ad_group_id = 1980939070
369
+
370
+ date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
371
+ text_ad = BingAdsApi::TextAd.new(
372
+ :type => BingAdsApi::Ad::TEXT,
373
+ :status => BingAdsApi::Ad::INACTIVE,
374
+ :destination_url => "http://www.adxion.com",
375
+ :display_url => "http://www.adxion.com",
376
+ :text => "Test Text Ad #{date}",
377
+ :title => "Test Text Ad #{date}")
378
+
379
+ response = @service.add_ads(ad_group_id, text_ad)
380
+ assert !response.nil? , "No response received adding text ad"
381
+
382
+ puts response[:partial_errors]
383
+ assert !response[:partial_errors].nil?, "response should have partial errors"
384
+ end
385
+
386
+
387
+ test "get ads by group id" do
388
+ campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
389
+ assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
390
+ campaign_id = campaigns.first.id
391
+
392
+ ad_group = @service.get_ad_groups_by_campaign_id(campaign_id).first
393
+
394
+ ads = @service.get_ads_by_ad_group_id(ad_group.id)
395
+ assert !ads.empty?, "No ads received for ad group #{ad_group.id}"
396
+ ads.each do |ad|
397
+ assert ad.is_a?(BingAdsApi::Ad), "Object received is not an ad"
398
+ end
399
+ end
400
+
401
+
402
+ test "get ads by ids" do
403
+ # campaigns = @service.get_campaigns_by_account_id(@options[:account_id])
404
+ # assert !campaigns.empty?, "No campaigns received for account id #{@options[:account_id]}"
405
+ # campaign_id = campaigns.first.id
406
+ # ad_group = @service.get_ad_groups_by_campaign_id(campaign_id).first
407
+ # ads = @service.get_ads_by_ad_group_id(ad_group.id)
408
+ ad_group_id = 1980939070
409
+ ads = @service.get_ads_by_ad_group_id(ad_group_id)
410
+ assert !ads.nil?, "No ads by ad group response received"
411
+ assert !ads.empty?, "No ads received for ad group #{ad_group_id}"
412
+
413
+ # Get 2 ads
414
+ ad_ids = [ads[0].id, ads[1].id]
415
+ ads_by_ids = @service.get_ads_by_ids(ad_group_id, ad_ids)
416
+ assert !ads_by_ids.nil?, "No response received"
417
+ assert !ads_by_ids.empty?, "No ads received for ad group #{ad_group_id} and ad ids #{ad_ids}"
418
+ assert ad_ids.size == ads_by_ids.size, "Expetected ads #{ad_ids.size}. Received #{ads_by_ids.size}"
419
+ ads.each do |ad|
420
+ assert ad.is_a?(BingAdsApi::Ad), "Object received is not an ad"
421
+ end
422
+
423
+ # Get specific ad
424
+ ad_ids = [ads[0].id]
425
+ ads_by_ids = @service.get_ads_by_ids(ad_group_id, ad_ids)
426
+ assert !ads_by_ids.nil?, "No response received"
427
+ assert !ads.empty?, "No ads received for ad group #{ad_group_id} and ad ids #{ad_ids}"
428
+ assert ad_ids.size == ads_by_ids.size, "Expetected one ad. Received #{ads_by_ids.size}"
429
+
430
+ end
431
+
432
+
433
+ test "update ads" do
434
+
435
+ ad_group_id = 1980939070
436
+ # One TextAd and one MobileAd
437
+ ad_ids = [4560003693, 4560003694]
438
+
439
+ ads = @service.get_ads_by_ids(ad_group_id, ad_ids)
440
+
441
+ # Loop to modify something in the adds
442
+ ads.each do |ad|
443
+ case ad.type
444
+ when "Text"
445
+ ad.text = ad.text + " updated"
446
+ when "Mobile"
447
+ ad.phone_number = 1234567890
448
+ when "Product"
449
+ ad.promotional_text = ad.promotional_text + " edit"
450
+ end
451
+ ad.status = nil
452
+ ad.editorial_status = nil
453
+ end
454
+
455
+ response = @service.update_ads(ad_group_id, ads)
456
+ assert !response.nil? , "No response received updateing ads"
457
+
458
+ assert response[:partial_errors].nil?, "response with partial errors when updating ads"
459
+
460
+ end
461
+
462
+
463
+ end