myfinance 1.1.0 → 1.2.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: d1eefa221205c3ed3d67d74d90c709f80dca6f4c
4
- data.tar.gz: a4910d9b8d7af6d4c0f439a1f4a028557937b2cd
3
+ metadata.gz: fd16eafab7c1a94cdb638ad2e9efa9c942029289
4
+ data.tar.gz: b71308b1b0e4cd9629698d185cbd9ae7a70d242d
5
5
  SHA512:
6
- metadata.gz: 38adecf14ed9cb00370f632ad44479be2f87b24147a91da63cc08e0c0843d9366c2dbaf9e0a0266adb726d957d1cb251faa37f632ee2b075ea57f46fc5fa0414
7
- data.tar.gz: d55d18de0c4a758f2d2b5057e20f03483824fb3050251f423b31f97e5f688474133c84fb5af261469104f0ba80037de14d340bd6d88670e39afd0ce6905ce341
6
+ metadata.gz: c186bac4b437d5a1ace502f62985389aa0637cf9614886bc7805e5d6fc619f979e7c41e5810a63d2d113bb240b2ca3d2a88f4310aad64dd4a8b588ad882be856
7
+ data.tar.gz: 9eba0d8098e7be11dd9e2694d2f2e32a2c626987885437f41fdaad42b016d43bb4a4aa1a463f38fa3f856f471ac57d3106b163b35fede4d60d1a5261acfa140c
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.0
4
+ ### Endpoints improvements
5
+ - The `#find_all` method of all endpoints that support filtering can now receive parameters to refine the results and paginate
6
+ ### Deprecations
7
+ - No longer supports `#find_by`. Use `#find_all` instead, passing filters as a hash if needed.
8
+ ### Fixes
9
+ - Params encoding set to Rack
10
+
11
+ ## v1.1.0
12
+
13
+ ### New Endpoints
14
+ - Add endpoint Deposit Accounts filtering
15
+ - Add endpoint Entities filtering
16
+
3
17
  ## v1.0.0
4
18
 
5
19
  ### New Endpoints
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- myfinance (1.1.0)
4
+ myfinance (1.2.0)
5
5
  mime-types (~> 2.99)
6
6
  multi_json (~> 1.11)
7
7
  typhoeus (~> 0.8)
data/README.md CHANGED
@@ -97,18 +97,6 @@ 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
-
112
100
  </table>
113
101
 
114
102
  #### [FinancialTransactions](https://app.myfinance.com.br/docs/api/financial_transactions)
@@ -515,17 +503,6 @@ client = Myfinance.client("YOUR_TOKEN_HERE")
515
503
  <code>client.deposit_accounts.find</code>
516
504
  </td>
517
505
  </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>
529
506
  <tr>
530
507
  <td><code>POST</code></td>
531
508
  <td>
@@ -656,17 +633,6 @@ client = Myfinance.client("YOUR_TOKEN_HERE")
656
633
  <code>client.classification_centers.find</code>
657
634
  </td>
658
635
  </tr>
659
- <tr>
660
- <td><code>GET</code></td>
661
- <td>
662
- <a href="https://app.myfinance.com.br/docs/api/classification_centers#get_show" target="_blank">
663
- /classification_centers
664
- </a>
665
- </td>
666
- <td>
667
- <code>client.classification_centers.find_by</code>
668
- </td>
669
- </tr>
670
636
  <tr>
671
637
  <td><code>POST</code></td>
672
638
  <td>
@@ -721,17 +687,6 @@ client = Myfinance.client("YOUR_TOKEN_HERE")
721
687
  <code>client.people.find_all</code>
722
688
  </td>
723
689
  </tr>
724
- <tr>
725
- <td><code>GET</code></td>
726
- <td>
727
- <a href="https://app.myfinance.com.br/docs/api/people" target="_blank">
728
- /people
729
- </a>
730
- </td>
731
- <td>
732
- <code>client.people.find_by</code>
733
- </td>
734
- </tr>
735
690
  <tr>
