bing_ads_ruby_sdk 1.5.0 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +21 -5
  4. data/Rakefile +1 -1
  5. data/bing_ads_ruby_sdk.gemspec +9 -1
  6. data/changelog.md +3 -0
  7. data/lib/Rakefile +4 -0
  8. data/lib/bing_ads_ruby_sdk/errors/errors.rb +1 -1
  9. data/lib/bing_ads_ruby_sdk/railtie.rb +13 -0
  10. data/{tasks → lib/bing_ads_ruby_sdk/tasks}/bing_ads_ruby_sdk.rake +1 -1
  11. data/lib/bing_ads_ruby_sdk/version.rb +1 -1
  12. data/lib/bing_ads_ruby_sdk.rb +1 -0
  13. metadata +6 -85
  14. data/.circleci/config.yml +0 -54
  15. data/.github/.keep +0 -0
  16. data/.github/renovate.json +0 -225
  17. data/.gitignore +0 -19
  18. data/.rspec +0 -4
  19. data/spec/bing_ads_ruby_sdk/api_spec.rb +0 -17
  20. data/spec/bing_ads_ruby_sdk/errors/error_handler_spec.rb +0 -477
  21. data/spec/bing_ads_ruby_sdk/errors/errors_spec.rb +0 -13
  22. data/spec/bing_ads_ruby_sdk/header_spec.rb +0 -60
  23. data/spec/bing_ads_ruby_sdk/http_client_spec.rb +0 -42
  24. data/spec/bing_ads_ruby_sdk/oauth2/fs_store_spec.rb +0 -19
  25. data/spec/bing_ads_ruby_sdk/postprocessors/cast_long_arrays_spec.rb +0 -29
  26. data/spec/bing_ads_ruby_sdk/postprocessors/snakize_spec.rb +0 -39
  27. data/spec/bing_ads_ruby_sdk/preprocessors/camelize_spec.rb +0 -39
  28. data/spec/bing_ads_ruby_sdk/preprocessors/order_spec.rb +0 -130
  29. data/spec/bing_ads_ruby_sdk/services/bulk_spec.rb +0 -51
  30. data/spec/bing_ads_ruby_sdk/services/campaign_management_spec.rb +0 -314
  31. data/spec/bing_ads_ruby_sdk/services/customer_management_spec.rb +0 -96
  32. data/spec/bing_ads_ruby_sdk_spec.rb +0 -5
  33. data/spec/examples/1_customer_creation/customer_spec.rb +0 -35
  34. data/spec/examples/2_with_customer/budget_spec.rb +0 -52
  35. data/spec/examples/2_with_customer/campaigns_spec.rb +0 -26
  36. data/spec/examples/2_with_customer/customer_management_spec.rb +0 -188
  37. data/spec/examples/2_with_customer/uet_tags_spec.rb +0 -42
  38. data/spec/examples/3_with_uet_tag/conversion_goal_spec.rb +0 -40
  39. data/spec/examples/3_with_uet_tag/uet_tags_spec.rb +0 -56
  40. data/spec/examples/4_with_conversion_goal/conversion_goals_spec.rb +0 -76
  41. data/spec/examples/5_with_campaign/ad_extension_spec.rb +0 -235
  42. data/spec/examples/5_with_campaign/ad_group_spec.rb +0 -34
  43. data/spec/examples/5_with_campaign/campaign_criterions_spec.rb +0 -72
  44. data/spec/examples/5_with_campaign/campaign_spec.rb +0 -70
  45. data/spec/examples/6_with_ad_group/ad_group_spec.rb +0 -70
  46. data/spec/examples/6_with_ad_group/ads_spec.rb +0 -110
  47. data/spec/examples/6_with_ad_group/keywords_spec.rb +0 -105
  48. data/spec/examples/examples.rb +0 -75
  49. data/spec/fixtures/bulk/download_campaigns_by_account_ids/standard.xml +0 -23
  50. data/spec/fixtures/bulk/download_campaigns_by_account_ids/standard_response.xml +0 -11
  51. data/spec/fixtures/bulk/get_bulk_download_status/standard.xml +0 -14
  52. data/spec/fixtures/bulk/get_bulk_download_status/standard_response.xml +0 -15
  53. data/spec/fixtures/campaign_management/add_ad_extensions/standard.xml +0 -21
  54. data/spec/fixtures/campaign_management/add_ad_extensions/standard_response.xml +0 -17
  55. data/spec/fixtures/campaign_management/add_conversion_goals/standard.xml +0 -27
  56. data/spec/fixtures/campaign_management/add_conversion_goals/standard_response.xml +0 -14
  57. data/spec/fixtures/campaign_management/add_shared_entity/standard.xml +0 -16
  58. data/spec/fixtures/campaign_management/add_shared_entity/standard_response.xml +0 -13
  59. data/spec/fixtures/campaign_management/add_uet_tags/standard.xml +0 -19
  60. data/spec/fixtures/campaign_management/add_uet_tags/standard_response.xml +0 -21
  61. data/spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard.xml +0 -15
  62. data/spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard_response.xml +0 -13
  63. data/spec/fixtures/campaign_management/get_ad_extensions_associations/standard.xml +0 -19
  64. data/spec/fixtures/campaign_management/get_ad_extensions_associations/standard_response.xml +0 -47
  65. data/spec/fixtures/campaign_management/get_budgets_by_ids/standard.xml +0 -12
  66. data/spec/fixtures/campaign_management/get_budgets_by_ids/standard_response.xml +0 -20
  67. data/spec/fixtures/campaign_management/get_campaigns_by_account_id/standard.xml +0 -14
  68. data/spec/fixtures/campaign_management/get_campaigns_by_account_id/standard_response.xml +0 -84
  69. data/spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard.xml +0 -18
  70. data/spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard_response.xml +0 -61
  71. data/spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard.xml +0 -14
  72. data/spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard_response.xml +0 -20
  73. data/spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard.xml +0 -18
  74. data/spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard_response.xml +0 -19
  75. data/spec/fixtures/campaign_management/get_uet_tags_by_ids/standard.xml +0 -16
  76. data/spec/fixtures/campaign_management/get_uet_tags_by_ids/standard_response.xml +0 -21
  77. data/spec/fixtures/campaign_management/set_ad_extensions_associations/standard.xml +0 -21
  78. data/spec/fixtures/campaign_management/set_ad_extensions_associations/standard_response.xml +0 -11
  79. data/spec/fixtures/campaign_management/set_shared_entity_associations/standard.xml +0 -21
  80. data/spec/fixtures/campaign_management/set_shared_entity_associations/standard_response.xml +0 -11
  81. data/spec/fixtures/campaign_management/update_conversion_goals/standard.xml +0 -27
  82. data/spec/fixtures/campaign_management/update_conversion_goals/standard_response.xml +0 -11
  83. data/spec/fixtures/campaign_management/update_uet_tags/standard.xml +0 -20
  84. data/spec/fixtures/campaign_management/update_uet_tags/standard_response.xml +0 -11
  85. data/spec/fixtures/customer_management/find_accounts_or_customers_info/standard.xml +0 -15
  86. data/spec/fixtures/customer_management/find_accounts_or_customers_info/standard_response.xml +0 -21
  87. data/spec/fixtures/customer_management/get_account/standard.xml +0 -14
  88. data/spec/fixtures/customer_management/get_account/standard_response.xml +0 -43
  89. data/spec/fixtures/customer_management/signup_customer/standard.xml +0 -30
  90. data/spec/fixtures/customer_management/signup_customer/standard_response.xml +0 -15
  91. data/spec/fixtures/customer_management/update_account/standard.xml +0 -19
  92. data/spec/fixtures/customer_management/update_account/standard_response.xml +0 -11
  93. data/spec/spec_helper.rb +0 -33
  94. data/spec/support/spec_helpers.rb +0 -46
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe BingAdsRubySdk::Preprocessors::Camelize do
4
- def action(params)
5
- described_class.new(params).call
6
- end
7
-
8
- it "changes keys to camelize version" do
9
- expect(action({
10
- foo: "foo",
11
- bar_bar: {
12
- baz_baz: "baz"
13
- },
14
- coucou: [
15
- {
16
- bisou: 1
17
- }
18
- ]
19
- })).to eq({
20
- "Foo" => "foo",
21
- "BarBar" => {
22
- "BazBaz" => "baz"
23
- },
24
- "Coucou" => [
25
- {
26
- "Bisou" => 1
27
- }
28
- ]
29
- })
30
- end
31
-
32
- it "doesnt camelize 'long' tag name" do
33
- expect(action({
34
- long: "1"
35
- })).to eq({
36
- "long" => "1"
37
- })
38
- end
39
- end
@@ -1,130 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe BingAdsRubySdk::Preprocessors::Order do
4
- def action
5
- new_params = described_class.new(wrapper, unordered_params).call
6
- expect(new_params.to_json).to eq(ordered_params.to_json)
7
- end
8
-
9
- context "nested hashes" do
10
- let(:wrapper) do
11
- SpecHelpers.wrapper(:customer_management, "SignupCustomer")
12
- end
13
-
14
- let(:unordered_params) do
15
- {
16
- "Account" => {
17
- "Name" => "test account",
18
- "CurrencyCode" => "EUR",
19
- "ParentCustomerId" => "1234"
20
- },
21
- "Customer" => {
22
- "CustomerAddress" => "address",
23
- "Industry" => "industry",
24
- "MarketCountry" => "country"
25
- },
26
- "ParentCustomerId" => "1234"
27
- }
28
- end
29
-
30
- let(:ordered_params) do
31
- {
32
- "Customer" => {
33
- "Industry" => "industry",
34
- "MarketCountry" => "country",
35
- "CustomerAddress" => "address"
36
- },
37
- "Account" => {
38
- "CurrencyCode" => "EUR",
39
- "Name" => "test account",
40
- "ParentCustomerId" => "1234"
41
- },
42
- "ParentCustomerId" => "1234"
43
- }
44
- end
45
-
46
- it("orders") { action }
47
- end
48
-
49
- context "arrays" do
50
- let(:wrapper) do
51
- SpecHelpers.wrapper(:campaign_management, "UpdateUetTags")
52
- end
53
-
54
- let(:unordered_params) do
55
- {
56
- "UetTags" => [
57
- {
58
- "UetTag" => {
59
- "Name" => "mofo2",
60
- "Description" => nil,
61
- "Id" => "26034398"
62
- }
63
- }
64
- ]
65
- }
66
- end
67
-
68
- let(:ordered_params) do
69
- {
70
- "UetTags" => [
71
- {
72
- "UetTag" => {
73
- "Description" => nil,
74
- "Id" => "26034398",
75
- "Name" => "mofo2"
76
- }
77
- }
78
- ]
79
- }
80
- end
81
-
82
- it("orders") { action }
83
- end
84
-
85
- context "abstract types" do
86
- let(:wrapper) do
87
- SpecHelpers.wrapper(:campaign_management, "AddConversionGoals")
88
- end
89
-
90
- let(:unordered_params) do
91
- {
92
- "ConversionGoals" => [
93
- {
94
- "EventGoal" => {
95
- "ActionExpression" => "contact_form",
96
- "ActionOperator" => "Equals",
97
- "ConversionWindowInMinutes" => 43200,
98
- "CountType" => "Unique",
99
- "Name" => "contact_form",
100
- "Revenue" => {"Type" => "NoValue"},
101
- "Type" => "Event",
102
- "TagId" => 26003317
103
- }
104
- }
105
- ]
106
- }
107
- end
108
-
109
- let(:ordered_params) do
110
- {
111
- "ConversionGoals" => [
112
- {
113
- "EventGoal" => {
114
- "ConversionWindowInMinutes" => 43200,
115
- "CountType" => "Unique",
116
- "Name" => "contact_form",
117
- "Revenue" => {"Type" => "NoValue"},
118
- "TagId" => 26003317,
119
- "Type" => "Event",
120
- "ActionExpression" => "contact_form",
121
- "ActionOperator" => "Equals"
122
- }
123
- }
124
- ]
125
- }
126
- end
127
-
128
- it("orders") { action }
129
- end
130
- end
@@ -1,51 +0,0 @@
1
- RSpec.describe BingAdsRubySdk::Services::Bulk do
2
- let(:service_name) { described_class.service }
3
- let(:soap_client) { SpecHelpers.soap_client(service_name) }
4
- let(:expected_xml) { SpecHelpers.request_xml_for(service_name, action, filename) }
5
- let(:mocked_response) { SpecHelpers.response_xml_for(service_name, action, filename) }
6
-
7
- let(:service) { described_class.new(soap_client) }
8
-
9
- before do
10
- expect(BingAdsRubySdk::HttpClient).to receive(:post) do |req|
11
- expect(Nokogiri::XML(req.content).to_xml).to eq expected_xml.to_xml
12
- mocked_response
13
- end
14
- end
15
-
16
- describe "download_campaigns_by_account_ids" do
17
- let(:action) { "download_campaigns_by_account_ids" }
18
- let(:filename) { "standard" }
19
-
20
- it "returns expected result" do
21
- expect(
22
- service.download_campaigns_by_account_ids(
23
- account_ids: [{long: 150168726}],
24
- data_scope: "EntityData",
25
- download_file_type: "Csv",
26
- compression_type: "Zip",
27
- download_entities: [
28
- {download_entity: "Campaigns"}
29
- ],
30
- format_version: "6.0"
31
- )
32
- ).to eq({
33
- download_request_id: "618504973441"
34
- })
35
- end
36
- end
37
-
38
- describe "get_bulk_download_status" do
39
- let(:action) { "get_bulk_download_status" }
40
- let(:filename) { "standard" }
41
-
42
- it "returns expected result" do
43
- expect(
44
- service.get_bulk_download_status(request_id: 618504973441)
45
- ).to include(
46
- request_status: "Completed",
47
- result_file_url: "cool_url"
48
- )
49
- end
50
- end
51
- end
@@ -1,314 +0,0 @@
1
- RSpec.describe BingAdsRubySdk::Services::CampaignManagement do
2
- let(:service_name) { described_class.service }
3
- let(:soap_client) { SpecHelpers.soap_client(service_name) }
4
- let(:expected_xml) { SpecHelpers.request_xml_for(service_name, action, filename) }
5
- let(:mocked_response) { SpecHelpers.response_xml_for(service_name, action, filename) }
6
-
7
- let(:service) { described_class.new(soap_client) }
8
-
9
- before do
10
- expect(BingAdsRubySdk::HttpClient).to receive(:post) do |req|
11
- expect(Nokogiri::XML(req.content).to_xml).to eq expected_xml.to_xml
12
- mocked_response
13
- end
14
- end
15
-
16
- describe "get_campaigns_by_account_id" do
17
- let(:action) { "get_campaigns_by_account_id" }
18
- let(:filename) { "standard" }
19
-
20
- it "returns expected result" do
21
- expect(
22
- service.get_campaigns_by_account_id(account_id: 150168726)
23
- ).to contain_exactly(
24
- a_hash_including(name: "20200015 - 20200015 - SN - B - Activité - Stations_Service - Geoloc - ETA"),
25
- a_hash_including(name: "20200015 - 20200015 - SN - E - Produits - Stations_Service - Geoloc - ETA"),
26
- a_hash_including(name: "20200015 - SN - X - Station Service #1 - Geozone_custom - 5KW - V3 - ETA")
27
- )
28
- end
29
- end
30
-
31
- describe "get_budgets_by_ids" do
32
- let(:action) { "get_budgets_by_ids" }
33
- let(:filename) { "standard" }
34
-
35
- it "returns expected result" do
36
- expect(
37
- service.get_budgets_by_ids
38
- ).to contain_exactly(
39
- a_hash_including(name: "budget_DEFAULT")
40
- )
41
- end
42
- end
43
-
44
- describe "add_uet_tags" do
45
- let(:action) { "add_uet_tags" }
46
- let(:filename) { "standard" }
47
-
48
- it "returns expected result" do
49
- expect(
50
- service.add_uet_tags({uet_tags: [{uet_tag: {name: "SDK-test", description: nil}}]})
51
- ).to include({
52
- uet_tags: a_hash_including({
53
- uet_tag: a_collection_containing_exactly(
54
- a_hash_including(name: "SDK-test")
55
- )
56
- }),
57
- partial_errors: ""
58
- })
59
- end
60
- end
61
-
62
- describe "update_uet_tags" do
63
- let(:action) { "update_uet_tags" }
64
- let(:filename) { "standard" }
65
-
66
- it "returns expected result" do
67
- expect(
68
- service.update_uet_tags({uet_tags: [{uet_tag: {name: "updated SDK-test", id: 96031109, description: nil}}]})
69
- ).to eq({
70
- partial_errors: ""
71
- })
72
- end
73
- end
74
-
75
- describe "get_uet_tags_by_ids" do
76
- let(:action) { "get_uet_tags_by_ids" }
77
- let(:filename) { "standard" }
78
-
79
- it "returns expected result" do
80
- expect(
81
- service.get_uet_tags_by_ids(tag_ids: [{long: 96031109}])
82
- ).to contain_exactly(
83
- a_hash_including(name: "updated SDK-test")
84
- )
85
- end
86
- end
87
-
88
- describe "add_conversion_goals" do
89
- let(:action) { "add_conversion_goals" }
90
- let(:filename) { "standard" }
91
-
92
- it "returns expected result" do
93
- expect(
94
- service.add_conversion_goals(conversion_goals: [{
95
- event_goal: {
96
- action_expression: "contact_form",
97
- action_operator: "Equals",
98
- conversion_window_in_minutes: 43200,
99
- count_type: "Unique",
100
- name: "sdk test",
101
- revenue: {type: "NoValue"},
102
- type: "Event",
103
- tag_id: 96031109
104
- }
105
- }])
106
- ).to eq({
107
- conversion_goal_ids: [46068449],
108
- partial_errors: ""
109
- })
110
- end
111
- end
112
-
113
- describe "update_conversion_goals" do
114
- let(:action) { "update_conversion_goals" }
115
- let(:filename) { "standard" }
116
-
117
- it "returns expected result" do
118
- expect(
119
- service.update_conversion_goals(conversion_goals: [{
120
- event_goal: {
121
- id: 46068449,
122
- action_expression: "contact_form",
123
- action_operator: "Equals",
124
- conversion_window_in_minutes: 43200,
125
- count_type: "Unique",
126
- name: "updated sdk test",
127
- revenue: {type: "NoValue"},
128
- tag_id: 96031109
129
- }
130
- }])
131
- ).to eq({
132
- partial_errors: ""
133
- })
134
- end
135
- end
136
-
137
- describe "get_conversion_goals_by_ids" do
138
- let(:action) { "get_conversion_goals_by_ids" }
139
- let(:filename) { "standard" }
140
-
141
- it "returns expected result" do
142
- expect(
143
- service.get_conversion_goals_by_ids(
144
- conversion_goal_types: "Event",
145
- conversion_goal_ids: [{long: 46068449}, {long: 46068448}]
146
- )
147
- ).to contain_exactly(
148
- a_hash_including(name: "updated sdk test"),
149
- a_hash_including(name: "random")
150
- )
151
- end
152
- end
153
-
154
- describe "add_ad_extensions" do
155
- let(:action) { "add_ad_extensions" }
156
- let(:filename) { "standard" }
157
-
158
- it "returns expected result" do
159
- expect(
160
- service.add_ad_extensions(
161
- account_id: 150168726,
162
- ad_extensions: [
163
- {
164
- call_ad_extension: {
165
- scheduling: {},
166
- country_code: "NZ",
167
- phone_number: "0123456699"
168
- }
169
- }
170
- ]
171
- )
172
- ).to include({
173
- ad_extension_identities: a_hash_including({
174
- ad_extension_identity: a_collection_containing_exactly(
175
- a_hash_including(id: "8177660966625")
176
- )
177
- }),
178
- nested_partial_errors: ""
179
- })
180
- end
181
- end
182
-
183
- describe "get_ad_extension_ids_by_account_id" do
184
- let(:action) { "get_ad_extension_ids_by_account_id" }
185
- let(:filename) { "standard" }
186
-
187
- it "returns expected result" do
188
- expect(
189
- service.get_ad_extension_ids_by_account_id(
190
- account_id: 150168726,
191
- ad_extension_type: "CallAdExtension SitelinkAdExtension CalloutAdExtension"
192
- )
193
- ).to eq([
194
- 8177660966625
195
- ])
196
- end
197
- end
198
-
199
- describe "set_ad_extensions_associations" do
200
- let(:action) { "set_ad_extensions_associations" }
201
- let(:filename) { "standard" }
202
-
203
- it "returns expected result" do
204
- expect(
205
- service.set_ad_extensions_associations(
206
- account_id: 150168726,
207
- ad_extension_id_to_entity_id_associations: [{
208
- ad_extension_id_to_entity_id_association: {
209
- ad_extension_id: 8177660966942,
210
- entity_id: 349704437
211
- }
212
- }],
213
- association_type: "Campaign"
214
- )
215
- ).to eq({
216
- partial_errors: ""
217
- })
218
- end
219
- end
220
-
221
- describe "get_ad_extensions_associations" do
222
- let(:action) { "get_ad_extensions_associations" }
223
- let(:filename) { "standard" }
224
-
225
- it "returns expected result" do
226
- expect(
227
- service.get_ad_extensions_associations(
228
- account_id: 150168726,
229
- association_type: "Campaign",
230
- ad_extension_type: "CalloutAdExtension",
231
- entity_ids: [{long: 349704437}]
232
- )
233
- ).to contain_exactly(
234
- a_hash_including(
235
- ad_extension: a_hash_including(id: "8177650858590", text: "Informations Et Contact")
236
- ),
237
- a_hash_including(
238
- ad_extension: a_hash_including(id: "8177660966942", text: "CalloutText")
239
- )
240
- )
241
- end
242
- end
243
-
244
- describe "add_shared_entity" do
245
- let(:action) { "add_shared_entity" }
246
- let(:filename) { "standard" }
247
-
248
- it "returns expected result" do
249
- expect(
250
- service.add_shared_entity(
251
- negative_keyword_list: {
252
- name: "sdk list"
253
- }
254
- )
255
- ).to eq({
256
- list_item_ids: "",
257
- partial_errors: "",
258
- shared_entity_id: "229798145242911"
259
- })
260
- end
261
- end
262
-
263
- describe "get_shared_entities_by_account_id" do
264
- let(:action) { "get_shared_entities_by_account_id" }
265
- let(:filename) { "standard" }
266
-
267
- it "returns expected result" do
268
- expect(
269
- service.get_shared_entities_by_account_id(
270
- shared_entity_type: "NegativeKeywordList"
271
- )
272
- ).to contain_exactly(
273
- a_hash_including(id: "229798145242911", name: "sdk list")
274
- )
275
- end
276
- end
277
-
278
- describe "get_shared_entity_associations_by_entity_ids" do
279
- let(:action) { "get_shared_entity_associations_by_entity_ids" }
280
- let(:filename) { "standard" }
281
-
282
- it "returns expected result" do
283
- expect(
284
- service.get_shared_entity_associations_by_entity_ids({
285
- entity_ids: [{long: 349704435}],
286
- entity_type: "Campaign",
287
- shared_entity_type: "NegativeKeywordList"
288
- })
289
- ).to eq([
290
- {entity_id: "349704435", entity_type: "Campaign", shared_entity_id: "223200992903993", shared_entity_type: "NegativeKeywordList"}
291
- ])
292
- end
293
- end
294
-
295
- describe "set_shared_entity_associations" do
296
- let(:action) { "set_shared_entity_associations" }
297
- let(:filename) { "standard" }
298
-
299
- it "returns expected result" do
300
- expect(
301
- service.set_shared_entity_associations(
302
- associations: [{
303
- shared_entity_association: {
304
- entity_id: "349704435",
305
- entity_type: "Account",
306
- shared_entity_id: "223200992903993",
307
- shared_entity_type: "PlacementExclusionList"
308
- }
309
- }]
310
- )
311
- ).to eq({partial_errors: ""})
312
- end
313
- end
314
- end
@@ -1,96 +0,0 @@
1
- RSpec.describe BingAdsRubySdk::Services::CustomerManagement do
2
- let(:service_name) { described_class.service }
3
- let(:soap_client) { SpecHelpers.soap_client(service_name) }
4
- let(:expected_xml) { SpecHelpers.request_xml_for(service_name, action, filename) }
5
- let(:mocked_response) { SpecHelpers.response_xml_for(service_name, action, filename) }
6
-
7
- let(:service) { described_class.new(soap_client) }
8
-
9
- before do
10
- expect(BingAdsRubySdk::HttpClient).to receive(:post) do |req|
11
- expect(Nokogiri::XML(req.content).to_xml).to eq expected_xml.to_xml
12
- mocked_response
13
- end
14
- end
15
-
16
- describe "signup_customer" do
17
- let(:action) { "signup_customer" }
18
- let(:filename) { "standard" }
19
-
20
- it "returns expected result" do
21
- expect(
22
- service.signup_customer(
23
- parent_customer_id: 9876,
24
- customer: {
25
- industry: "NA",
26
- market_country: "FR",
27
- market_language: "French",
28
- name: "sdk customer",
29
- customer_address: {
30
- city: "Nice",
31
- country_code: "FR",
32
- line1: "127 bd risso",
33
- postal_code: "06000"
34
- }
35
- },
36
- # Note that the structure of this type is slightly different to other types, in accord with the Bing WSDL
37
- account: {
38
- "@type" => "AdvertiserAccount",
39
- :currency_code => "EUR",
40
- :name => "SDK account"
41
- }
42
- )
43
- ).to include(
44
- customer_id: "1234",
45
- account_id: "5678"
46
- )
47
- end
48
- end
49
-
50
- describe "get_account" do
51
- let(:action) { "get_account" }
52
- let(:filename) { "standard" }
53
-
54
- it "returns expected result" do
55
- expect(
56
- service.get_account(account_id: 5678)
57
- ).to include(
58
- account: a_hash_including(id: "5678", name: "SDKTEST")
59
- )
60
- end
61
- end
62
-
63
- describe "update_account" do
64
- let(:action) { "update_account" }
65
- let(:filename) { "standard" }
66
-
67
- it "returns expected result" do
68
- expect(
69
- service.update_account(
70
- account: {
71
- "@type" => "AdvertiserAccount",
72
- :id => 5678,
73
- :time_stamp => "AAAAAE496a4=",
74
- :currency_code => "EUR",
75
- :name => "SDKTEST updated"
76
- }
77
- )
78
- ).to eq(
79
- last_modified_time: "2019-01-18T13:16:38.827"
80
- )
81
- end
82
- end
83
-
84
- describe "find_accounts_or_customers_info" do
85
- let(:action) { "find_accounts_or_customers_info" }
86
- let(:filename) { "standard" }
87
-
88
- it "returns expected result" do
89
- expect(
90
- service.find_accounts_or_customers_info(filter: "SDKTEST", top_n: 1)
91
- ).to contain_exactly(
92
- a_hash_including(customer_name: "SDKTEST updated", account_id: "5678")
93
- )
94
- end
95
- end
96
- end
@@ -1,5 +0,0 @@
1
- RSpec.describe BingAdsRubySdk do
2
- it "has a version number" do
3
- expect(BingAdsRubySdk::VERSION).not_to be nil
4
- end
5
- end
@@ -1,35 +0,0 @@
1
- require_relative "../examples"
2
-
3
- RSpec.describe "CustomerManagement service" do
4
- include_context "use api"
5
-
6
- it "creates customer" do
7
- created_customer = api.customer_management.signup_customer(
8
- customer: {
9
- customer_address: {
10
- city: "Paris",
11
- postal_code: 75_001,
12
- line1: "1 rue de Rivoli",
13
- country_code: "FR"
14
- },
15
- industry: "Entertainment",
16
- name: "Test Customer #{random}"
17
- },
18
- account: {
19
- "@type" => "AdvertiserAccount",
20
- :name => "Test Account #{random}",
21
- :currency_code => "USD"
22
- },
23
- parent_customer_id: Examples.parent_customer_id
24
- )
25
- expect(created_customer).to include(
26
- customer_id: a_kind_of(String),
27
- customer_number: a_kind_of(String),
28
- account_id: a_kind_of(String),
29
- account_number: a_kind_of(String),
30
- create_time: a_kind_of(String)
31
- )
32
-
33
- puts "You can now fill in examples.rb with customer_id: #{created_customer[:customer_id]} and account_id: #{created_customer[:account_id]}"
34
- end
35
- end