myfinance 0.7.0 → 1.0.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -2
  3. data/CHANGELOG.md +15 -0
  4. data/Gemfile.lock +1 -1
  5. data/README.md +304 -1
  6. data/lib/myfinance.rb +12 -0
  7. data/lib/myfinance/client.rb +16 -0
  8. data/lib/myfinance/entities/bank_statement.rb +16 -0
  9. data/lib/myfinance/entities/credit_card.rb +19 -0
  10. data/lib/myfinance/entities/credit_card_collection.rb +11 -0
  11. data/lib/myfinance/entities/credit_card_transaction.rb +26 -0
  12. data/lib/myfinance/entities/credit_card_transaction_collection.rb +11 -0
  13. data/lib/myfinance/entities/financial_account.rb +1 -1
  14. data/lib/myfinance/entities/payable_account_collection.rb +14 -0
  15. data/lib/myfinance/entities/receivable_account_collection.rb +14 -0
  16. data/lib/myfinance/entities/reconcile_collection.rb +30 -0
  17. data/lib/myfinance/resources/bank_statement.rb +20 -0
  18. data/lib/myfinance/resources/category.rb +16 -0
  19. data/lib/myfinance/resources/classification_center.rb +1 -1
  20. data/lib/myfinance/resources/credit_card.rb +47 -0
  21. data/lib/myfinance/resources/credit_card_transaction.rb +47 -0
  22. data/lib/myfinance/resources/financial_account.rb +48 -7
  23. data/lib/myfinance/resources/financial_transaction.rb +13 -2
  24. data/lib/myfinance/resources/person.rb +1 -1
  25. data/lib/myfinance/resources/reconcile.rb +20 -0
  26. data/lib/myfinance/version.rb +1 -1
  27. data/spec/lib/myfinance/client_spec.rb +21 -0
  28. data/spec/lib/myfinance/entities/credit_card_collection_spec.rb +23 -0
  29. data/spec/lib/myfinance/entities/credit_card_spec.rb +7 -0
  30. data/spec/lib/myfinance/entities/credit_card_transaction_collection_spec.rb +21 -0
  31. data/spec/lib/myfinance/entities/credit_card_transaction_spec.rb +8 -0
  32. data/spec/lib/myfinance/entities/reconcile_collection_spec.rb +20 -0
  33. data/spec/lib/myfinance/resources/bank_statement_spec.rb +53 -0
  34. data/spec/lib/myfinance/resources/category_spec.rb +24 -3
  35. data/spec/lib/myfinance/resources/classification_center_spec.rb +12 -5
  36. data/spec/lib/myfinance/resources/credit_card_spec.rb +142 -0
  37. data/spec/lib/myfinance/resources/credit_card_transaction_spec.rb +162 -0
  38. data/spec/lib/myfinance/resources/financial_transaction_spec.rb +27 -2
  39. data/spec/lib/myfinance/resources/payable_account_spec.rb +131 -15
  40. data/spec/lib/myfinance/resources/person_spec.rb +16 -4
  41. data/spec/lib/myfinance/resources/receivable_account_spec.rb +132 -15
  42. data/spec/lib/myfinance/resources/reconcile_spec.rb +33 -0
  43. data/spec/support/bank_statements/extrato.ofx +207 -0
  44. metadata +35 -2
@@ -32,7 +32,7 @@ module Myfinance
32
32
  def find_by(params)
33
33
  values = params.map { |k,v| "search[#{k}]=#{v}" }.join("&")
34
34
 
35
- http.get("/people?#{values}", body: {}) do |response|
35
+ http.get(URI.encode("/people?#{values}"), body: {}) do |response|
36
36
  respond_with_collection(response)
37
37
  end
38
38
  end