736
691
  <td><code>GET</code></td>
737
692
  <td>
@@ -24,7 +24,8 @@ module Myfinance
24
24
  params: args[:params],
25
25
  body: body,
26
26
  headers: headers,
27
- accept_encoding: "gzip"
27
+ accept_encoding: "gzip",
28
+ params_encoding: :rack
28
29
  }.reject { |_k,v| v.nil? }
29
30
  end
30
31
 
@@ -10,6 +10,18 @@ module Myfinance
10
10
 
11
11
  private
12
12
 
13
+ def build_search_endpoint(params)
14
+ query_string = query(params).join("&")
15
+ URI.encode("#{endpoint}?#{query_string}")
16
+ end
17
+
18
+ def query(params)
19
+ page = params.delete(:page)
20
+ query = params.map { |key, value| "search[#{key}]=#{value}" }
21
+ query << "page=#{page}" if page
22
+ query
23
+ end
24
+
13
25
  def respond_with_collection(response)
14
26
  collection_klass = Myfinance::Entities.const_get("#{entity_klass_name}Collection")
15
27
  collection_klass.build(response)
@@ -15,8 +15,10 @@ module Myfinance
15
15
  #
16
16
  # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#get_index
17
17
  #
18
- def find_all
19
- http.get("/categories", body: {}) do |response|
18
+ def find_all(params = {})
19
+ search_endpoint = build_search_endpoint(params)
20
+
21
+ http.get(search_endpoint) do |response|
20
22
  respond_with_collection(response)
21
23
  end
22
24
  end
@@ -35,22 +37,6 @@ module Myfinance
35
37
  end
36
38
  end
37
39
 
38
- #
39
- # Find a category by attributes
40
- #
41
- # [API]
42
- # Method: <tt>GET /categories/:id</tt>
43
- #
44
- # Documentation: https://sandbox.myfinance.com.br/docs/api/categories#get_show
45
- #
46
- def find_by(params = {})
47
- path = params.map { |k, v| "search[#{k}]=#{v}" }.join("&")
48
-
49
- http.get(URI.encode("/categories?#{path}"), body: {}) do |response|
50
- respond_with_collection(response)
51
- end
52
- end
53
-
54
40
  #
55
41
  # Creates a category
56
42
  #
@@ -92,6 +78,12 @@ module Myfinance
92
78
  respond_with_object response, "category"
93
79
  end
94
80
  end
81
+
82
+ private
83
+
84
+ def endpoint
85
+ "/categories"
86
+ end
95
87
  end
96
88
  end
97
89
  end
@@ -8,15 +8,17 @@ module Myfinance
8
8
  #
9
9
  class ClassificationCenter < Base
10
10
  #
11
- # List all classification centers
11
+ # List all classification centers, supplying optional params for refinement
12
12
  #
13
13
  # [API]
14
14
  # Method: <tt>GET /classification_centers</tt>
15
15
  #
16
16
  # Documentation: https://app.myfinance.com.br/docs/api/classification_centers#get_index
17
17
  #
18
- def find_all
19
- http.get("/classification_centers", body: {}) do |response|
18
+ def find_all(params = {})
19
+ search_endpoint = build_search_endpoint(params)
20
+
21
+ http.get(search_endpoint) do |response|
20
22
  respond_with_collection(response)
21
23
  end
22
24
  end
@@ -34,24 +36,6 @@ module Myfinance
34
36
  respond_with_object response, "classification_center"
35
37
  end
36
38
  end
37
-
38
- #
39
- # Find classification centers by attributtes
40
- #
41
- # [API]
42
- # Method: <tt>GET /classification_centers</tt>
43
- #
44
- # Documentation: https://app.myfinance.com.br/docs/api/classification_centers
45
- #
46
- def find_by(params)
47
- values = params.map { |k,v| "search[#{k}]=#{v}" }.join("&")
48
- http.get(
49
- URI.encode("/classification_centers?#{values}"), body: {}
50
- ) do |response|
51
- respond_with_collection(response)
52
- end
53
- end
54
-
55
39
  #
