myfinance 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7d232896f250a7b2c78111a9fd498491e38be7e
4
- data.tar.gz: 6ea40361789ab7210fae8e0fda62e2f04fe3d0b1
3
+ metadata.gz: d1eefa221205c3ed3d67d74d90c709f80dca6f4c
4
+ data.tar.gz: a4910d9b8d7af6d4c0f439a1f4a028557937b2cd
5
5
  SHA512:
6
- metadata.gz: 7d4096f7fd67ec4da65075b7f6e76bc93ef2bfb4495e46140a6a91d99550a82c398bf6fd1445cf172804bcc82fc6cff09cbe9d5e26f9587fb6c664607b05cda4
7
- data.tar.gz: 1d72e21517c1aabc1030c77c0486776d36a1ac8c394fa100e5714e37c1cf1001b93f8343f8402666b7f8b9d2839399b46ee6f4930a4f9c801c97bfe7a7979ae6
6
+ metadata.gz: 38adecf14ed9cb00370f632ad44479be2f87b24147a91da63cc08e0c0843d9366c2dbaf9e0a0266adb726d957d1cb251faa37f632ee2b075ea57f46fc5fa0414
7
+ data.tar.gz: d55d18de0c4a758f2d2b5057e20f03483824fb3050251f423b31f97e5f688474133c84fb5af261469104f0ba80037de14d340bd6d88670e39afd0ce6905ce341
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- myfinance (1.0.0)
4
+ myfinance (1.1.0)
5
5
  mime-types (~> 2.99)
6
6
  multi_json (~> 1.11)
7
7
  typhoeus (~> 0.8)
data/README.md CHANGED
@@ -97,6 +97,18 @@ client = Myfinance.client("YOUR_TOKEN_HERE")
97
97
  <code>client.entities.find</code>
98
98
  </td>
99
99
  </tr>
100
+ <tr>
101
+ <td><code>GET</code></td>
102
+ <td>
103
+ <a href="https://app.myfinance.com.br/docs/api/entities#get_show" target="_blank">
104
+ /entities
105
+ </a>
106
+ </td>
107
+ <td>
108
+ <code>client.entities.find_by</code>
109
+ </td>
110
+ </tr>
111
+
100
112
  </table>
101
113
 
102
114
  #### [FinancialTransactions](https://app.myfinance.com.br/docs/api/financial_transactions)
@@ -503,6 +515,17 @@ client = Myfinance.client("YOUR_TOKEN_HERE")
503
515
  <code>client.deposit_accounts.find</code>
504
516
  </td>
505
517
  </tr>
518
+ <tr>
519
+ <td><code>GET</code></td>
520
+ <td>
521
+ <a href="https://app.myfinance.com.br/docs/api/deposit_accounts#get_show" target="_blank">
522
+ /entities/:entity_id/deposit_accounts
523
+ </a>
524
+ </td>
525
+ <td>
526
+ <code>client.deposit_accounts.find_by</code>
527
+ </td>
528
+ </tr>
506
529
  <tr>
507
530
  <td><code>POST</code></td>
508
531
  <td>
@@ -1083,6 +1106,12 @@ To install this gem onto your local machine, run `bundle exec rake install`.
1083
1106
 
1084
1107
  To release a new version, update the version number in `lib/myfinance/version.rb`, run `bundle install` and commit & push the changes to the repository. Then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). Make sure you have publishing rights for the gem on RubyGems beforehand, though.
1085
1108
 
1109
+ After publishing the new version, add a comment to each pull request that was included in this release like this:
1110
+
1111
+ ```
1112
+ :shipit: released on [version x.y.z](https://rubygems.org/gems/myfinance/versions/x.y.z)
1113
+ ```
1114
+
1086
1115
  ## Contributing
1087
1116
 
1088
1117
  Bug reports and pull requests are welcome on GitHub at https://github.com/myfreecomm/myfinance-client-ruby. This project is intended to be a safe and welcoming space for collaboration.
@@ -16,9 +16,7 @@ module Myfinance
16
16
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#get_index
17
17
  #
18
18
  def find_all(entity_id)
19
- http.get(
20
- "/entities/#{entity_id}/deposit_accounts", body: {}
21
- ) do |response|
19
+ http.get("/entities/#{entity_id}/deposit_accounts", body: {}) do |response|
22
20
  respond_with_collection(response)
23
21
  end
24
22
  end
@@ -32,13 +30,20 @@ module Myfinance
32
30
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#get_show
33
31
  #
34
32
  def find(entity_id, id)
35
- http.get(
36
- "/entities/#{entity_id}/deposit_accounts/#{id}", body: {}
37
- ) do |response|
33
+ http.get("/entities/#{entity_id}/deposit_accounts/#{id}", body: {}) do |response|
38
34
  respond_with_object(response, "deposit_account")
39
35
  end
40
36
  end
41
37
 