@@ -0,0 +1,20 @@
1
+ module Myfinance
2
+ module Resources
3
+ class Reconcile < Base
4
+ def reconcile(entity_id, financial_accounts_ids = [], financial_transactions_ids = [])
5
+ body = { selected_financial_account_ids: financial_accounts_ids,
6
+ selected_financial_transaction_ids: financial_transactions_ids }
7
+
8
+ http.post(path(entity_id), body: body) do |response|
9
+ respond_with_collection(response)
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def path(entity_id)
16
+ "/entities/#{entity_id}/reconciles"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Myfinance
2
- VERSION = "0.7.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -124,4 +124,25 @@ describe Myfinance::Client do
124
124
  subject.taxes
125
125
  end
126
126
  end
127
+
128
+ describe "#credit_cards" do
129
+ it "instantiates a new Myfinance::Resources::CreditCard" do
130
+ expect(Myfinance::Resources::CreditCard).to receive(:new).with(subject.http)
131
+ subject.credit_cards
132
+ end
133
+ end
134
+
135
+ describe "#credit_card_transactions" do
136
+ it "instantiates a new Myfinance::Resources::CreditCardTransaction" do
137
+ expect(Myfinance::Resources::CreditCardTransaction).to receive(:new).with(subject.http)
138
+ subject.credit_card_transactions
139
+ end
140
+ end
141
+
142
+ describe "#reconciles" do
143
+ it "instantiates a new Myfinance::Resources::Reconcile" do
144
+ expect(Myfinance::Resources::Reconcile).to receive(:new).with(subject.http)
145
+ subject.reconciles
146
+ end
147
+ end
127
148
  end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Entities::CreditCardCollection do
4
+ let(:entity_klass) { described_class }
5
+
6
+ let(:params) { double(headers: {}, parsed_body: [{}]) }
7
+
8
+ subject { described_class.new(params) }
9
+
10
+ context "#build" do
11
+ it "returns order collection" do
12
+ expect(subject.build).to be_a(entity_klass)
13
+ end
14
+
15
+ it "returns order" do
16
+ subject.build
17
+ expect(subject.collection.count).to eq(1)
18
+ expect(
19
+ subject.collection.first
20
+ ).to be_a(Myfinance::Entities::CreditCard)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Entities::CreditCard do
4
+ it_behaves_like "entity_attributes", [:created_at, :id, :name, :updated_at, :entity_id, :person_id, :flag,
5
+ :flag_image_url, :observation, :classification_center_id, :category_id,
6
+ :closing_day, :expiration_day]
7
+ end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Entities::CreditCardTransactionCollection do
4
+ let(:entity_klass) { described_class }
5
+
6
+ let(:params) { double(headers: {}, parsed_body: [{}]) }
7
+
8
+ subject { described_class.new(params) }
9
+
10
+ context "#build" do
11
+ it "returns order collection" do
12
+ expect(subject.build).to be_a(entity_klass)
13
+ end
14
+
15
+ it "returns order" do
16
+ subject.build
17
+ expect(subject.collection.count).to eq(1)
18
+ expect(subject.collection.first).to be_a(Myfinance::Entities::CreditCardTransaction)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Entities::CreditCardTransaction do
4
+ it_behaves_like "entity_attributes", [:credit_card_invoice_id, :classification_center_id, :category_id, :amount,
5
+ :description, :occurred_at, :type, :document, :observation, :created_at,
6
+ :updated_at, :invoice_payment, :excel_import_id, :financial_account_id,
7
+ :person_id, :moved, :recurrence_id, :indexed_at, :credit_card_id, :id]
8
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Entities::ReconcileCollection do
4
+ let(:entity_klass) { described_class }
5
+
6
+ let(:params) { double(headers: {}, parsed_body: [{}]) }
7
+
8
+ subject { described_class.new(params) }
9
+
10
+ context "#build" do
11
+ it "returns order collection" do
12
+ expect(subject.build).to be_a(entity_klass)
13
+ end
14
+
15
+ it "returns order" do
16
+ subject.build
17
+ expect(subject.collection.count).to eq(0)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::BankStatement, vcr: true do
4
+ let(:entity_id) { 3_798 }
5
+ let(:deposit_account_id) { 14_268 }
6
+ let(:bank_statement_id) { 18_213 }
7
+ let(:bank_statement_klass) { Myfinance::Entities::BankStatement }
8
+ let(:file) { File.open("spec/support/bank_statements/#{file_name}", "r") }
9
+ let(:file_name) { "extrato.ofx" }
10
+ let(:request_error) { Myfinance::RequestError }
11
+
12
+ describe "#import" do
13
+ subject { client.bank_statements.import(entity_id, deposit_account_id, file) }
14
+
15
+ it "returns a BankStatement" do
16
+ expect(subject).to be_a(bank_statement_klass)
17
+ end
18
+
19
+ it "returns imported BankStatement" do
20
+ expect(subject.file_file_name).to eq(file_name)
21
+ expect(subject.created_at).not_to eq(nil)
22
+ end
23
+
24
+ context "with invalid file" do
25
+ subject { client.bank_statements.import(entity_id, deposit_account_id, "diretorio/que/nao/existe/arquivo.ofx") }
26
+
27
+ it "returns 500 error code" do
28
+ expect { subject }.to raise_error(request_error) do |e|
29
+ expect(e.code).to eq(500)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "#status" do
36
+ subject { client.bank_statements.status(entity_id, deposit_account_id, bank_statement_id) }
37
+
38
+ it "returns a BankStatement" do
39
+ expect(subject).to be_a(bank_statement_klass)
40
+ end
41
+
42
+ context "when invalid ID" do
43
+ subject { client.bank_statements.status(entity_id, deposit_account_id, nil) }
44
+
45
+ it "returns 404 not found error" do
46
+ expect { subject }.to raise_error(request_error) do |e|
47
+ expect(e.code).to eq(404)
48
+ expect(e.message).to eq("Not Found")
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -48,6 +48,29 @@ describe Myfinance::Resources::Category, vcr: true do
48
48
  end