56
40
  # Creates a classification center
57
41
  #
@@ -98,6 +82,12 @@ module Myfinance
98
82
  respond_with_object response, "classification_center"
99
83
  end
100
84
  end
85
+
86
+ private
87
+
88
+ def endpoint
89
+ "/classification_centers"
90
+ end
101
91
  end
102
92
  end
103
93
  end
@@ -8,15 +8,17 @@ module Myfinance
8
8
  #
9
9
  class DepositAccount < Base
10
10
  #
11
- # List all deposit accounts of entity
11
+ # List all deposit accounts of entity with optional filters for refinement
12
12
  #
13
13
  # [API]
14
14
  # Method: <tt>GET /entities/:entity_id/deposit_accounts</tt>
15
15
  #
16
16
  # Documentation: https://app.myfinance.com.br/docs/api/deposit_accounts#get_index
17
17
  #
18
- def find_all(entity_id)
19
- http.get("/entities/#{entity_id}/deposit_accounts", body: {}) do |response|
18
+ def find_all(entity_id, params = {})
19
+ search_endpoint = build_search_endpoint(entity_id, params)
20
+
21
+ http.get(search_endpoint) do |response|
20
22
  respond_with_collection(response)
21
23
  end
22
24
  end
@@ -35,15 +37,6 @@ module Myfinance
35
37
  end
36
38
  end
37
39
 
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
-
47
40
  #
48
41
  # Creates a deposit account of entity
49
42
  #
@@ -88,12 +81,15 @@ module Myfinance
88
81
 
89
82
  private
90
83
 
91
- def search_params(params)
92
- params.map { |key, value| "search[#{key}]=#{value}" }.join("&")
84
+ def build_search_endpoint(entity_id, params)
85
+ query_string = query(params).join("&")
86
+ deposit_endpoint = endpoint(entity_id)
87
+
88
+ URI.encode("#{deposit_endpoint}?#{query_string}")
93
89
  end
94
90
 
95
- def encode_endpoint(entity_id, path)
96
- URI.encode("/entities/#{entity_id}/deposit_accounts?#{path}")
91
+ def endpoint(entity_id)
92
+ "/entities/#{entity_id}/deposit_accounts"
97
93
  end
98
94
  end
99
95
  end
@@ -15,8 +15,10 @@ module Myfinance
15
15
  #
16
16
  # Documentation: https://app.myfinance.com.br/docs/api/entities#get_index
17
17
  #
18
- def find_all
19
- http.get('/entities', body: {}) do |response|
18
+ def find_all(params = {})
19
+ search_endpoint = build_search_endpoint(params)
20
+
21
+ http.get(search_endpoint) do |response|
20
22
  respond_with_collection(response)
21
23
  end
22
24
  end
@@ -35,23 +37,10 @@ module Myfinance
35
37
  end
36
38
  end
37
39
 
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
40
  private
48
41
 
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}")
42
+ def endpoint
43
+ "/entities"
55
44
  end
56
45
  end
57
46
  end
@@ -8,35 +8,22 @@ module Myfinance
8
8
  #
9
9
  class Person < Base
10
10
  #
11
- # List all people
11
+ # List all people with optional filters for refinement
12
12
  #
13
13
  # [API]
14
14
  # Method: <tt>GET /people</tt>
15
15
  #
16
16
  # Documentation: https://app.myfinance.com.br/docs/api/people#get_index
17
17
  #
18
- def find_all
19
- http.get("/people", body: {}) do |response|
20
- respond_with_collection(response)
21
- end
22
- end
23
-
24
- #
25
- # Find people by attributtes
26
- #
27
- # [API]
28
- # Method: <tt>GET /people</tt>
29
- #
30
- # Documentation: https://app.myfinance.com.br/docs/api/people#get_index
31
- #
32
- def find_by(params)
33
- values = params.map { |k,v| "search[#{k}]=#{v}" }.join("&")
18
+ def find_all(params = {})
19
+ search_endpoint = build_search_endpoint(params)
34
20
 
