myfinance 1.1.0 → 1.2.0

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