38
+ def find_by(entity_id, params = {})
39
+ sanitized_params = search_params(params)
40
+ endpoint = encode_endpoint(entity_id, sanitized_params)
41
+
42
+ http.get(endpoint, body: {}) do |response|
43
+ respond_with_collection(response)
44
+ end
45
+ end
46
+
42
47
  #
43
48
  # Creates a deposit account of entity
44
49
  #
@@ -48,10 +53,7 @@ module Myfinance
48
53
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#post_create
49
54
  #
50
55
  def create(entity_id, params = {})
51
- http.post(
52
- "/entities/#{entity_id}/deposit_accounts",
53
- body: { deposit_account: params }
54
- ) do |response|
56
+ http.post("/entities/#{entity_id}/deposit_accounts", body: { deposit_account: params }) do |response|
55
57
  respond_with_object(response, "deposit_account")
56
58
  end
57
59
  end
@@ -65,10 +67,7 @@ module Myfinance
65
67
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#put_update
66
68
  #
67
69
  def update(entity_id, id, params = {})
68
- http.put(
69
- "/entities/#{entity_id}/deposit_accounts/#{id}",
70
- body: { deposit_account: params }
71
- ) do |response|
70
+ http.put("/entities/#{entity_id}/deposit_accounts/#{id}", body: { deposit_account: params }) do |response|
72
71
  respond_with_object(response, "deposit_account")
73
72
  end
74
73
  end
@@ -82,12 +81,20 @@ module Myfinance
82
81
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#delete_destroy
83
82
  #
84
83
  def destroy(entity_id, id)
85
- http.delete(
86
- "/entities/#{entity_id}/deposit_accounts/#{id}", body: {}
87
- ) do |response|
84
+ http.delete("/entities/#{entity_id}/deposit_accounts/#{id}", body: {}) do |response|
88
85
  respond_with_object(response, "deposit_account")
89
86
  end
90
87
  end
88
+
89
+ private
90
+
91
+ def search_params(params)
92
+ params.map { |key, value| "search[#{key}]=#{value}" }.join("&")
93
+ end
94
+
95
+ def encode_endpoint(entity_id, path)
96
+ URI.encode("/entities/#{entity_id}/deposit_accounts?#{path}")
97
+ end
91
98
  end
92
99
  end
93
100
  end
@@ -34,6 +34,25 @@ module Myfinance
34
34
  respond_with_object(response, 'entity')
35
35
  end
36
36
  end
37
+
38
+ def find_by(params = {})
39
+ sanitized_params = search_params(params)
40
+ endpoint = encode_endpoint(sanitized_params)
41
+
42
+ http.get(endpoint, body: {}) do |response|
43
+ respond_with_collection(response)
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def search_params(params)
50
+ params.map { |key, value| "search[#{key}]=#{value}" }.join("&")
51
+ end
52
+
53
+ def encode_endpoint(path)
54
+ URI.encode("/entities?#{path}")
55
+ end
37
56
  end
38
57
  end
39
58
  end
@@ -1,3 +1,3 @@
1
1
  module Myfinance
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -2,10 +2,11 @@ require "spec_helper"
2
2
 
3
3
  describe Myfinance::Resources::DepositAccount, vcr: true do
4
4
  let(:entity_klass) { Myfinance::Entities::DepositAccount }
5
+ let(:entity_id) { 3798 }
5
6
 
6
7
  describe "#find_all" do
7
8
  context "when success" do
8
- subject { client.deposit_accounts.find_all(3798) }
9
+ subject { client.deposit_accounts.find_all(entity_id) }
9
10
 
10
11
  it "show all deposit accounts" do
11
12
  subject.build
@@ -20,7 +21,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
20
21
 
21
22
  it "raises Myfinance::RequestError with 401 status code" do
22
23
  expect {
23
- client.deposit_accounts.find_all(3798)
24
+ client.deposit_accounts.find_all(entity_id)
24
25
  }.to raise_error(Myfinance::RequestError) do |error|
25
26
  expect(error.code).to eq(401)
26
27
  end
@@ -31,7 +32,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
31
32
  describe "#find" do
32
33
  context "when success" do
33
34
  it "show a deposit account successfully" do
34
- result = client.deposit_accounts.find(3798, 14268)
35
+ result = client.deposit_accounts.find(entity_id, 14268)
35
36
  expect(result).to be_a(entity_klass)
36
37
  expect(result.name).to eq("Carteira")
37
38
  end
@@ -40,7 +41,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
40
41
  context "when error" do
41
42
  it "raises Myfinance::RequestError with 404 status code" do
42
43
  expect {
43
- client.deposit_accounts.find(3798, 888888)
44
+ client.deposit_accounts.find(entity_id, 888888)
44
45
  }.to raise_error(Myfinance::RequestError) do |error|
45
46
  expect(error.code).to eq(404)
46
47
  end
@@ -48,6 +49,33 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
48
49
  end
49
50
  end
50
51
 