35
- http.get(URI.encode("/people?#{values}"), body: {}) do |response|
21
+ http.get(search_endpoint) do |response|
36
22
  respond_with_collection(response)
37
23
  end
38
24
  end
39
25
 
26
+
40
27
  #
41
28
  # Show a person
42
29
  #
@@ -92,6 +79,12 @@ module Myfinance
92
79
  respond_with_object response, "person"
93
80
  end
94
81
  end
82
+
83
+ private
84
+
85
+ def endpoint
86
+ "/people"
87
+ end
95
88
  end
96
89
  end
97
90
  end
@@ -1,3 +1,3 @@
1
1
  module Myfinance
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -5,7 +5,7 @@ describe Myfinance::Request do
5
5
  subject { described_class.new({ method: 'post', params: {}, url: Myfinance.configuration.url, user_agent: 'My Test User-Agent', token: 'my-auth-hash' }) }
6
6
 
7
7
  it "does a request using Typhoeus::Request" do
8
- expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip" }).and_return(double(run: true, response: true))
8
+ expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip", params_encoding: :rack }).and_return(double(run: true, response: true))
9
9
  subject.run
10
10
  end
11
11
 
@@ -30,7 +30,7 @@ describe Myfinance::Request do
30
30
  subject { described_class.new({ method: 'post', params: {}, url: Myfinance.configuration.url, user_agent: 'My Test User-Agent', token: 'my-auth-hash', account_id: "" }) }
31
31
 
32
32
  it "does not add ACCOUNT_ID on headers" do
33
- expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip" }).and_return(double(run: true, response: true))
33
+ expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip", params_encoding: :rack }).and_return(double(run: true, response: true))
34
34
  subject.run
35
35
  end
36
36
  end
@@ -39,7 +39,7 @@ describe Myfinance::Request do
39
39
  subject { described_class.new({ method: 'post', params: {}, url: Myfinance.configuration.url, user_agent: 'My Test User-Agent', token: 'my-auth-hash', account_id: nil }) }
40
40
 
41
41
  it "does not add ACCOUNT_ID on headers" do
42
- expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip" }).and_return(double(run: true, response: true))
42
+ expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip", params_encoding: :rack }).and_return(double(run: true, response: true))
43
43
  subject.run
44
44
  end
45
45
  end
@@ -48,7 +48,7 @@ describe Myfinance::Request do
48
48
  subject { described_class.new({ method: 'post', params: {}, url: Myfinance.configuration.url, user_agent: 'My Test User-Agent', token: 'my-auth-hash', account_id: 12 }) }
49
49
 
50
50
  it "does not add ACCOUNT_ID on headers" do
51
- expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=", "ACCOUNT_ID" => 12 }, accept_encoding: "gzip" }).and_return(double(run: true, response: true))
51
+ expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=", "ACCOUNT_ID" => 12 }, accept_encoding: "gzip", params_encoding: :rack }).and_return(double(run: true, response: true))
52
52
  subject.run
53
53
  end
54
54
  end
@@ -10,83 +10,73 @@ describe Myfinance::Resources::Category, vcr: true do
10
10
  it "show all categories successfully" do
11
11
  expect(subject.class).to eq(Myfinance::Entities::CategoryCollection)
12
12
  expect(subject.collection.first.class).to eq(entity_klass)
13
- expect(subject.collection.first.full_name).to eq("Alimentação")
13
+ expect(subject.collection.first.full_name).to eq("Moradia / Água e Esgoto")
14
14
  end
15
15
  end
16
16
 
17
- context "when not found" do
18
- let(:client) { Myfinance.client("") }
17
+ it "find categories by attributes" do
18
+ params = { name: "Alimentação" }
19
+ result = client.categories.find_all(params)
19
20
 
