hasoffersv3 0.4.1 → 0.5.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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +2 -5
- data/README.md +16 -4
- data/hasoffersv3.gemspec +1 -1
- data/lib/hasoffersv3/affiliate_offer.rb +24 -0
- data/lib/hasoffersv3/client.rb +11 -0
- data/lib/hasoffersv3/configuration.rb +6 -1
- data/lib/hasoffersv3/logger.rb +45 -0
- data/lib/hasoffersv3/report.rb +4 -0
- data/lib/hasoffersv3/version.rb +1 -1
- data/lib/hasoffersv3.rb +1 -1
- data/spec/lib/advertiser_billing_spec.rb +8 -12
- data/spec/lib/advertiser_spec.rb +7 -11
- data/spec/lib/advertiser_user_spec.rb +2 -6
- data/spec/lib/affiliate_billing_spec.rb +12 -16
- data/spec/lib/affiliate_offer_spec.rb +27 -21
- data/spec/lib/affiliate_spec.rb +17 -21
- data/spec/lib/application_spec.rb +3 -6
- data/spec/lib/base_spec.rb +5 -9
- data/spec/lib/client_spec.rb +1 -3
- data/spec/lib/configuration_spec.rb +44 -0
- data/spec/lib/conversion_spec.rb +6 -23
- data/spec/lib/employee_spec.rb +8 -12
- data/spec/lib/hasoffersv3_spec.rb +4 -9
- data/spec/lib/logger_spec.rb +47 -0
- data/spec/lib/offer_pixel_spec.rb +13 -17
- data/spec/lib/offer_spec.rb +48 -52
- data/spec/lib/raw_log_spec.rb +13 -17
- data/spec/lib/report_spec.rb +9 -35
- metadata +10 -5
data/spec/lib/affiliate_spec.rb
CHANGED
@@ -1,24 +1,20 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Affiliate do
|
4
|
-
subject { HasOffersV3::Affiliate.new }
|
5
|
-
|
6
2
|
let(:url) { api_url 'Affiliate' }
|
7
3
|
|
8
4
|
before(:each) do |example|
|
9
5
|
stub_call unless example.metadata[:no_stub]
|
10
6
|
end
|
11
7
|
|
12
|
-
describe '
|
13
|
-
it '
|
8
|
+
describe '#find_all' do
|
9
|
+
it 'makes a proper request call' do
|
14
10
|
response = subject.find_all
|
15
11
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll'}))).to have_been_made
|
16
12
|
validate_call response
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
20
|
-
describe '
|
21
|
-
it '
|
16
|
+
describe '#find_by_id', :no_stub do
|
17
|
+
it 'makes a proper request call' do
|
22
18
|
stub_call :get, nil, Regexp.new(url)
|
23
19
|
response = subject.find_by_id id: 1
|
24
20
|
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findById', 'id' => '1'}))).to have_been_made
|
@@ -26,42 +22,42 @@ describe HasOffersV3::Affiliate do
|
|
26
22
|
end
|
27
23
|
|
28
24
|
context 'when there is no id' do
|
29
|
-
it '
|
25
|
+
it 'raises exception' do
|
30
26
|
expect { subject.find_by_id failed_id: 1 }.to raise_error ArgumentError
|
31
27
|
end
|
32
28
|
end
|
33
29
|
end
|
34
30
|
|
35
|
-
describe '
|
36
|
-
it '
|
31
|
+
describe '#update_payment_method_wire' do
|
32
|
+
it 'makes a proper request call' do
|
37
33
|
response = subject.update_payment_method_wire
|
38
34
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'updatePaymentMethodWire'}))).to have_been_made
|
39
35
|
validate_call response
|
40
36
|
end
|
41
37
|
end
|
42
38
|
|
43
|
-
describe '
|
44
|
-
it '
|
39
|
+
describe '#update_payment_method_paypal' do
|
40
|
+
it 'makes a proper request call' do
|
45
41
|
response = subject.update_payment_method_paypal
|
46
42
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'updatePaymentMethodPaypal'}))).to have_been_made
|
47
43
|
validate_call response
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
51
|
-
describe 'create' do
|
47
|
+
describe '#create' do
|
52
48
|
context 'when required params are missing' do
|
53
|
-
it '
|
49
|
+
it 'fails without data' do
|
54
50
|
expect { subject.create }.to raise_error ArgumentError
|
55
51
|
end
|
56
|
-
it '
|
52
|
+
it 'fails without data["company"]' do
|
57
53
|
expect { subject.create data: { zipcode: 1234567 }}.to raise_error ArgumentError
|
58
54
|
end
|
59
|
-
it '
|
55
|
+
it 'fails without data["zipcode"]' do
|
60
56
|
expect { subject.create data: { company: 'xyz@applift.com' }}.to raise_error ArgumentError
|
61
57
|
end
|
62
58
|
end
|
63
59
|
|
64
|
-
it '
|
60
|
+
it 'makes a successful request call' do
|
65
61
|
response = subject.create data: { company: "xyz@gmail.com", zipcode: "10178" }
|
66
62
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'create', 'data' => {'company' => 'xyz@gmail.com',
|
67
63
|
'zipcode' => '10178'}}))).to have_been_made
|
@@ -69,15 +65,15 @@ describe HasOffersV3::Affiliate do
|
|
69
65
|
end
|
70
66
|
end
|
71
67
|
|
72
|
-
describe '
|
73
|
-
it '
|
68
|
+
describe '#get_tier' do
|
69
|
+
it 'makes a proper request call' do
|
74
70
|
stub_call
|
75
71
|
response = subject.get_tier id: 1
|
76
72
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'getAffiliateTier','id' => '1'}))).to have_been_made
|
77
73
|
validate_call response
|
78
74
|
end
|
79
75
|
|
80
|
-
it '
|
76
|
+
it 'fails without id' do
|
81
77
|
expect { subject.get_tier }.to raise_error ArgumentError
|
82
78
|
end
|
83
79
|
end
|
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Application do
|
4
2
|
let(:url) { Regexp.new api_url('Application') }
|
5
|
-
|
6
|
-
describe '
|
7
|
-
|
8
|
-
it 'should make a proper request call' do
|
3
|
+
|
4
|
+
describe '#get_payout_tiers' do
|
5
|
+
it 'makes a proper request call' do
|
9
6
|
stub_call :get
|
10
7
|
response = subject.get_payout_tiers
|
11
8
|
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findAllAffiliateTiers'}))).to have_been_made
|
data/spec/lib/base_spec.rb
CHANGED
@@ -1,18 +1,14 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Base do
|
4
|
-
subject { HasOffersV3::Base }
|
5
|
-
|
6
2
|
let(:url) { Regexp.new api_url('Base') }
|
7
3
|
|
8
|
-
describe
|
9
|
-
it '
|
4
|
+
describe "#requires!" do
|
5
|
+
it 'raises ArgumentError is parameters are missing' do
|
10
6
|
expect { subject.requires!({}, [:dummy]) }.to raise_error(ArgumentError)
|
11
7
|
end
|
12
8
|
end
|
13
9
|
|
14
|
-
describe "
|
15
|
-
it "
|
10
|
+
describe "#get_request" do
|
11
|
+
it "makes a proper request" do
|
16
12
|
stub_call :get
|
17
13
|
response = subject.get_request 'test'
|
18
14
|
request = a_request(:get, url).with(query: hash_including('Method' => 'test'))
|
@@ -31,7 +27,7 @@ describe HasOffersV3::Base do
|
|
31
27
|
HasOffersV3.configuration.protocol = @old_protocol
|
32
28
|
end
|
33
29
|
|
34
|
-
it "
|
30
|
+
it "makes a proper request" do
|
35
31
|
stub_call :get
|
36
32
|
response = subject.get_request 'test'
|
37
33
|
expect(a_request(:get, url).with(query: hash_including('Method' => 'test'))).to have_been_made
|
data/spec/lib/client_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Client do
|
4
2
|
|
5
3
|
describe '#base_uri' do
|
@@ -11,7 +9,7 @@ describe HasOffersV3::Client do
|
|
11
9
|
result
|
12
10
|
}
|
13
11
|
|
14
|
-
it '
|
12
|
+
it 'has different configs' do
|
15
13
|
default_connection = HasOffersV3::Client.new(configuration_to_default_host)
|
16
14
|
expect(default_connection.base_uri).to eq('https://api.hasoffers.com/v3')
|
17
15
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
describe HasOffersV3::Configuration do
|
2
|
+
describe '#http_logger' do
|
3
|
+
it 'returns an instance of HasOffersV3::Logger' do
|
4
|
+
expect(subject.http_logger).to be_instance_of(HasOffersV3::Logger)
|
5
|
+
end
|
6
|
+
|
7
|
+
context 'when logger is default' do
|
8
|
+
it 'uses null HTTP logger' do
|
9
|
+
expect(subject.http_logger.log).to be_nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when logger is supplied' do
|
14
|
+
let(:logger) { double('logger') }
|
15
|
+
subject { described_class.new(logger: logger) }
|
16
|
+
|
17
|
+
it 'uses supplied logger' do
|
18
|
+
expect(subject.http_logger.log).to eq logger
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#base_uri' do
|
24
|
+
context 'when configuration is default' do
|
25
|
+
it 'builds default base URI' do
|
26
|
+
expect(subject.base_uri).to eq 'https://api.hasoffers.com/v3'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when configuration is customized' do
|
31
|
+
subject do
|
32
|
+
described_class.new(
|
33
|
+
host: 'api2.hasoffers.com',
|
34
|
+
protocol: 'http',
|
35
|
+
base_path: '/v4'
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'builds base URI according options' do
|
40
|
+
expect(subject.base_uri).to eq 'http://api2.hasoffers.com/v4'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/spec/lib/conversion_spec.rb
CHANGED
@@ -1,48 +1,31 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Conversion do
|
4
|
-
subject { HasOffersV3::Conversion.new }
|
5
|
-
|
6
2
|
let(:url) { Regexp.new api_url('Conversion') }
|
7
3
|
|
8
4
|
before :each do
|
9
5
|
stub_call :get
|
10
6
|
end
|
11
7
|
|
12
|
-
describe '
|
13
|
-
it '
|
8
|
+
describe '#find_all' do
|
9
|
+
it 'makes a proper request call' do
|
14
10
|
response = subject.find_all
|
15
11
|
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findAll'}))).to have_been_made
|
16
12
|
validate_call response
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
20
|
-
describe '
|
21
|
-
it '
|
16
|
+
describe '#find_added_conversions' do
|
17
|
+
it 'makes a proper request call' do
|
22
18
|
response = subject.find_added_conversions
|
23
19
|
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findAddedConversions'}))).to have_been_made
|
24
20
|
validate_call response
|
25
21
|
end
|
26
22
|
end
|
27
23
|
|
28
|
-
describe '
|
29
|
-
it '
|
24
|
+
describe '#find_updated_conversions' do
|
25
|
+
it 'makes a proper request call' do
|
30
26
|
response = subject.find_updated_conversions
|
31
27
|
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findUpdatedConversions'}))).to have_been_made
|
32
28
|
validate_call response
|
33
29
|
end
|
34
30
|
end
|
35
|
-
|
36
|
-
describe '.findAll' do
|
37
|
-
it 'should make a proper request call' do
|
38
|
-
response = subject.find_all
|
39
|
-
expect(a_request(:get, url).with(query: hash_including({'Method' => 'findAll'}))).to have_been_made
|
40
|
-
validate_call response
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should call find_all method' do
|
44
|
-
expect(subject).to receive(:find_all).with({test: 1})
|
45
|
-
subject.find_all test: 1
|
46
|
-
end
|
47
|
-
end
|
48
31
|
end
|
data/spec/lib/employee_spec.rb
CHANGED
@@ -1,45 +1,41 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::Employee do
|
4
|
-
subject { HasOffersV3::Employee.new }
|
5
|
-
|
6
2
|
let(:url) { api_url 'Employee' }
|
7
3
|
|
8
4
|
before(:each) do |example|
|
9
5
|
stub_call unless example.metadata[:no_stub]
|
10
6
|
end
|
11
7
|
|
12
|
-
describe '
|
13
|
-
it '
|
8
|
+
describe '#find_all' do
|
9
|
+
it 'makes a proper request call' do
|
14
10
|
response = subject.find_all
|
15
11
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll'}))).to have_been_made
|
16
12
|
validate_call response
|
17
13
|
end
|
18
14
|
end
|
19
15
|
|
20
|
-
describe '
|
21
|
-
it '
|
16
|
+
describe '#find_all_by_ids' do
|
17
|
+
it 'makes a proper request call' do
|
22
18
|
response = subject.find_all_by_ids ids: [1]
|
23
19
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAllByIds'}))).to have_been_made
|
24
20
|
validate_call response
|
25
21
|
end
|
26
22
|
|
27
23
|
context 'when there is no id' do
|
28
|
-
it '
|
24
|
+
it 'raises exception' do
|
29
25
|
expect { subject.find_all_by_ids }.to raise_error ArgumentError
|
30
26
|
end
|
31
27
|
end
|
32
28
|
end
|
33
29
|
|
34
|
-
describe '
|
35
|
-
it '
|
30
|
+
describe '#find_by_id' do
|
31
|
+
it 'makes a proper request call' do
|
36
32
|
response = subject.find_by_id id: 1
|
37
33
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findById', 'id' => '1'}))).to have_been_made
|
38
34
|
validate_call response
|
39
35
|
end
|
40
36
|
|
41
37
|
context 'when there is no id' do
|
42
|
-
it '
|
38
|
+
it 'raises exception' do
|
43
39
|
expect { subject.find_by_id }.to raise_error ArgumentError
|
44
40
|
end
|
45
41
|
end
|
@@ -1,21 +1,18 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3 do
|
4
2
|
|
5
3
|
context 'singleton' do
|
6
|
-
it '
|
4
|
+
it 'uses default config' do
|
7
5
|
subject = HasOffersV3::Offer.client.configuration
|
8
6
|
expect(subject).to eq(HasOffersV3.configuration)
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
describe '#configuration' do
|
13
|
-
it '
|
14
|
-
subject = HasOffersV3.new
|
11
|
+
it 'creates different connections' do
|
15
12
|
expect(subject.configuration).to_not eq(HasOffersV3.configuration)
|
16
13
|
end
|
17
14
|
|
18
|
-
it '
|
15
|
+
it 'uses params instead of default' do
|
19
16
|
subject = HasOffersV3.new(host: 'example.com')
|
20
17
|
expect(subject.configuration.host).to eq('example.com')
|
21
18
|
expect(subject.configuration.host).to_not eq(HasOffersV3::Configuration::DEFAULTS[:host])
|
@@ -23,10 +20,8 @@ describe HasOffersV3 do
|
|
23
20
|
end
|
24
21
|
|
25
22
|
context 'api' do
|
26
|
-
subject { HasOffersV3.new }
|
27
|
-
|
28
23
|
describe '#offers' do
|
29
|
-
it '
|
24
|
+
it 'gets offers for current connection' do
|
30
25
|
offer = double('HasOffersV3::Offer')
|
31
26
|
expect(HasOffersV3::Offer).to receive(:new).and_return(offer)
|
32
27
|
expect(offer).to receive(:find_all)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
describe HasOffersV3::Logger do
|
2
|
+
let(:log) { double('log') }
|
3
|
+
subject { described_class.new(log) }
|
4
|
+
|
5
|
+
describe '.new' do
|
6
|
+
it 'initializes properly' do
|
7
|
+
expect(subject.log).to eql log
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#log_request' do
|
12
|
+
let(:request) do
|
13
|
+
double('request',
|
14
|
+
method: 'POST',
|
15
|
+
each_capitalized: { 'Header' => 'value' },
|
16
|
+
body: 'Var1=value1&Var2=value2'
|
17
|
+
)
|
18
|
+
end
|
19
|
+
let(:uri) { double('uri', to_s: 'http://api.applift.com/path') }
|
20
|
+
|
21
|
+
it 'logs HTTP request' do
|
22
|
+
expected_message = "[HasOffersV3] Request: POST http://api.applift.com/path\nHeader: value\n\nVar1=value1&Var2=value2\n"
|
23
|
+
expect(log).to receive(:info).with(expected_message)
|
24
|
+
|
25
|
+
subject.log_request(request, uri)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#log_response' do
|
30
|
+
let(:response) do
|
31
|
+
double('response',
|
32
|
+
http_version: '1.1',
|
33
|
+
code: 200,
|
34
|
+
message: 'OK',
|
35
|
+
each_capitalized: { 'Header' => 'value' },
|
36
|
+
body: 'Body of this response'
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'logs HTTP response' do
|
41
|
+
expected_message = "[HasOffersV3] Response: HTTP/1.1 200 OK\nHeader: value\n\nBody of this response\n"
|
42
|
+
expect(log).to receive(:info).with(expected_message)
|
43
|
+
|
44
|
+
subject.log_response(response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,26 +1,22 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe HasOffersV3::OfferPixel do
|
4
|
-
subject { HasOffersV3::OfferPixel.new }
|
5
|
-
|
6
2
|
let(:url) { api_url 'OfferPixel' }
|
7
3
|
|
8
|
-
describe '
|
9
|
-
it '
|
4
|
+
describe '#find_all' do
|
5
|
+
it 'makes a proper request call' do
|
10
6
|
stub_call
|
11
7
|
response = subject.find_all
|
12
8
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll'}))).to have_been_made
|
13
9
|
validate_call response
|
14
10
|
end
|
15
11
|
|
16
|
-
it '
|
12
|
+
it 'contains filters by type and modified' do
|
17
13
|
stub_call
|
18
14
|
response = subject.find_all(filters: {type: 'url', modified: {'GREATER_THAN' => '2015-01-01+00:00'}})
|
19
15
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll', filters: { type: 'url', modified: {'GREATER_THAN' => '2015-01-01+00:00'} }}))).to have_been_made
|
20
16
|
validate_call response
|
21
17
|
end
|
22
18
|
|
23
|
-
it '
|
19
|
+
it 'sorts by modified' do
|
24
20
|
stub_call
|
25
21
|
response = subject.find_all(sort: {modified: 'asc'})
|
26
22
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll', sort: {modified: 'asc'}}))).to have_been_made
|
@@ -28,8 +24,8 @@ describe HasOffersV3::OfferPixel do
|
|
28
24
|
end
|
29
25
|
end
|
30
26
|
|
31
|
-
describe '
|
32
|
-
it '
|
27
|
+
describe '#find_all_by_ids' do
|
28
|
+
it 'makes a proper request call' do
|
33
29
|
stub_call
|
34
30
|
response = subject.find_all_by_ids ids: [1]
|
35
31
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAllByIds'}))).to have_been_made
|
@@ -37,14 +33,14 @@ describe HasOffersV3::OfferPixel do
|
|
37
33
|
end
|
38
34
|
|
39
35
|
context 'when there is no id' do
|
40
|
-
it '
|
36
|
+
it 'raises exception' do
|
41
37
|
expect { subject.find_all_by_ids }.to raise_error ArgumentError
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|
45
41
|
|
46
|
-
describe '
|
47
|
-
it '
|
42
|
+
describe '#find_by_id' do
|
43
|
+
it 'makes a proper request call' do
|
48
44
|
stub_call
|
49
45
|
response = subject.find_by_id id: [1]
|
50
46
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'findById'}))).to have_been_made
|
@@ -52,14 +48,14 @@ describe HasOffersV3::OfferPixel do
|
|
52
48
|
end
|
53
49
|
|
54
50
|
context 'when there is no id' do
|
55
|
-
it '
|
51
|
+
it 'raises exception' do
|
56
52
|
expect { subject.find_by_id }.to raise_error ArgumentError
|
57
53
|
end
|
58
54
|
end
|
59
55
|
end
|
60
56
|
|
61
|
-
describe '
|
62
|
-
it '
|
57
|
+
describe '#get_allowed_types' do
|
58
|
+
it 'makes a proper request call' do
|
63
59
|
stub_call
|
64
60
|
response = subject.get_allowed_types offer_id: [1]
|
65
61
|
expect(a_request(:post, url).with(body: hash_including({'Method' => 'getAllowedTypes'}))).to have_been_made
|
@@ -67,7 +63,7 @@ describe HasOffersV3::OfferPixel do
|
|
67
63
|
end
|
68
64
|
|
69
65
|
context 'when there is no offer_id' do
|
70
|
-
it '
|
66
|
+
it 'raises exception' do
|
71
67
|
expect { subject.get_allowed_types }.to raise_error ArgumentError
|
72
68
|
end
|
73
69
|
end
|