myfinance 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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +23 -0
- data/.hound.yml +1063 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +94 -0
- data/LICENSE.txt +21 -0
- data/README.md +209 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/myfinance.rb +35 -0
- data/lib/myfinance/client.rb +31 -0
- data/lib/myfinance/configuration.rb +12 -0
- data/lib/myfinance/entities/base.rb +9 -0
- data/lib/myfinance/entities/collection.rb +57 -0
- data/lib/myfinance/entities/entity.rb +16 -0
- data/lib/myfinance/entities/entity_collection.rb +14 -0
- data/lib/myfinance/entities/financial_account.rb +30 -0
- data/lib/myfinance/entities/payable_account.rb +6 -0
- data/lib/myfinance/entities/receivable_account.rb +6 -0
- data/lib/myfinance/exception.rb +11 -0
- data/lib/myfinance/http.rb +33 -0
- data/lib/myfinance/request.rb +53 -0
- data/lib/myfinance/resources/base.rb +28 -0
- data/lib/myfinance/resources/entity.rb +39 -0
- data/lib/myfinance/resources/financial_account.rb +70 -0
- data/lib/myfinance/resources/payable_account.rb +33 -0
- data/lib/myfinance/resources/receivable_account.rb +33 -0
- data/lib/myfinance/response.rb +41 -0
- data/lib/myfinance/version.rb +3 -0
- data/myfinance.gemspec +45 -0
- data/spec/lib/myfinance/client_spec.rb +49 -0
- data/spec/lib/myfinance/configuration_spec.rb +26 -0
- data/spec/lib/myfinance/entities/base_spec.rb +28 -0
- data/spec/lib/myfinance/entities/collection_spec.rb +70 -0
- data/spec/lib/myfinance/entities/entity_collection_spec.rb +20 -0
- data/spec/lib/myfinance/entities/entity_spec.rb +11 -0
- data/spec/lib/myfinance/entities/payable_account_spec.rb +13 -0
- data/spec/lib/myfinance/entities/receivable_account_spec.rb +13 -0
- data/spec/lib/myfinance/http_spec.rb +37 -0
- data/spec/lib/myfinance/request_spec.rb +29 -0
- data/spec/lib/myfinance/resources/entity_spec.rb +63 -0
- data/spec/lib/myfinance/resources/payable_account_spec.rb +146 -0
- data/spec/lib/myfinance/resources/receivable_account_spec.rb +146 -0
- data/spec/lib/myfinance/response_spec.rb +58 -0
- data/spec/myfinance_spec.rb +25 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/client.rb +3 -0
- data/spec/support/matchers/have_attr_accessor.rb +18 -0
- data/spec/support/shared_examples/entity_attributes.rb +9 -0
- data/spec/support/shared_examples/http_request_methods.rb +29 -0
- data/spec/support/vcr.rb +7 -0
- metadata +306 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Resources::PayableAccount do
|
4
|
+
let(:entity_id) { 3798 }
|
5
|
+
|
6
|
+
describe "#create", vcr: true do
|
7
|
+
let(:params) { { due_date: '2015-08-15', amount: 150.99 } }
|
8
|
+
subject { client.payable_accounts.create(entity_id, params) }
|
9
|
+
|
10
|
+
context "with success" do
|
11
|
+
it "creates a new object" do
|
12
|
+
expect(subject.id).to eq(1215631)
|
13
|
+
expect(subject.due_date).to eq(Date.new(2015, 8, 15))
|
14
|
+
expect(subject.entity_id).to eq(entity_id)
|
15
|
+
expect(subject.status).to eq(1)
|
16
|
+
expect(subject.status_name).to eq('unpaid')
|
17
|
+
expect(subject.occurred_at).to be_nil
|
18
|
+
expect(subject.amount).to eq(150.99)
|
19
|
+
expect(subject.ticket_amount).to be_nil
|
20
|
+
expect(subject.interest_amount).to be_nil
|
21
|
+
expect(subject.discount_amount).to be_nil
|
22
|
+
expect(subject.total_amount).to be_nil
|
23
|
+
expect(subject.description).to be_nil
|
24
|
+
expect(subject.document).to be_nil
|
25
|
+
expect(subject.document_emission_date).to be_nil
|
26
|
+
expect(subject.observation).to be_nil
|
27
|
+
expect(subject.remind).to be_falsy
|
28
|
+
expect(subject.reminded_at).to be_nil
|
29
|
+
expect(subject.income_tax_relevant).to be_falsy
|
30
|
+
expect(subject.category_id).to be_nil
|
31
|
+
expect(subject.classification_center_id).to be_nil
|
32
|
+
expect(subject.expected_deposit_account_id).to be_nil
|
33
|
+
expect(subject.recurrence_id).to be_nil
|
34
|
+
expect(subject.person_id).to be_nil
|
35
|
+
expect(subject.created_at).to eq(DateTime.parse("2015-08-05T10:31:28-03:00"))
|
36
|
+
expect(subject.updated_at).to eq(DateTime.parse("2015-08-05T10:31:28-03:00"))
|
37
|
+
expect(subject.recurrent).to be_falsy
|
38
|
+
expect(subject.parcelled).to be_falsy
|
39
|
+
expect(subject.recurrence_period).to be_nil
|
40
|
+
expect(subject.number_of_parcels).to be_nil
|
41
|
+
expect(subject.current_parcel).to be_nil
|
42
|
+
expect(subject.competency_month).to eq("2015-08")
|
43
|
+
expect(subject.financial_account_taxes_attributes).to be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when the payable_account has occurred_at value defined" do
|
47
|
+
let(:params) { { due_date: '2015-08-01', amount: 150.99, occurred_at: '2015-08-05', total_amount: 150.99 } }
|
48
|
+
|
49
|
+
it "creates a new payable_account as paid" do
|
50
|
+
expect(subject.id).to eq(1215632)
|
51
|
+
expect(subject.due_date).to eq(Date.new(2015, 8, 1))
|
52
|
+
expect(subject.occurred_at).to eq(Date.new(2015, 8, 5))
|
53
|
+
expect(subject.amount).to eq(150.99)
|
54
|
+
expect(subject.total_amount).to eq(150.99)
|
55
|
+
expect(subject.status).to eq(2)
|
56
|
+
expect(subject.status_name).to eq('paid')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "when any data is invalid" do
|
62
|
+
let(:params) { { due_date: '', amount: 150.99 } }
|
63
|
+
|
64
|
+
it "raises Myfinance::RequestError" do
|
65
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "adds information on request error object" do
|
69
|
+
expect(Myfinance::RequestError).to receive(:new).with(code: 422, message: "", body: "{\"competency_month\":[\"n\\u00e3o pode ser vazio\"],\"due_date\":[\"n\\u00e3o \\u00e9 uma data v\\u00e1lida\"]}").and_call_original
|
70
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when entity does not exist" do
|
75
|
+
subject { client.payable_accounts.create(555, params) }
|
76
|
+
|
77
|
+
it "raises Myfinance::RequestError" do
|
78
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "adds information on request error object" do
|
82
|
+
expect(Myfinance::RequestError).to receive(:new).with(code: 403, message: "Forbidden", body: "{\"error\":\"Voc\\u00ea n\\u00e3o tem permiss\\u00e3o para acessar este recurso.\"}").and_call_original
|
83
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#pay", vcr: true do
|
89
|
+
let(:params) { { total_amount: 150.99, occurred_at: '2015-08-05', amount: 150.99 } }
|
90
|
+
subject { client.payable_accounts.pay(1215631, entity_id, params) }
|
91
|
+
|
92
|
+
context "with success" do
|
93
|
+
it "pays payable account" do
|
94
|
+
expect(subject.id).to eq(1215631)
|
95
|
+
expect(subject.status).to eq(2)
|
96
|
+
expect(subject.status_name).to eq('paid')
|
97
|
+
expect(subject.amount).to eq(150.99)
|
98
|
+
expect(subject.total_amount).to eq(150.99)
|
99
|
+
expect(subject.ticket_amount).to be_nil
|
100
|
+
expect(subject.interest_amount).to be_nil
|
101
|
+
expect(subject.discount_amount).to be_nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when any parameter is invalid" do
|
106
|
+
let(:params) { { total_amount: nil, occurred_at: '2015-08-05', amount: 150.99 } }
|
107
|
+
|
108
|
+
it "raises request error" do
|
109
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "#undo_payment", vcr: true do
|
115
|
+
subject { client.payable_accounts.undo_payment(1215631, entity_id) }
|
116
|
+
|
117
|
+
it "undoes receivement of the receivable account" do
|
118
|
+
expect(subject.id).to eq(1215631)
|
119
|
+
expect(subject.status).to eq(1)
|
120
|
+
expect(subject.status_name).to eq('unpaid')
|
121
|
+
expect(subject.amount).to eq(150.99)
|
122
|
+
expect(subject.total_amount).to be_nil
|
123
|
+
expect(subject.ticket_amount).to be_nil
|
124
|
+
expect(subject.interest_amount).to be_nil
|
125
|
+
expect(subject.discount_amount).to be_nil
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#destroy", vcr: true do
|
130
|
+
subject { client.payable_accounts.destroy(1215631, entity_id) }
|
131
|
+
|
132
|
+
context "when payable account exists" do
|
133
|
+
it "returns true" do
|
134
|
+
expect(subject).to be_truthy
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context "when payable account does not exist" do
|
139
|
+
subject { client.payable_accounts.destroy(1215631099, entity_id) }
|
140
|
+
|
141
|
+
it "raises request error" do
|
142
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Resources::ReceivableAccount do
|
4
|
+
let(:entity_id) { 3798 }
|
5
|
+
|
6
|
+
describe "#create", vcr: true do
|
7
|
+
let(:params) { { due_date: '2015-08-15', amount: 150.99 } }
|
8
|
+
subject { client.receivable_accounts.create(entity_id, params) }
|
9
|
+
|
10
|
+
context "with success" do
|
11
|
+
it "creates a new object" do
|
12
|
+
expect(subject.id).to eq(1215634)
|
13
|
+
expect(subject.due_date).to eq(Date.new(2015, 8, 15))
|
14
|
+
expect(subject.entity_id).to eq(entity_id)
|
15
|
+
expect(subject.status).to eq(1)
|
16
|
+
expect(subject.status_name).to eq('unreceived')
|
17
|
+
expect(subject.occurred_at).to be_nil
|
18
|
+
expect(subject.amount).to eq(150.99)
|
19
|
+
expect(subject.ticket_amount).to be_nil
|
20
|
+
expect(subject.interest_amount).to be_nil
|
21
|
+
expect(subject.discount_amount).to be_nil
|
22
|
+
expect(subject.total_amount).to be_nil
|
23
|
+
expect(subject.description).to be_nil
|
24
|
+
expect(subject.document).to be_nil
|
25
|
+
expect(subject.document_emission_date).to be_nil
|
26
|
+
expect(subject.observation).to be_nil
|
27
|
+
expect(subject.remind).to be_falsy
|
28
|
+
expect(subject.reminded_at).to be_nil
|
29
|
+
expect(subject.income_tax_relevant).to be_falsy
|
30
|
+
expect(subject.category_id).to be_nil
|
31
|
+
expect(subject.classification_center_id).to be_nil
|
32
|
+
expect(subject.expected_deposit_account_id).to be_nil
|
33
|
+
expect(subject.recurrence_id).to be_nil
|
34
|
+
expect(subject.person_id).to be_nil
|
35
|
+
expect(subject.created_at).to eq(DateTime.parse("2015-08-05T11:59:05-03:00"))
|
36
|
+
expect(subject.updated_at).to eq(DateTime.parse("2015-08-05T11:59:05-03:00"))
|
37
|
+
expect(subject.recurrent).to be_falsy
|
38
|
+
expect(subject.parcelled).to be_falsy
|
39
|
+
expect(subject.recurrence_period).to be_nil
|
40
|
+
expect(subject.number_of_parcels).to be_nil
|
41
|
+
expect(subject.current_parcel).to be_nil
|
42
|
+
expect(subject.competency_month).to eq("2015-08")
|
43
|
+
expect(subject.financial_account_taxes_attributes).to be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when the receivable_account has occurred_at value defined" do
|
47
|
+
let(:params) { { due_date: '2015-08-01', amount: 150.99, occurred_at: '2015-08-05', total_amount: 150.99 } }
|
48
|
+
|
49
|
+
it "creates a new receivable_account as paid" do
|
50
|
+
expect(subject.id).to eq(1215635)
|
51
|
+
expect(subject.due_date).to eq(Date.new(2015, 8, 1))
|
52
|
+
expect(subject.occurred_at).to eq(Date.new(2015, 8, 5))
|
53
|
+
expect(subject.amount).to eq(150.99)
|
54
|
+
expect(subject.total_amount).to eq(150.99)
|
55
|
+
expect(subject.status).to eq(2)
|
56
|
+
expect(subject.status_name).to eq('received')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "when any data is invalid" do
|
62
|
+
let(:params) { { due_date: '', amount: 150.99 } }
|
63
|
+
|
64
|
+
it "raises Myfinance::RequestError" do
|
65
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "adds information on request error object" do
|
69
|
+
expect(Myfinance::RequestError).to receive(:new).with(code: 422, message: "", body: "{\"competency_month\":[\"n\\u00e3o pode ser vazio\"],\"due_date\":[\"n\\u00e3o \\u00e9 uma data v\\u00e1lida\"]}").and_call_original
|
70
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when entity does not exist" do
|
75
|
+
subject { client.receivable_accounts.create(555, params) }
|
76
|
+
|
77
|
+
it "raises Myfinance::RequestError" do
|
78
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "adds information on request error object" do
|
82
|
+
expect(Myfinance::RequestError).to receive(:new).with(code: 403, message: "Forbidden", body: "{\"error\":\"Voc\\u00ea n\\u00e3o tem permiss\\u00e3o para acessar este recurso.\"}").and_call_original
|
83
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#receive", vcr: true do
|
89
|
+
let(:params) { { total_amount: 150.99, occurred_at: '2015-08-05', amount: 150.99 } }
|
90
|
+
subject { client.receivable_accounts.receive(1215634, entity_id, params) }
|
91
|
+
|
92
|
+
context "with success" do
|
93
|
+
it "receives the receivable account" do
|
94
|
+
expect(subject.id).to eq(1215634)
|
95
|
+
expect(subject.status).to eq(2)
|
96
|
+
expect(subject.status_name).to eq('received')
|
97
|
+
expect(subject.amount).to eq(150.99)
|
98
|
+
expect(subject.total_amount).to eq(150.99)
|
99
|
+
expect(subject.ticket_amount).to be_nil
|
100
|
+
expect(subject.interest_amount).to be_nil
|
101
|
+
expect(subject.discount_amount).to be_nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when any parameter is invalid" do
|
106
|
+
let(:params) { { total_amount: nil, occurred_at: '2015-08-05', amount: 150.99 } }
|
107
|
+
|
108
|
+
it "raises request error" do
|
109
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "#undo_receivement", vcr: true do
|
115
|
+
subject { client.receivable_accounts.undo_receivement(1215634, entity_id) }
|
116
|
+
|
117
|
+
it "undoes receivement of the receivable account" do
|
118
|
+
expect(subject.id).to eq(1215634)
|
119
|
+
expect(subject.status).to eq(1)
|
120
|
+
expect(subject.status_name).to eq('unreceived')
|
121
|
+
expect(subject.amount).to eq(150.99)
|
122
|
+
expect(subject.total_amount).to be_nil
|
123
|
+
expect(subject.ticket_amount).to be_nil
|
124
|
+
expect(subject.interest_amount).to be_nil
|
125
|
+
expect(subject.discount_amount).to be_nil
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#destroy", vcr: true do
|
130
|
+
subject { client.receivable_accounts.destroy(1215634, entity_id) }
|
131
|
+
|
132
|
+
context "when receivable account exists" do
|
133
|
+
it "returns true" do
|
134
|
+
expect(subject).to be_truthy
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context "when receivable account does not exist" do
|
139
|
+
subject { client.receivable_accounts.destroy(1215631099, entity_id) }
|
140
|
+
|
141
|
+
it "raises request error" do
|
142
|
+
expect { subject }.to raise_error(Myfinance::RequestError)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Response do
|
4
|
+
subject { described_class.new(response) }
|
5
|
+
|
6
|
+
describe "#resolve!" do
|
7
|
+
context 'when success' do
|
8
|
+
let(:response) { double(success?: true) }
|
9
|
+
|
10
|
+
it 'returns self' do
|
11
|
+
expect(subject.resolve!).to eq(response)
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when block given' do
|
15
|
+
let(:response) { double(success?: true) }
|
16
|
+
|
17
|
+
it 'returns block' do
|
18
|
+
expect(subject.resolve!{ response }).to eq(response)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when timeout' do
|
24
|
+
let(:response) { double(success?: false, timed_out?: true) }
|
25
|
+
|
26
|
+
it 'raises RequestTimeout' do
|
27
|
+
expect { subject.resolve! }.to raise_error(Myfinance::RequestTimeout)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when not success neither timeout' do
|
32
|
+
let(:response) { double(success?: false, timed_out?: false, code: 301, status_message: 'Moved Permanently', body: '') }
|
33
|
+
|
34
|
+
it 'raises RequestError' do
|
35
|
+
expect { subject.resolve! }.to raise_error(Myfinance::RequestError)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#parsed_body" do
|
41
|
+
let(:response) { double(success?: true) }
|
42
|
+
|
43
|
+
context "when JSON is invalid" do
|
44
|
+
it "returns empty hash" do
|
45
|
+
allow(subject).to receive(:body).and_return("{\"key\": ")
|
46
|
+
expect(subject.parsed_body).to eq({})
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "when JSON is valid" do
|
51
|
+
it "returns empty hash" do
|
52
|
+
allow(subject).to receive(:body).and_return("{\"key\": \"value\"}")
|
53
|
+
expect(MultiJson).to receive(:load).with("{\"key\": \"value\"}").and_call_original
|
54
|
+
expect(subject.parsed_body).to eq({ "key" => "value" })
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance do
|
4
|
+
it 'has a version number' do
|
5
|
+
expect(Myfinance::VERSION).to_not be_nil
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'configuration' do
|
9
|
+
it 'should be done via block initialization' do
|
10
|
+
Myfinance.configure do |c|
|
11
|
+
c.user_agent = "My App v1.0"
|
12
|
+
c.url = "https://sandbox.myfinance.com.br"
|
13
|
+
end
|
14
|
+
|
15
|
+
expect(Myfinance.configuration.user_agent).to eq("My App v1.0")
|
16
|
+
expect(Myfinance.configuration.url).to eq("https://sandbox.myfinance.com.br")
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'uses a singleton object for the configuration values' do
|
20
|
+
config1 = Myfinance.configuration
|
21
|
+
config2 = Myfinance.configuration
|
22
|
+
expect(config1).to eq(config2)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
require "simplecov"
|
3
|
+
|
4
|
+
CodeClimate::TestReporter.start
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
SimpleCov.maximum_coverage_drop 0.2
|
8
|
+
|
9
|
+
SimpleCov.start do
|
10
|
+
add_group "Resources", "lib/myfinance/resources"
|
11
|
+
add_group "Entities", "lib/myfinance/entities"
|
12
|
+
add_filter "vendor"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
18
|
+
require "myfinance"
|
19
|
+
require "pry"
|
20
|
+
require "vcr"
|
21
|
+
|
22
|
+
|
23
|
+
Dir["spec/support/**/*.rb"].each { |f| load f }
|
24
|
+
|
25
|
+
VCR.configure do |config|
|
26
|
+
config.cassette_library_dir = "spec/vcr_cassettes"
|
27
|
+
config.hook_into :typhoeus
|
28
|
+
config.ignore_hosts "codeclimate.com"
|
29
|
+
end
|
30
|
+
|
31
|
+
RSpec.configure do |config|
|
32
|
+
config.mock_with :rspec
|
33
|
+
|
34
|
+
config.before(:each) do
|
35
|
+
Myfinance.configuration.url = "https://sandbox.myfinance.com.br"
|
36
|
+
Typhoeus::Expectation.clear
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
RSpec::Matchers.define :have_attr_accessor do |field|
|
2
|
+
match do |object_instance|
|
3
|
+
object_instance.respond_to?(field) &&
|
4
|
+
object_instance.respond_to?("#{field}=")
|
5
|
+
end
|
6
|
+
|
7
|
+
failure_message do |object_instance|
|
8
|
+
"expected attr_accessor for #{field} on #{object_instance}"
|
9
|
+
end
|
10
|
+
|
11
|
+
failure_message_when_negated do |object_instance|
|
12
|
+
"expected attr_accessor for #{field} not to be defined on #{object_instance}"
|
13
|
+
end
|
14
|
+
|
15
|
+
description do
|
16
|
+
"checks to see if there is an attr accessor on the supplied object"
|
17
|
+
end
|
18
|
+
end
|