20
- it "raises Myfinance::RequestError with 401 status code" do
21
- expect {
22
- client.categories.find_all
23
- }.to raise_error(Myfinance::RequestError) do |error|
24
- expect(error.code).to eql(401)
25
- end
21
+ expect(result).to be_a(Myfinance::Entities::CategoryCollection)
22
+ expect(result.collection.first).to be_a(entity_klass)
23
+ expect(result.collection.first.name).to eql("Alimentação")
24
+ end
25
+ end
26
+
27
+ context "when error" do
28
+ let(:client) { Myfinance.client("") }
29
+
30
+ it "raises Myfinance::RequestError with 401 status code" do
31
+ expect { client.categories.find_all({}) }.to raise_error(Myfinance::RequestError) do |error|
32
+ expect(error.code).to eql(401)
33
+ end
34
+ end
35
+ end
36
+
37
+ context "when not found" do
38
+ let(:client) { Myfinance.client("") }
39
+
40
+ it "raises Myfinance::RequestError with 401 status code" do
41
+ expect { client.categories.find_all }.to raise_error(Myfinance::RequestError) do |error|
42
+ expect(error.code).to eql(401)
26
43
  end
27
44
  end
28
45
  end
29
46
 
30
47
  describe "#find" do
31
48
  context "with success" do
32
- subject { client.categories.find(532314) }
49
+ subject { client.categories.find(532323) }
33
50
 
34
51
  it "returns a category successfully" do
35
52
  expect(subject.class).to eql(entity_klass)
36
- expect(subject.id).to eql(532314)
53
+ expect(subject.id).to eql(532323)
37
54
  end
38
55
  end
39
56
 
40
57
  context "with error" do
41
58
  it "raises Myfinance::RequestError with 404 status code" do
42
- expect {
43
- client.categories.find(88888888)
44
- }.to raise_error(Myfinance::RequestError) do |error|
59
+ expect { client.categories.find(88888888) }.to raise_error(Myfinance::RequestError) do |error|
45
60
  expect(error.code).to eql(404)
46
61
  end
47
62
  end
48
63
  end
49
64
  end
50
65
 
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
-
74
66
  describe "#create" do
75
- let(:params) { { name: "Category 1" } }
67
+ let(:params) { { name: "Categoria 42 do Marvin" } }
76
68
 
77
69
  context "with success" do
78
70
  it "creates a category successfully" do
79
71
  result = client.categories.create(params)
80
72
  expect(result).to be_a(entity_klass)
81
- expect(result.name).to eql("Category 1")
73
+ expect(result.name).to eql("Categoria 42 do Marvin")
82
74
  end
83
75
  end
84
76
 
85
77
  context "with error" do
86
78
  it "raises Myfinance::RequestError with 422 status code" do
87
- expect {
88
- client.categories.create({})
89
- }.to raise_error(Myfinance::RequestError) do |error|
79
+ expect { client.categories.create({}) }.to raise_error(Myfinance::RequestError) do |error|
90
80
  expect(error.code).to eql(422)
91
81
  end
92
82
  end
@@ -96,17 +86,13 @@ describe Myfinance::Resources::Category, vcr: true do
96
86
  describe "#update" do
97
87
  context "with success" do
98
88
  it "updates a category successfully" do
99
- expect(
100
- client.categories.update(548083, { name: "Category updated" })
101
- ).to be_a(entity_klass)
89
+ expect(client.categories.update(548083, { name: "Category updated" })).to be_a(entity_klass)
102
90
  end
103
91
  end
104
92
 
105
93
  context "with error" do
106
94
  it "raises Myfinance::RequestError with 404 status code" do
107
- expect {
108
- client.categories.update(88888888, {})
109
- }.to raise_error(Myfinance::RequestError) do |error|
95
+ expect { client.categories.update(88888888, {}) }.to raise_error(Myfinance::RequestError) do |error|
110
96
  expect(error.code).to eql(404)