52
+ describe "#find_by" do
53
+ context "when succesful" do
54
+ subject { client.deposit_accounts.find_by(entity_id, name: "Carteira") }
55
+
56
+ it "returns a collection of DepositAccounts" do
57
+ expect(subject).to be_a(Myfinance::Entities::DepositAccountCollection)
58
+ end
59
+
60
+ it "returns matched DepositAccount" do
61
+ da = subject.collection.first
62
+ expect(da.name).to eq("Carteira")
63
+ end
64
+
65
+ it "does not match other DepositAccounts" do
66
+ expect(subject.collection.size).to eq(1)
67
+ end
68
+
69
+ context "when not found" do
70
+ subject { client.deposit_accounts.find_by(entity_id, name: "NAO_EXISTE_ESSA_DEPOSIT_ACCOUNT_42") }
71
+
72
+ it "returns an empty collection" do
73
+ expect(subject.collection).to be_empty
74
+ end
75
+ end
76
+ end
77
+ end
78
+
51
79
  describe "#create" do
52
80
  context "when success" do
53
81
  let(:params) do
@@ -57,7 +85,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
57
85
  currency_id: 1,
58
86
  deposit_account_type_id: 2,
59
87
  description: "Deposit account test",
60
- entity_id: 3798,
88
+ entity_id: entity_id,
61
89
  force_destroy: false,
62
90
  imported_from_sync: false,
63
91
  name: "Caixa 18",
@@ -67,7 +95,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
67
95
  end
68
96
 
69
97
  it "creates a deposit account successfully" do
70
- result = client.deposit_accounts.create(3798, params)
98
+ result = client.deposit_accounts.create(entity_id, params)
71
99
  expect(result).to be_a(entity_klass)
72
100
  end
73
101
  end
@@ -75,7 +103,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
75
103
  context "when error" do
76
104
  it "raises Myfinance::RequestError with 422 status code" do
77
105
  expect {
78
- client.deposit_accounts.create(3798, {})
106
+ client.deposit_accounts.create(entity_id, {})
79
107
  }.to raise_error(Myfinance::RequestError) do |error|
80
108
  expect(error.code).to eq(422)
81
109
  end
@@ -87,7 +115,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
87
115
  context "when success" do
88
116
  it "updates a deposit account successfully" do
89
117
  expect(
90
- client.deposit_accounts.update(3798, 14820, { name: "Name" })
118
+ client.deposit_accounts.update(entity_id, 14820, { name: "Name" })
91
119
  ).to be_a(entity_klass)
92
120
  end
93
121
  end
@@ -95,7 +123,7 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
95
123
  context "when invalid" do
96
124
  it "raises Myfinance::RequestError with 422 status code" do
97
125
  expect {
98
- client.deposit_accounts.update(3798, 14820, { name: "" })
126
+ client.deposit_accounts.update(entity_id, 14820, { name: "" })
99
127
  }.to raise_error(Myfinance::RequestError) do |error|
100
128
  expect(error.code).to eq(422)
101
129
  end
@@ -106,14 +134,14 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
106
134
  describe "#delete" do
107
135
  context "when success" do
108
136
  it "destroy a deposit account successfully" do
109
- expect(client.deposit_accounts.destroy(3798, 14820)).to be_truthy
137
+ expect(client.deposit_accounts.destroy(entity_id, 14820)).to be_truthy
110
138
  end
111
139
  end
112
140
 
113
141
  context "when error" do
114
142
  it "raises Myfinance::RequestError with 404 status code" do
115
143
  expect {
116
- client.deposit_accounts.destroy(3798, 888888)
144
+ client.deposit_accounts.destroy(entity_id, 888888)
117
145
  }.to raise_error(Myfinance::RequestError) do |error|
118
146
  expect(error.code).to eq(404)
119
147
  end
@@ -60,4 +60,29 @@ describe Myfinance::Resources::Entity do
60
60
  end
61
61
  end
62
62
  end
63
+
64
+ describe "#find_by", vcr: true do
65
+ context "when successful" do
66
+ subject { client.entities.find_by(name_contains: "Minhas") }
67
+
68
+ it "returns a collection of Entities" do
69
+ expect(subject).to be_a(Myfinance::Entities::EntityCollection)
70
+ end
71
+
72
+ it "returns Entity that matches search params" do
73
+ entity = subject.collection.first
74
+
75
+ expect(entity.id).to eq(3798)
76
+ expect(entity.name).to eq("Minhas Finanças")
77
+ end
78
+ end
79
+
80
+ context "when not found" do
81
+ subject { client.entities.find_by(name: "ENTIDADE_QUE_NAO_EXISTE_42") }
82
+
83
+ it "returns an empty colleciton" do
84
+ expect(subject.collection).to be_empty
85
+ end
86
+ end
87
+ end
63
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myfinance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Hertz
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-03-24 00:00:00.000000000 Z
14
+ date: 2017-03-27 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: typhoeus