soapy_cake 2.1.3 → 2.1.4
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.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Rakefile +1 -0
- data/api.yml +1 -1
- data/lib/soapy_cake.rb +2 -1
- data/lib/soapy_cake/admin.rb +1 -0
- data/lib/soapy_cake/admin_addedit.rb +1 -0
- data/lib/soapy_cake/admin_batched.rb +1 -0
- data/lib/soapy_cake/admin_track.rb +1 -0
- data/lib/soapy_cake/affiliate.rb +1 -0
- data/lib/soapy_cake/campaigns.rb +2 -1
- data/lib/soapy_cake/client.rb +13 -0
- data/lib/soapy_cake/const.rb +1 -0
- data/lib/soapy_cake/error.rb +1 -0
- data/lib/soapy_cake/helper.rb +1 -0
- data/lib/soapy_cake/modification_type.rb +1 -0
- data/lib/soapy_cake/request.rb +1 -0
- data/lib/soapy_cake/response.rb +1 -0
- data/lib/soapy_cake/response_value.rb +1 -0
- data/lib/soapy_cake/time_converter.rb +1 -0
- data/lib/soapy_cake/version.rb +2 -1
- data/soapy_cake.gemspec +1 -0
- data/spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_a_clicks_report_with_a_defined_time_range.yml +41 -26
- data/spec/integration/soapy_cake/admin_addedit_spec.rb +1 -0
- data/spec/integration/soapy_cake/admin_spec.rb +6 -4
- data/spec/integration/soapy_cake/admin_track_spec.rb +1 -0
- data/spec/integration/soapy_cake/campaigns_spec.rb +1 -0
- data/spec/lib/soapy_cake/admin_addedit_spec.rb +1 -0
- data/spec/lib/soapy_cake/admin_batched_spec.rb +2 -0
- data/spec/lib/soapy_cake/admin_spec.rb +31 -0
- data/spec/lib/soapy_cake/admin_track_spec.rb +1 -0
- data/spec/lib/soapy_cake/affiliate_spec.rb +3 -0
- data/spec/lib/soapy_cake/campaigns_spec.rb +6 -5
- data/spec/lib/soapy_cake/modification_type_spec.rb +1 -0
- data/spec/lib/soapy_cake/request_spec.rb +1 -0
- data/spec/lib/soapy_cake/response_spec.rb +1 -0
- data/spec/lib/soapy_cake/response_value_spec.rb +1 -0
- data/spec/lib/soapy_cake/time_converter_spec.rb +1 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/admin_method_example.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67f28d72d0e7ce5c2d37d3d138d0a8e2579b9696
|
4
|
+
data.tar.gz: 737fced76a4f046d011fd6e57817ff0c29f5d435
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a418b18bb03685e298fedd73aee586fed6c7aa45a0989609b0892cbaf99ab15d2d4919a0a2f2fc0b1e049c66f387fee19ee8df1986ce4653adeac4b459e8c041
|
7
|
+
data.tar.gz: 2f31ae5c96fc4f9e101a9f5aca857f99d6777b278125a21a5ecd3e6016c4b48cc68cc453fb931247a174afa379b149f8e01b6fea1cb819b6625bf5565fd65806
|
data/Gemfile
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
source 'https://rubygems.org'
|
3
4
|
|
4
5
|
gemspec
|
5
6
|
|
6
7
|
group :development, :test do
|
8
|
+
gem 'codeclimate-test-reporter', require: false
|
7
9
|
gem 'rubocop-ci', git: 'https://github.com/ad2games/rubocop-ci'
|
8
10
|
gem 'simplecov'
|
9
|
-
gem 'codeclimate-test-reporter', require: false
|
10
11
|
end
|
data/Rakefile
CHANGED
data/api.yml
CHANGED
data/lib/soapy_cake.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'yaml'
|
3
4
|
require 'logger'
|
4
5
|
require 'nokogiri'
|
@@ -27,6 +28,6 @@ require 'soapy_cake/modification_type'
|
|
27
28
|
require 'soapy_cake/campaigns'
|
28
29
|
|
29
30
|
module SoapyCake
|
30
|
-
API_CONFIG = YAML.
|
31
|
+
API_CONFIG = YAML.safe_load(File.read(File.expand_path('../../api.yml', __FILE__)))
|
31
32
|
NET_TIMEOUT = 600
|
32
33
|
end
|
data/lib/soapy_cake/admin.rb
CHANGED
data/lib/soapy_cake/affiliate.rb
CHANGED
data/lib/soapy_cake/campaigns.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module SoapyCake
|
3
4
|
class Campaigns
|
4
5
|
include Helper
|
@@ -59,7 +60,7 @@ module SoapyCake
|
|
59
60
|
.merge(
|
60
61
|
affiliate_id: campaign.fetch(:affiliate).fetch(:affiliate_id),
|
61
62
|
# Only present in production:
|
62
|
-
display_link_type_id: campaign.dig(:
|
63
|
+
display_link_type_id: campaign.dig(:display_link_type, :link_display_type_id) || 1,
|
63
64
|
media_type_id: campaign.fetch(:media_type).fetch(:media_type_id),
|
64
65
|
offer_contract_id: campaign.fetch(:offer_contract).fetch(:offer_contract_id),
|
65
66
|
offer_id: campaign.fetch(:offer).fetch(:offer_id),
|
data/lib/soapy_cake/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'net/http'
|
3
4
|
|
4
5
|
module SoapyCake
|
@@ -57,6 +58,16 @@ module SoapyCake
|
|
57
58
|
@logger ||= opts[:logger] || (defined?(::Rails) && ::Rails.logger)
|
58
59
|
end
|
59
60
|
|
61
|
+
def log_curl_command(request)
|
62
|
+
curl_headers = HEADERS.map { |k, v| "-H \"#{k}: #{v}\"" }.join(' ')
|
63
|
+
curl_body = request.xml
|
64
|
+
.tr("\n", '')
|
65
|
+
.gsub(/>\s*</, '><')
|
66
|
+
.sub(request.api_key, '{{{ INSERT API KEY }}}')
|
67
|
+
|
68
|
+
logger&.info("curl --data '#{curl_body}' #{curl_headers} https://#{domain}/#{request.path}")
|
69
|
+
end
|
70
|
+
|
60
71
|
def response_body(request)
|
61
72
|
request.opts[:response].presence || http_response(request)
|
62
73
|
end
|
@@ -64,6 +75,8 @@ module SoapyCake
|
|
64
75
|
def http_response(request)
|
65
76
|
logger&.info("soapy_cake:request #{request}")
|
66
77
|
|
78
|
+
log_curl_command(request) if fetch_opt(:log_curl)
|
79
|
+
|
67
80
|
http_request = Net::HTTP::Post.new(request.path, HEADERS)
|
68
81
|
http_request.body = request.xml
|
69
82
|
response = perform_http_request(http_request)
|
data/lib/soapy_cake/const.rb
CHANGED
data/lib/soapy_cake/error.rb
CHANGED
data/lib/soapy_cake/helper.rb
CHANGED
data/lib/soapy_cake/request.rb
CHANGED
data/lib/soapy_cake/response.rb
CHANGED
data/lib/soapy_cake/version.rb
CHANGED
data/soapy_cake.gemspec
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: post
|
5
|
-
uri: https://cake-partner-domain.com/api/
|
5
|
+
uri: https://cake-partner-domain.com/api/11/reports.asmx
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
8
|
string: |
|
9
9
|
<?xml version="1.0"?>
|
10
|
-
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:cake="http://cakemarketing.com/api/
|
10
|
+
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:cake="http://cakemarketing.com/api/11/">
|
11
11
|
<env:Header/>
|
12
12
|
<env:Body>
|
13
13
|
<cake:Clicks>
|
14
14
|
<cake:api_key>cake-api-key</cake:api_key>
|
15
|
-
<cake:start_date>
|
16
|
-
<cake:end_date>
|
15
|
+
<cake:start_date>2017-05-31T02:00:00</cake:start_date>
|
16
|
+
<cake:end_date>2017-06-01T02:00:00</cake:end_date>
|
17
17
|
<cake:row_limit>1</cake:row_limit>
|
18
18
|
</cake:Clicks>
|
19
19
|
</env:Body>
|
@@ -21,6 +21,12 @@ http_interactions:
|
|
21
21
|
headers:
|
22
22
|
Content-Type:
|
23
23
|
- application/soap+xml;charset=UTF-8
|
24
|
+
Accept-Encoding:
|
25
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
26
|
+
Accept:
|
27
|
+
- "*/*"
|
28
|
+
User-Agent:
|
29
|
+
- Ruby
|
24
30
|
response:
|
25
31
|
status:
|
26
32
|
code: 200
|
@@ -28,38 +34,47 @@ http_interactions:
|
|
28
34
|
headers:
|
29
35
|
Cache-Control:
|
30
36
|
- private, max-age=0
|
37
|
+
Content-Length:
|
38
|
+
- '4034'
|
31
39
|
Content-Type:
|
32
40
|
- application/soap+xml; charset=utf-8
|
33
|
-
|
34
|
-
-
|
41
|
+
Date:
|
42
|
+
- Tue, 27 Jun 2017 09:14:48 GMT
|
35
43
|
X-Aspnet-Version:
|
36
44
|
- 4.0.30319
|
37
45
|
X-Powered-By:
|
38
46
|
- ASP.NET
|
39
|
-
|
40
|
-
-
|
41
|
-
Content-Length:
|
42
|
-
- '2151'
|
47
|
+
Connection:
|
48
|
+
- close
|
43
49
|
body:
|
44
50
|
encoding: UTF-8
|
45
51
|
string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
|
46
52
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ClicksResponse
|
47
|
-
xmlns="http://cakemarketing.com/api/
|
48
|
-
xmlns="API:id_name_store"
|
49
|
-
|
50
|
-
xmlns="API:id_name_store">
|
51
|
-
xmlns="API:id_name_store"
|
52
|
-
|
53
|
-
|
54
|
-
xmlns="API:id_name_store"
|
55
|
-
|
56
|
-
|
57
|
-
/><
|
53
|
+
xmlns="http://cakemarketing.com/api/11/"><ClicksResult><success>true</success><row_count>470134</row_count><clicks><click><click_id>1633967829</click_id><visitor_id>964629655</visitor_id><tracking_id>1251217875</tracking_id><request_session_id>1602923077</request_session_id><click_date>2017-06-01T01:59:59.95</click_date><source_affiliate><source_affiliate_id
|
54
|
+
xmlns="API:id_name_store">26833</source_affiliate_id><source_affiliate_name
|
55
|
+
xmlns="API:id_name_store">Funtomic Adstack</source_affiliate_name></source_affiliate><brand_advertiser><brand_advertiser_id
|
56
|
+
xmlns="API:id_name_store">15176</brand_advertiser_id><brand_advertiser_name
|
57
|
+
xmlns="API:id_name_store">Star Stable Entertainment AB</brand_advertiser_name></brand_advertiser><site_offer><site_offer_id
|
58
|
+
xmlns="API:id_name_store">16698</site_offer_id><site_offer_name xmlns="API:id_name_store">Star
|
59
|
+
Stable (US SOI)</site_offer_name></site_offer><site_offer_contract><site_offer_contract_id
|
60
|
+
xmlns="API:id_name_store">22508</site_offer_contract_id><site_offer_contract_name
|
61
|
+
xmlns="API:id_name_store">Direct</site_offer_contract_name></site_offer_contract><campaign><campaign_id>646697</campaign_id><campaign_type><campaign_type_id>1</campaign_type_id><campaign_type_name>Standard</campaign_type_name></campaign_type></campaign><creative><creative_id
|
62
|
+
xmlns="API:id_name_store">211068</creative_id><creative_name xmlns="API:id_name_store">211068</creative_name></creative><sub_id_1
|
63
|
+
/><sub_id_2>CRpyl4PCacTC-9QTL_8kUg</sub_id_2><sub_id_3>as~</sub_id_3><sub_id_4
|
64
|
+
/><sub_id_5 /><ip_address>73.47.22.147</ip_address><user_agent>Mozilla/5.0%20(Windows%20NT%2010.0;%20WOW64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/58.0.3029.110%20Safari/537.36</user_agent><referrer_url>http://kizi.com/games/c/family-barn?ref=big_thumb</referrer_url><search_term
|
65
|
+
/><request_url>https://a2g-secure.com/?a=26833&c=211068&s1=&s2=CRpyl4PCacTC-9QTL_8kUg&s3=as~</request_url><redirect_url>https://www.starstable.com/en/creation/offer?affiliate=AD2&utm_source=ad2&utm_medium=cpl&referrer=12344&utm_term=standard&utm_content=empty&AffId=#affid#_#s1#&utm_campaign=US-ad2-Display-Star-Stable&ClickID=#reqid#</redirect_url><country><country_code
|
58
66
|
xmlns="API:id_name_store">US</country_code><country_name xmlns="API:id_name_store">United
|
59
|
-
States</country_name></country><region><region_code xmlns="API:id_name_store">
|
60
|
-
xmlns="API:id_name_store">
|
61
|
-
xmlns="API:id_name_store">
|
62
|
-
|
67
|
+
States</country_name></country><region><region_code xmlns="API:id_name_store">NH</region_code><region_name
|
68
|
+
xmlns="API:id_name_store">New Hampshire</region_name></region><language><language_id
|
69
|
+
xmlns="API:id_name_store">1</language_id><language_name xmlns="API:id_name_store">English</language_name></language><isp><isp_id
|
70
|
+
xmlns="API:id_name_store">16357</isp_id><isp_name xmlns="API:id_name_store">Comcast
|
71
|
+
Cable Communications Inc.</isp_name></isp><operating_system><operating_system_id>18</operating_system_id><operating_system_name>Windows</operating_system_name><operating_system_version><version_id
|
72
|
+
xmlns="API:id_name_store">1</version_id><version_name xmlns="API:id_name_store">Other</version_name></operating_system_version><operating_system_version_minor><version_id
|
73
|
+
xmlns="API:id_name_store">1</version_id><version_name xmlns="API:id_name_store"
|
74
|
+
/></operating_system_version_minor></operating_system><browser><browser_id>2</browser_id><browser_name>Chrome</browser_name><browser_version><version_id
|
75
|
+
xmlns="API:id_name_store">460</version_id><version_name xmlns="API:id_name_store">58</version_name></browser_version><browser_version_minor><version_id
|
76
|
+
xmlns="API:id_name_store">691</version_id><version_name xmlns="API:id_name_store">58.0</version_name></browser_version_minor></browser><disposition
|
77
|
+
/><duplicate>false</duplicate><duplicate_clicks>0</duplicate_clicks><total_clicks>1</total_clicks></click></clicks></ClicksResult></ClicksResponse></soap:Body></soap:Envelope>
|
63
78
|
http_version:
|
64
|
-
recorded_at:
|
79
|
+
recorded_at: Mon, 15 Jun 2015 12:00:00 GMT
|
65
80
|
recorded_with: VCR 2.9.3
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
RSpec.describe SoapyCake::Admin do
|
3
4
|
around { |example| Timecop.freeze(Time.utc(2015, 6, 15, 12), &example) }
|
4
5
|
|
5
6
|
let(:logger) { instance_double(Logger) }
|
7
|
+
|
6
8
|
before { allow(logger).to receive(:info) }
|
7
9
|
|
8
10
|
subject(:admin) { described_class.new(logger: logger) }
|
@@ -40,15 +42,15 @@ RSpec.describe SoapyCake::Admin do
|
|
40
42
|
|
41
43
|
it 'returns a clicks report with a defined time range', :vcr do
|
42
44
|
result = admin.clicks(
|
43
|
-
start_date: Date.new(
|
44
|
-
end_date: Date.new(
|
45
|
+
start_date: Date.new(2017, 5, 31),
|
46
|
+
end_date: Date.new(2017, 6, 1),
|
45
47
|
row_limit: 1
|
46
48
|
)
|
47
49
|
|
48
50
|
expect(result.count).to eq(1)
|
49
51
|
expect(result.first).to include(
|
50
|
-
click_id:
|
51
|
-
visitor_id:
|
52
|
+
click_id: 1633967829,
|
53
|
+
visitor_id: 964629655
|
52
54
|
)
|
53
55
|
end
|
54
56
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
RSpec.describe SoapyCake::Admin do
|
3
4
|
subject(:admin) { described_class.new }
|
5
|
+
|
4
6
|
let(:opts) { nil }
|
5
7
|
let(:cake_opts) { opts }
|
6
8
|
let(:cake_method) { method }
|
@@ -11,22 +13,26 @@ RSpec.describe SoapyCake::Admin do
|
|
11
13
|
describe '#affiliate_bills' do
|
12
14
|
let(:method) { :affiliate_bills }
|
13
15
|
let(:cake_method) { :export_affiliate_bills }
|
16
|
+
|
14
17
|
it_behaves_like 'a cake admin method'
|
15
18
|
end
|
16
19
|
|
17
20
|
describe '#advertiser_bills' do
|
18
21
|
let(:method) { :advertiser_bills }
|
19
22
|
let(:cake_method) { :export_advertiser_bills }
|
23
|
+
|
20
24
|
it_behaves_like 'a cake admin method'
|
21
25
|
end
|
22
26
|
|
23
27
|
describe '#mark_affiliate_bill_as_received' do
|
24
28
|
let(:method) { :mark_affiliate_bill_as_received }
|
29
|
+
|
25
30
|
it_behaves_like 'a cake admin method'
|
26
31
|
end
|
27
32
|
|
28
33
|
describe '#mark_affiliate_bill_as_paid' do
|
29
34
|
let(:method) { :mark_affiliate_bill_as_paid }
|
35
|
+
|
30
36
|
it_behaves_like 'a cake admin method'
|
31
37
|
end
|
32
38
|
end
|
@@ -36,26 +42,31 @@ RSpec.describe SoapyCake::Admin do
|
|
36
42
|
|
37
43
|
describe '#advertisers' do
|
38
44
|
let(:method) { :advertisers }
|
45
|
+
|
39
46
|
it_behaves_like 'a cake admin method'
|
40
47
|
end
|
41
48
|
|
42
49
|
describe '#affiliates' do
|
43
50
|
let(:method) { :affiliates }
|
51
|
+
|
44
52
|
it_behaves_like 'a cake admin method'
|
45
53
|
end
|
46
54
|
|
47
55
|
describe '#campaigns' do
|
48
56
|
let(:method) { :campaigns }
|
57
|
+
|
49
58
|
it_behaves_like 'a cake admin method'
|
50
59
|
end
|
51
60
|
|
52
61
|
describe '#offers' do
|
53
62
|
let(:method) { :offers }
|
63
|
+
|
54
64
|
it_behaves_like 'a cake admin method'
|
55
65
|
end
|
56
66
|
|
57
67
|
describe '#creatives' do
|
58
68
|
let(:method) { :creatives }
|
69
|
+
|
59
70
|
it_behaves_like 'a cake admin method'
|
60
71
|
end
|
61
72
|
end
|
@@ -65,37 +76,44 @@ RSpec.describe SoapyCake::Admin do
|
|
65
76
|
|
66
77
|
describe '#campaign_summary' do
|
67
78
|
let(:method) { :campaign_summary }
|
79
|
+
|
68
80
|
it_behaves_like 'a cake admin method'
|
69
81
|
end
|
70
82
|
|
71
83
|
describe '#offer_summary' do
|
72
84
|
let(:method) { :offer_summary }
|
85
|
+
|
73
86
|
it_behaves_like 'a cake admin method'
|
74
87
|
end
|
75
88
|
|
76
89
|
describe '#affiliate_summary' do
|
77
90
|
let(:method) { :affiliate_summary }
|
91
|
+
|
78
92
|
it_behaves_like 'a cake admin method'
|
79
93
|
end
|
80
94
|
|
81
95
|
describe '#advertiser_summary' do
|
82
96
|
let(:method) { :advertiser_summary }
|
97
|
+
|
83
98
|
it_behaves_like 'a cake admin method'
|
84
99
|
end
|
85
100
|
|
86
101
|
describe '#clicks' do
|
87
102
|
let(:method) { :clicks }
|
103
|
+
|
88
104
|
it_behaves_like 'a cake admin method'
|
89
105
|
end
|
90
106
|
|
91
107
|
describe '#conversions' do
|
92
108
|
let(:method) { :conversions }
|
93
109
|
let(:cake_opts) { { conversion_type: 'conversions' } }
|
110
|
+
|
94
111
|
it_behaves_like 'a cake admin method'
|
95
112
|
end
|
96
113
|
|
97
114
|
describe '#conversion_changes' do
|
98
115
|
let(:method) { :conversion_changes }
|
116
|
+
|
99
117
|
it_behaves_like 'a cake admin method'
|
100
118
|
end
|
101
119
|
|
@@ -103,18 +121,21 @@ RSpec.describe SoapyCake::Admin do
|
|
103
121
|
let(:method) { :events }
|
104
122
|
let(:cake_method) { :conversions }
|
105
123
|
let(:cake_opts) { { conversion_type: 'events' } }
|
124
|
+
|
106
125
|
it_behaves_like 'a cake admin method'
|
107
126
|
end
|
108
127
|
|
109
128
|
describe '#traffic' do
|
110
129
|
let(:method) { :traffic }
|
111
130
|
let(:cake_method) { :traffic_export }
|
131
|
+
|
112
132
|
it_behaves_like 'a cake admin method'
|
113
133
|
end
|
114
134
|
|
115
135
|
describe '#caps' do
|
116
136
|
let(:method) { :caps }
|
117
137
|
let(:cake_opts) { { start_date: '2015-07-01', end_date: '2015-07-07' } }
|
138
|
+
|
118
139
|
it_behaves_like 'a cake admin method'
|
119
140
|
end
|
120
141
|
end
|
@@ -125,23 +146,27 @@ RSpec.describe SoapyCake::Admin do
|
|
125
146
|
describe '#verticals' do
|
126
147
|
let(:method) { :verticals }
|
127
148
|
let(:cake_opts) { nil }
|
149
|
+
|
128
150
|
it_behaves_like 'a cake admin method'
|
129
151
|
end
|
130
152
|
|
131
153
|
describe '#countries' do
|
132
154
|
let(:method) { :countries }
|
155
|
+
|
133
156
|
it_behaves_like 'a cake admin method'
|
134
157
|
end
|
135
158
|
|
136
159
|
describe '#currencies' do
|
137
160
|
let(:method) { :currencies }
|
138
161
|
let(:cake_opts) { nil }
|
162
|
+
|
139
163
|
it_behaves_like 'a cake admin method'
|
140
164
|
end
|
141
165
|
|
142
166
|
describe '#exchange_rates' do
|
143
167
|
let(:method) { :exchange_rates }
|
144
168
|
let(:cake_opts) { { start_date: '2015-07-01', end_date: '2015-07-07' } }
|
169
|
+
|
145
170
|
it_behaves_like 'a cake admin method'
|
146
171
|
end
|
147
172
|
|
@@ -149,12 +174,14 @@ RSpec.describe SoapyCake::Admin do
|
|
149
174
|
let(:method) { :tiers }
|
150
175
|
let(:cake_method) { :affiliate_tiers }
|
151
176
|
let(:cake_opts) { nil }
|
177
|
+
|
152
178
|
it_behaves_like 'a cake admin method'
|
153
179
|
end
|
154
180
|
|
155
181
|
describe '#blacklist_reasons' do
|
156
182
|
let(:method) { :blacklist_reasons }
|
157
183
|
let(:cake_opts) { nil }
|
184
|
+
|
158
185
|
it_behaves_like 'a cake admin method'
|
159
186
|
end
|
160
187
|
end
|
@@ -165,12 +192,14 @@ RSpec.describe SoapyCake::Admin do
|
|
165
192
|
describe '#update_creative' do
|
166
193
|
let(:method) { :update_creative }
|
167
194
|
let(:cake_method) { :creative }
|
195
|
+
|
168
196
|
it_behaves_like 'a cake admin method'
|
169
197
|
end
|
170
198
|
|
171
199
|
describe '#update_campaign' do
|
172
200
|
let(:method) { :update_campaign }
|
173
201
|
let(:cake_method) { :campaign }
|
202
|
+
|
174
203
|
it_behaves_like 'a cake admin method'
|
175
204
|
end
|
176
205
|
|
@@ -204,12 +233,14 @@ RSpec.describe SoapyCake::Admin do
|
|
204
233
|
describe '#affiliate_signup' do
|
205
234
|
let(:method) { :affiliate_signup }
|
206
235
|
let(:cake_method) { :affiliate }
|
236
|
+
|
207
237
|
it_behaves_like 'a cake admin method'
|
208
238
|
end
|
209
239
|
|
210
240
|
describe '#media_types' do
|
211
241
|
let(:method) { :media_types }
|
212
242
|
let(:cake_method) { :get_media_types }
|
243
|
+
|
213
244
|
it_behaves_like 'a cake admin method'
|
214
245
|
|
215
246
|
it 'uses a local response' do
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
RSpec.describe SoapyCake::Affiliate do
|
3
4
|
let(:affiliate_id) { 42 }
|
4
5
|
let(:opts) { { a: 1 } }
|
@@ -21,12 +22,14 @@ RSpec.describe SoapyCake::Affiliate do
|
|
21
22
|
describe '#bills' do
|
22
23
|
let(:service) { :reports }
|
23
24
|
let(:method) { :bills }
|
25
|
+
|
24
26
|
it_behaves_like 'a cake affiliate method'
|
25
27
|
end
|
26
28
|
|
27
29
|
describe '#offer_feed' do
|
28
30
|
let(:service) { :offers }
|
29
31
|
let(:method) { :offer_feed }
|
32
|
+
|
30
33
|
it_behaves_like 'a cake affiliate method'
|
31
34
|
end
|
32
35
|
end
|
@@ -1,14 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
RSpec.describe SoapyCake::Campaigns do
|
3
4
|
let(:campaigns) { described_class.new }
|
4
5
|
let(:client) { instance_double(SoapyCake::Client) }
|
5
6
|
let(:campaign_id) { 1 }
|
6
7
|
|
7
|
-
before do
|
8
|
-
allow(SoapyCake::Client).to receive(:new).and_return(client)
|
9
|
-
allow(client).to receive(:run).with(an_instance_of(SoapyCake::Request))
|
10
|
-
end
|
11
|
-
|
12
8
|
let(:default_params) do
|
13
9
|
{
|
14
10
|
affiliate_id: 1,
|
@@ -26,6 +22,11 @@ RSpec.describe SoapyCake::Campaigns do
|
|
26
22
|
}
|
27
23
|
end
|
28
24
|
|
25
|
+
before do
|
26
|
+
allow(SoapyCake::Client).to receive(:new).and_return(client)
|
27
|
+
allow(client).to receive(:run).with(an_instance_of(SoapyCake::Request))
|
28
|
+
end
|
29
|
+
|
29
30
|
def expect_request_to_be_built_with(opts)
|
30
31
|
expect(SoapyCake::Request).to receive(:new).with(
|
31
32
|
:admin,
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soapy_cake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ad2games GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -271,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
271
|
version: '0'
|
272
272
|
requirements: []
|
273
273
|
rubyforge_project:
|
274
|
-
rubygems_version: 2.5.
|
274
|
+
rubygems_version: 2.5.1
|
275
275
|
signing_key:
|
276
276
|
specification_version: 4
|
277
277
|
summary: Simple client for the CAKE API
|