111
97
  end
112
98
  end
@@ -122,15 +108,13 @@ describe Myfinance::Resources::Category, vcr: true do
122
108
  describe "#destroy" do
123
109
  context "with success" do
124
110
  it "destroy a category successfully" do
125
- expect(client.categories.destroy(532314)).to be_truthy
111
+ expect(client.categories.destroy(532350)).to be_truthy
126
112
  end
127
113
  end
128
114
 
129
115
  context "with error" do
130
116
  it "raises Myfinance::RequestError with 404 status code" do
131
- expect {
132
- client.categories.destroy(88888888)
133
- }.to raise_error(Myfinance::RequestError) do |error|
117
+ expect { client.categories.destroy(88888888) }.to raise_error(Myfinance::RequestError) do |error|
134
118
  expect(error.code).to eql(404)
135
119
  end
136
120
  end
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Myfinance::Resources::ClassificationCenter, vcr: true do
4
4
  let(:entity_klass) { Myfinance::Entities::ClassificationCenter }
5
+ let(:page) { 2 }
5
6
 
6
7
  let(:entity_collection) do
7
8
  Myfinance::Entities::ClassificationCenterCollection
@@ -16,6 +17,46 @@ describe Myfinance::Resources::ClassificationCenter, vcr: true do
16
17
  expect(subject.collection.first).to be_a(entity_klass)
17
18
  expect(subject.collection.first.name).to eq("Centro de Custo Tal")
18
19
  end
20
+
21
+ context "with params" do
22
+ let(:params) { { entity_id_equals: 3798 } }
23
+
24
+ it "find by name successfully" do
25
+ params[:name_equals] = "Centro de Custo Tal"
26
+ outcome = client.classification_centers.find_all(params)
27
+
28
+ expect(outcome).to be_a(entity_collection)
29
+ expect(outcome.collection.first).to be_a(entity_klass)
30
+ expect(outcome.collection.first.name).to eq("Centro de Custo Tal")
31
+ end
32
+
33
+ it "find with special characters" do
34
+ params[:name_equals] = "Socialização 2"
35
+ outcome = client.classification_centers.find_all(params)
36
+
37
+ expect(outcome).to be_a(entity_collection)
38
+ expect(outcome.collection.first).to be_a(entity_klass)
39
+ expect(outcome.collection.first.name).to eq("Socialização 2")
40
+ end
41
+
42
+ it "returns a empty classification center successfully" do
43
+ params[:name_equals] = "Any"
44
+ outcome = client.classification_centers.find_all(params)
45
+
46
+ expect(outcome).to be_a(entity_collection)
47
+ expect(outcome.collection.first).to be_falsy
48
+ end
49
+ end
50
+
51
+ context "when paging" do
52
+ let(:search_params) { { page: page, entity_id_equals: 3798, name_contains: "Centro" } }
53
+ subject { client.classification_centers.find_all(search_params) }
54
+
55
+ it "returns paginated url" do
56
+ url = subject.response.request.base_url
57
+ expect(url).to include("page=#{page}")
58
+ end
59
+ end
19
60
  end
20
61
 
21
62
  context "when error" do
@@ -52,36 +93,6 @@ describe Myfinance::Resources::ClassificationCenter, vcr: true do
52
93
  end
53
94
  end
54
95
 
55
- describe "#find_by" do
56
- context "when success" do
57
- it "find a classification centers by name successfully" do
58
- result = client.classification_centers.find_by(
59
- { entity_id_equals: 3798, name_equals: "Centro de Custo Tal" }
60
- )
61
- expect(result).to be_a(entity_collection)
62
- expect(result.collection.first).to be_a(entity_klass)
63
- expect(result.collection.first.name).to eq("Centro de Custo Tal")
64
- end
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
-
75
- it "returns a empty classification center successfully" do
76
- result = client.classification_centers.find_by(
77
- { entity_id_equals: 3798, name_equals: "Any" }
78
- )
79
- expect(result).to be_a(entity_collection)
80
- expect(result.collection.first).to be_falsy
81
- end
82
- end
83
- end
84
-
85
96
  describe "#create" do