49
49
  end
50
50
 
51
+ describe "#find_by" do
52
+ context "when success" do
53
+ it "find categories by attributes" do
54
+ result = client.categories.find_by({ name: "Alimentação" })
55
+ expect(result).to be_a(Myfinance::Entities::CategoryCollection)
56
+ expect(result.collection.first).to be_a(entity_klass)
57
+ expect(result.collection.first.name).to eql("Alimentação")
58
+ end
59
+ end
60
+
61
+ context "when error" do
62
+ let(:client) { Myfinance.client("") }
63
+
64
+ it "raises Myfinance::RequestError with 401 status code" do
65
+ expect {
66
+ client.categories.find_by({})
67
+ }.to raise_error(Myfinance::RequestError) do |error|
68
+ expect(error.code).to eql(401)
69
+ end
70
+ end
71
+ end
72
+ end
73
+
51
74
  describe "#create" do
52
75
  let(:params) { { name: "Category 1" } }
53
76
 
@@ -89,9 +112,7 @@ describe Myfinance::Resources::Category, vcr: true do
89
112
  end
90
113
 
91
114
  it "raises Myfinance::RequestError with 422 status core" do
92
- expect {
93
- result = client.categories.update(548083, { name: "" })
94
- }.to raise_error(Myfinance::RequestError) do |error|
115
+ expect { client.categories.update(548083, { name: "" }) }.to raise_error(Myfinance::RequestError) do |error|
95
116
  expect(error.code).to eql(422)
96
117
  end
97
118
  end
@@ -54,17 +54,24 @@ describe Myfinance::Resources::ClassificationCenter, vcr: true do
54
54
 
55
55
  describe "#find_by" do
56
56
  context "when success" do
57
- let(:params) do
58
- { entity_id_equals: 3798, name_equals: "Centro de Custo Tal" }
59
- end
60
-
61
57
  it "find a classification centers by name successfully" do
62
- result = client.classification_centers.find_by(params)
58
+ result = client.classification_centers.find_by(
59
+ { entity_id_equals: 3798, name_equals: "Centro de Custo Tal" }
60
+ )
63
61
  expect(result).to be_a(entity_collection)
