hasoffersv3 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|