86
97
  context "when success" do
87
98
  let(:params) do
@@ -12,7 +12,32 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
12
12
  subject.build
13
13
  expect(subject).to be_a(Myfinance::Entities::DepositAccountCollection)
14
14
  expect(subject.collection.first).to be_a(entity_klass)
15
- expect(subject.collection.first.name).to eq("Carteira")
15
+ expect(subject.collection.first.name).to eq("Caixa Grande")
16
+ end
17
+
18
+ context "with params" do
19
+ subject { client.deposit_accounts.find_all(entity_id, name: "Carteira") }
20
+ end
21
+
22
+ it "returns a collection of DepositAccounts" do
23
+ expect(subject).to be_a(Myfinance::Entities::DepositAccountCollection)
24
+ end
25
+
26
+ it "returns matched DepositAccount" do
27
+ da = subject.collection.first
28
+ expect(da.name).to eq("Caixa Grande")
29
+ end
30
+
31
+ it "does not match other DepositAccounts" do
32
+ expect(subject.collection.size).to eq(3)
33
+ end
34
+
35
+ context "when not found" do
36
+ subject { client.deposit_accounts.find_all(entity_id, name: "NAO_EXISTE_ESSA_DEPOSIT_ACCOUNT_42") }
37
+
38
+ it "returns an empty collection" do
39
+ expect(subject.collection).to be_empty
40
+ end
16
41
  end
17
42
  end
18
43
 
@@ -49,33 +74,6 @@ describe Myfinance::Resources::DepositAccount, vcr: true do
49
74
  end
50
75
  end
51
76
 
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
-
79
77
  describe "#create" do
80
78
  context "when success" do
81
79
  let(:params) do
@@ -18,7 +18,31 @@ describe Myfinance::Resources::Entity do
18
18
  expect(subject.collection.first.federation_subscription_number).to eq("")
19
19
  expect(subject.collection.first.imported_from_sync_at).to be_nil
20
20
  expect(subject.collection.first.updated_at).to eq(DateTime.parse("2015-07-29T14:30:36-03:00"))
21
- expect(subject.collection.count).to eq(1)
21
+ expect(subject.collection.count).to eq(2)
22
+ end
23
+ end
24
+
25
+ context "with params" do
26
+ let(:params) { { name_contains: "Minhas" } }
27
+ subject { client.entities.find_all(params) }
28
+
29
+ it "returns a collection of Entities" do
30
+ expect(subject).to be_a(Myfinance::Entities::EntityCollection)
31
+ end
32
+
33
+ it "returns Entity that matches search params" do
34
+ entity = subject.collection.first
35
+
36
+ expect(entity.id).to eq(3798)
37
+ expect(entity.name).to eq("Minhas Finanças")
38
+ end
39
+ end
40
+
41
+ context "when not found" do
42
+ subject { client.entities.find_all(name: "ENTIDADE_QUE_NAO_EXISTE_42") }
43
+
44
+ it "returns an empty collection" do
45
+ expect(subject.collection).to be_empty
22
46
  end
23
47
  end
24
48
 
@@ -60,29 +84,4 @@ describe Myfinance::Resources::Entity do
60
84
  end
61
85
  end
62
86
  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
88
87
  end
@@ -10,57 +10,49 @@ describe Myfinance::Resources::Person, vcr: true do
10
10
  it "show all people successfully" do
11
11
  expect(subject).to be_a(Myfinance::Entities::PersonCollection)
12
12
  expect(subject.collection.first).to be_a(entity_klass)
13
- expect(subject.collection.first.name).to eq("Myfreecomm")
13
+ expect(subject.collection.first.name).to eq("João das neves")
14
14
  end
15
- end
16
-
17
- context "when not found" do
18
- let(:client) { Myfinance.client("") }
19
15
 