64
62
  expect(result.collection.first).to be_a(entity_klass)
65
63
  expect(result.collection.first.name).to eq("Centro de Custo Tal")
66
64
  end
67
65
 
66
+ it "find a classification centers with special characters" do
67
+ result = client.classification_centers.find_by(
68
+ { entity_id_equals: 3798, name_equals: "Socialização 2" }
69
+ )
70
+ expect(result).to be_a(entity_collection)
71
+ expect(result.collection.first).to be_a(entity_klass)
72
+ expect(result.collection.first.name).to eq("Socialização 2")
73
+ end
74
+
68
75
  it "returns a empty classification center successfully" do
69
76
  result = client.classification_centers.find_by(
70
77
  { entity_id_equals: 3798, name_equals: "Any" }
@@ -0,0 +1,142 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::CreditCard, vcr: true do
4
+ let(:cc_klass) { Myfinance::Entities::CreditCard }
5
+ let(:entity_id) { 3798 }
6
+ let(:cc_id) { 44 }
7
+ let(:credit_cards) { client.credit_cards }
8
+ let(:request_error) { Myfinance::RequestError }
9
+
10
+ describe "#find_all" do
11
+ context "when successful" do
12
+ subject { credit_cards.find_all(entity_id) }
13
+ before :each do
14
+ subject.build
15
+ end
16
+
17
+ it "returns a 200 OK response code" do
18
+ expect(subject.response.code).to eq(200)
19
+ end
20
+
21
+ it "returns a collection of CreditCards" do
22
+ expect(subject).to be_a(Myfinance::Entities::CreditCardCollection)
23
+ end
24
+
25
+ it "returns credit cards inside collection" do
26
+ expect(subject.collection.first).to be_a(cc_klass)
27
+ end
28
+ end
29
+
30
+ context "when supplying invalid IDs" do
31
+ subject { credit_cards.find_all(nil) }
32
+ it "raises not found error with 404" do
33
+ expect { subject }.to raise_error(request_error) do |e|
34
+ expect(e.code).to eq(404)
35
+ expect(e.message).to eq("Not Found")
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#find" do
42
+ context "when successful" do
43
+ subject { credit_cards.find(entity_id, cc_id) }
44
+
45
+ it "returns a CreditCard" do
46
+ expect(subject).to be_a(cc_klass)
47
+ end
48
+ end
49
+
50
+ context "when supplying invalid IDs" do
51
+ subject { credit_cards.find(nil, nil) }
52
+
53
+ it "raises not found error with 404" do
54
+ expect { subject }.to raise_error(request_error) do |e|
55
+ expect(e.code).to eq(404)
56
+ expect(e.message).to eq("Not Found")
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ describe "#create" do
63
+ context "when successful" do
64
+ let(:params) { { name: "Nubank", flag: "MasterCard", closing_day: 20, expiration_day: 02 } }
65
+ subject { credit_cards.create(entity_id, params) }
66
+
67
+ it "creates a CreditCard" do
68
+ expect(subject).to be_a(cc_klass)
69
+ end
70
+
71
+ it "contains given params" do
72
+ expect(subject).to have_attributes(params)
73
+ end
74
+ end
75
+
76
+ context "when given invalid params" do
77
+ let(:params) { { name: "Nubank", flag: "BandeiraDeWesteros", closing_day: 20, expiration_day: 02 } }
78
+ subject { credit_cards.create(entity_id, params) }
79
+
80
+ it "returns 422 Unprocessable Entity" do
81
+ expect { subject }.to raise_error(request_error) do |e|
82
+ expect(e.code).to eq(422)
83
+ expect(e.message).to eq("Unprocessable Entity")
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ describe "#update" do
90
+ context "when successful" do
91
+ let(:params) { { name: "Neon", flag: "Visa", closing_day: 20, expiration_day: 02 } }
92
+ subject { credit_cards.update(entity_id, cc_id, params) }
93
+
94
+ it "updates a CreditCard" do
95
+ expect(subject).to be_a(cc_klass)
96
+ end
97
+
98
+ it "contains given params" do
99
+ expect(subject).to have_attributes(params)
100
+ end
101
+ end
102
+
103
+ context "when given invalid params" do
104
+ let(:params) { { name: "Nubank", flag: "BandeiraDeWesteros", closing_day: 20, expiration_day: 02 } }
105
+ subject { credit_cards.update(entity_id, cc_id, params) }
106
+
107
+ it "returns 422 Unprocessable Entity" do
108
+ expect { subject }.to raise_error(request_error) do |e|
109
+ expect(e.code).to eq(422)
110
+ expect(e.message).to eq("Unprocessable Entity")
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ describe "#destroy" do
117
+ let(:params) { { name: "Nubank", flag: "MasterCard", closing_day: 20, expiration_day: 02 } }
118
+ let(:new_cc) { credit_cards.create(entity_id, params) }
119
+
120
+ context "when successful" do
121
+ before :each do
122
+ credit_cards.destroy(entity_id, new_cc.id)
123
+ end
124
+
125
+ it "does not find deleted CreditCard" do
126
+ expect { credit_cards.find(entity_id, new_cc.id) }.to raise_error(request_error) do |e|
127
+ expect(e.code).to eq(404)
128
+ expect(e.message).to eq("Not Found")
129
+ end
130
+ end
131
+ end
132
+
133
+ context "when given invalid ID" do
134
+ it "returns 404 Not Found" do
135
+ expect { credit_cards.destroy(entity_id, 424242) }.to raise_error(request_error) do |e|
136
+ expect(e.code).to eq(404)
137
+ expect(e.message).to eq("Not Found")
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,162 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::CreditCardTransaction, vcr: true do
4
+ let(:cct_klass) { Myfinance::Entities::CreditCardTransaction }
5
+ let(:entity_id) { 3906 }
6
+ let(:cc_id) { 73 }
7
+ let(:cct_id) { 319529 }
8
+ let(:year) { "2017" }
9
+ let(:month) { "04" }
10
+ let(:credit_card_transactions) { client.credit_card_transactions }
11
+ let(:request_error) { Myfinance::RequestError }
12
+ let(:client) { Myfinance.client("0657bac70fdf5c06ce822719568f3636a9a07b87ba617ec7", 3682) }
13
+
14
+ describe "#find_all" do
15
+ context "when successful" do
16
+ subject { credit_card_transactions.find_all(entity_id, cc_id, year, month) }
17
+ before :each do
18
+ subject.build
19
+ end
20
+
21
+ it "returns a 200 OK response code" do
22
+ expect(subject.response.code).to eq(200)
23
+ end
24
+
25
+ it "returns a collection of CreditCardTransactions" do
26
+ expect(subject).to be_a(Myfinance::Entities::CreditCardTransactionCollection)
27
+ end
28
+
29
+ it "returns credit cards inside collection" do
30
+ expect(subject.collection.first).to be_a(cct_klass)
31
+ end
32
+ end
33
+
34
+ context "when supplying invalid IDs" do
35
+ subject { credit_card_transactions.find_all(nil, nil, 2017, "99") }
36
+ it "raises not found error with 404" do
37
+ expect { subject }.to raise_error(request_error) do |e|
38
+ expect(e.code).to eq(404)
39
+ expect(e.message).to eq("Not Found")
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#find" do
46
+ context "when successful" do
47
+ subject { credit_card_transactions.find(entity_id, cc_id, cct_id) }
48
+
49
+ it "returns a CreditCardTransaction" do
50
+ expect(subject).to be_a(cct_klass)
51
+ end
52
+ end
53
+
54
+ context "when supplying invalid IDs" do
55
+ subject { credit_card_transactions.find(nil, 666, 99999) }
56
+
57
+ it "raises not found error with 404" do
58
+ expect { subject }.to raise_error(request_error) do |e|
59
+ expect(e.code).to eq(404)
60
+ expect(e.message).to eq("Not Found")
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ describe "#create" do
67
+ context "when successful" do
68
+ let(:params) do
69
+ { amount: BigDecimal.new(199), occurred_at: Date.new(2017, 1, 1), description: "O Guia", credit_card_id: cc_id }
70
+ end
71
+ subject { credit_card_transactions.create(entity_id, cc_id, params) }
72
+
73
+ it "creates a CreditCardTransaction" do
74
+ expect(subject).to be_a(cct_klass)
75
+ end
76
+
77
+ it "contains given params" do
78
+ expect(subject).to have_attributes(params)
79
+ end
80
+ end
81
+
82
+ context "when given invalid params" do
83
+ let(:params) { { amount: BigDecimal.new(199), description: "O Guia" } }
84
+ subject { credit_card_transactions.create(entity_id, cc_id, params) }
85
+
86
+ it "returns 422 Unprocessable Entity" do
87
+ expect { subject }.to raise_error(request_error) do |e|
88
+ expect(e.code).to eq(422)
89
+ expect(e.message).to eq("Unprocessable Entity")
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "#update" do
96
+ let(:params) { { amount: BigDecimal.new(999), description: "O Guia Vol. II" } }
97
+ subject { credit_card_transactions.update(entity_id, cc_id, cct_id, params) }
98
+
99
+ it "updates a CreditCardTransaction" do
100
+ expect(subject).to be_a(cct_klass)
101
+ end
102
+
103
+ it "contains given params" do
104
+ expect(subject).to have_attributes(params)
105
+ end
106
+ end
107
+
108
+ describe "#destroy" do
109
+ let(:params) do
110
+ { amount: BigDecimal.new(199), occurred_at: Date.new(2017, 1, 1), description: "O Guia Obsoleto", credit_card_id: cc_id }
111
+ end
112
+ let(:new_cct) { credit_card_transactions.create(entity_id, cc_id, params) }
113
+
114
+ context "when successful" do
115
+ before :each do
116
+ credit_card_transactions.destroy(entity_id, cc_id, new_cct.id)
117
+ end
118
+
119
+ it "does not find deleted CreditCardTransaction" do
120
+ expect { credit_card_transactions.find(entity_id, cc_id, new_cct.id) }.to raise_error(request_error) do |e|
121
+ expect(e.code).to eq(404)
122
+ expect(e.message).to eq("Not Found")
123
+ end
124
+ end
125
+ end
126
+
127
+ context "when given invalid ID" do
128
+ it "returns 404 Not Found" do
129
+ expect { credit_card_transactions.destroy(entity_id, 6666, 424242) }.to raise_error(request_error) do |e|
130
+ expect(e.code).to eq(404)
131
+ expect(e.message).to eq("Not Found")
132
+ end
133
+ end
134
+ end
135
+ end
136
+
137
+ describe "#destroy_parcelled" do
138
+ let(:params) do
139
+ { amount: BigDecimal.new(199), occurred_at: Date.new(2017, 1, 1), number_of_parcels: 2, credit_card_id: cc_id }
140
+ end
141
+ let(:new_cct) { credit_card_transactions.create(entity_id, cc_id, params) }
142
+
143
+ before :each do
144
+ credit_card_transactions.destroy_parcelled(entity_id, cc_id, new_cct.id)
145
+ end
146
+
147
+ it "does not find first CreditCardTransaction" do
148
+ expect { credit_card_transactions.find(entity_id, cc_id, new_cct.id) }.to raise_error(request_error) do |e|
149
+ expect(e.code).to eq(404)
150
+ expect(e.message).to eq("Not Found")
151
+ end
152
+ end
153
+
154
+ it "does not find second CreditCardTransaction" do
155
+ expect { credit_card_transactions.find(entity_id, cc_id, new_cct.id + 1) }.to raise_error(request_error) do |e|
156
+ expect(e.code).to eq(404)
157
+ expect(e.message).to eq("Not Found")
158
+ end
159
+ end
160
+
161
+ end
162
+ end