20
- it "raises Myfinance::RequestError with 401 status code" do
21
- expect {
22
- client.people.find_all
23
- }.to raise_error(Myfinance::RequestError) do |error|
24
- expect(error.code).to eq(401)
16
+ context "with params" do
17
+ it "find people by attributte name_equals" do
18
+ result = client.people.find_all( name_equals: "Myfreecomm", person_type_in: "JuridicalPerson")
19
+ expect(result).to be_a(Myfinance::Entities::PersonCollection)
20
+ expect(result.collection.first.name).to eq("Myfreecomm")
25
21
  end
26
- end
27
- end
28
- end
29
-
30
- describe "#find_by" do
31
- context "with success" do
32
- it "find people by attributte name_equals" do
33
- result = client.people.find_by(
34
- { name_equals: "Myfreecomm", person_type_in: "JuridicalPerson" }
35
- )
36
- expect(result).to be_a(Myfinance::Entities::PersonCollection)
37
- expect(result.collection.first.name).to eq("Myfreecomm")
38
- end
39
22
 
40
- it "find people by attributte name_equals with special characters" do
41
- result = client.people.find_by({ name_equals: "João das neves"})
42
- expect(result).to be_a(Myfinance::Entities::PersonCollection)
43
- expect(result.collection.first.name).to eq("João das neves")
44
- end
23
+ it "find people by attributte with special characters" do
24
+ result = client.people.find_all(name_equals: "João das neves")
25
+ expect(result).to be_a(Myfinance::Entities::PersonCollection)
26
+ expect(result.collection.first.name).to eq("João das neves")
27
+ end
45
28
 
46
- it "find people by attributte federation_subscription_number_equals" do
47
- result = client.people.find_by(
48
- { federation_subscription_number_equals: "42.308.611/0001-41" }
49
- )
50
- expect(result).to be_a(Myfinance::Entities::PersonCollection)
51
- expect(result.collection.first.name).to eq("Myfreecomm")
29
+ it "find people by attributte federation_subscription_number_equals" do
30
+ result = client.people.find_all(
31
+ { federation_subscription_number_equals: "42.308.611/0001-41" }
32
+ )
33
+ expect(result).to be_a(Myfinance::Entities::PersonCollection)
34
+ expect(result.collection.first.name).to eq("Myfreecomm")
35
+ end
36
+ context "with error" do
37
+ let(:client) { Myfinance.client("") }
38
+
39
+ it "raises Myfinance::RequestError with 401 status code" do
40
+ params = { name_equals: "Myfreecomm" }
41
+ expect { client.people.find_all(params) }.to raise_error(Myfinance::RequestError) do |error|
42
+ expect(error.code).to eq(401)
43
+ end
44
+ end
45
+ end
52
46
  end
53
47
  end
48
+ end
54
49
 
55
- context "with error" do
56
- let(:client) { Myfinance.client("") }
50
+ context "when not found" do
51
+ let(:client) { Myfinance.client("") }
57
52
 
58
- it "raises Myfinance::RequestError with 401 status code" do
59
- expect {
60
- client.people.find_by({ name_equals: "Myfreecomm" })
61
- }.to raise_error(Myfinance::RequestError) do |error|
62
- expect(error.code).to eq(401)
63
- end
53
+ it "raises Myfinance::RequestError with 401 status code" do
54
+ expect { client.people.find_all }.to raise_error(Myfinance::RequestError) do |error|
55
+ expect(error.code).to eq(401)
64
56
  end
65
57
  end
66
58
  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.1.0
4
+ version: 1.2.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-27 00:00:00.000000000 Z
14
+ date: 2017-03-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: typhoeus
@@ -376,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
376
  version: '0'
377
377
  requirements: []
378
378
  rubyforge_project:
379
- rubygems_version: 2.5.1
379
+ rubygems_version: 2.6.8
380
380
  signing_key:
381
381
  specification_version: 4
382
382
  summary: A Ruby client for the Myfinance REST API