myfinance 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.hound.yml +3 -1063
  4. data/.overcommit.yml +33 -0
  5. data/.rubocop.yml +19 -1131
  6. data/CHANGELOG.md +3 -0
  7. data/Gemfile.lock +3 -1
  8. data/README.md +200 -0
  9. data/Rakefile +1 -1
  10. data/bin/rspec +21 -0
  11. data/lib/myfinance.rb +4 -59
  12. data/lib/myfinance/client.rb +14 -2
  13. data/lib/myfinance/configuration.rb +2 -2
  14. data/lib/myfinance/entities/collection.rb +13 -5
  15. data/lib/myfinance/entities/sale.rb +32 -0
  16. data/lib/myfinance/entities/sale_account.rb +18 -0
  17. data/lib/myfinance/entities/sale_account_collection.rb +13 -0
  18. data/lib/myfinance/entities/sale_collection.rb +13 -0
  19. data/lib/myfinance/entities/sale_rule.rb +16 -0
  20. data/lib/myfinance/entities/sale_rule_collection.rb +13 -0
  21. data/lib/myfinance/http.rb +10 -11
  22. data/lib/myfinance/request.rb +2 -3
  23. data/lib/myfinance/resources/base.rb +1 -1
  24. data/lib/myfinance/resources/sale.rb +39 -0
  25. data/lib/myfinance/resources/sale_account.rb +39 -0
  26. data/lib/myfinance/resources/sale_rule.rb +39 -0
  27. data/lib/myfinance/response.rb +6 -6
  28. data/lib/myfinance/version.rb +1 -1
  29. data/myfinance.gemspec +14 -9
  30. data/spec/lib/myfinance/client_spec.rb +14 -0
  31. data/spec/lib/myfinance/entities/sale_account_collection_spec.rb +5 -0
  32. data/spec/lib/myfinance/entities/sale_account_spec.rb +18 -0
  33. data/spec/lib/myfinance/entities/sale_collection_spec.rb +5 -0
  34. data/spec/lib/myfinance/entities/sale_rule_collection_spec.rb +5 -0
  35. data/spec/lib/myfinance/entities/sale_rule_spec.rb +16 -0
  36. data/spec/lib/myfinance/entities/sale_spec.rb +32 -0
  37. data/spec/lib/myfinance/resources/sale_account.spec.rb +124 -0
  38. data/spec/lib/myfinance/resources/sale_account_spec.rb +116 -0
  39. data/spec/lib/myfinance/resources/sale_rule_spec.rb +126 -0
  40. data/spec/lib/myfinance/resources/sale_spec.rb +126 -0
  41. data/spec/support/shared_examples/entity_collection.rb +21 -0
  42. data/spec/support/shared_examples/http_request_methods.rb +12 -5
  43. metadata +51 -3
@@ -0,0 +1,124 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::SaleAccount, vcr: true do
4
+ let(:client) do
5
+ equipemyfinance_api_token = "b8e224ea249c9e01a31ce19d4f92e2baca3d5055a1ce0cf0"
6
+ equipemyfinance_account_id = 3539
7
+ Myfinance.client(equipemyfinance_api_token, equipemyfinance_account_id)
8
+ end
9
+ let(:resource) { client.sale_accounts }
10
+ let(:entity_class) { Myfinance::Entities::SaleAccount }
11
+ let(:collection_class) { Myfinance::Entities::SaleAccountCollection }
12
+ let(:request_error) { Myfinance::RequestError }
13
+ let(:entity) { 3703 }
14
+ let(:sale_account_id) { 7 }
15
+
16
+ describe "#find_all" do
17
+ subject { resource.find_all }
18
+
19
+ it "returns a 200 OK response code" do
20
+ expect(subject.response.code).to eq(200)
21
+ end
22
+
23
+ it "returns a SaleAccounts collection" do
24
+ expect(subject).to be_a(collection_class)
25
+ end
26
+
27
+ it "returns items as SaleAccount" do
28
+ expect(subject.collection).to all(be_a(entity_class))
29
+ end
30
+
31
+ context "with invalid arguments" do
32
+ let(:sale_account_id) { nil }
33
+
34
+ it "raises not found error" do
35
+ expect { subject }.to raise_error(request_error, "Not Found")
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#find" do
41
+ subject { resource.find(sale_account_id) }
42
+
43
+ it "returns a Sale" do
44
+ expect(subject).to be_a(entity_class)
45
+ end
46
+
47
+ context "with invalid arguments" do
48
+ let(:sale_account_id) { nil }
49
+
50
+ it "raises not found error with 404" do
51
+ expect { subject }.to raise_error(request_error, "Not Found")
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "#create" do
57
+ let(:params) do
58
+ {
59
+ provider: "pagseguro",
60
+ name: "PagSeguro",
61
+ description: "Conta do PagSeguro",
62
+ entity_id: entity_id
63
+ }
64
+ end
65
+
66
+ subject { resource.create(sale_account_id, params) }
67
+
68
+ it "creates a Sale" do
69
+ expect(subject).to be_a(entity_class)
70
+ end
71
+
72
+ context "when given invalid params" do
73
+ let(:params) do
74
+ {
75
+ provider: "amarelinha",
76
+ }
77
+ end
78
+
79
+ it "returns 422 Unprocessable Entity" do
80
+ expect { subject }.to raise_error(request_error) do |e|
81
+ expect(e).to have_attributes(
82
+ code: 422,
83
+ message: "Unprocessable Entity"
84
+ )
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ describe "#update" do
91
+ let(:params) do
92
+ {
93
+ nominal_amount: BigDecimal.new(999),
94
+ description: "Amarelinha"
95
+ }
96
+ end
97
+ subject { resource.update(sale_account_id, params) }
98
+
99
+ it "updates a Sale" do
100
+ expect(subject).to be_a(entity_class)
101
+ end
102
+ end
103
+
104
+ describe "#destroy" do
105
+ let(:sale_account_id) { 10 }
106
+
107
+ subject { resource.destroy(sale_account_id) }
108
+
109
+ it "destroys Sale" do
110
+ expect(subject).to be_truthy
111
+ end
112
+
113
+ context "when given invalid ID" do
114
+ let(:sale_account_id) { 171 }
115
+
116
+ it "returns 404 Not Found" do
117
+ expect { subject }.to raise_error(request_error) do |e|
118
+ expect(e.code).to eq(404)
119
+ expect(e.message).to eq("Not Found")
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,116 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::SaleAccount, vcr: true do
4
+ let(:client) do
5
+ equipemyfinance_api_token = "b8e224ea249c9e01a31ce19d4f92e2baca3d5055a1ce0cf0"
6
+ equipemyfinance_account_id = 3539
7
+ Myfinance.client(equipemyfinance_api_token, equipemyfinance_account_id)
8
+ end
9
+ let(:resource) { client.sale_accounts }
10
+ let(:entity_class) { Myfinance::Entities::SaleAccount }
11
+ let(:collection_class) { Myfinance::Entities::SaleAccountCollection }
12
+ let(:request_error) { Myfinance::RequestError }
13
+ let(:entity_id) { 3703 }
14
+ let(:sale_account_id) { 7 }
15
+
16
+ describe "#find_all" do
17
+ subject { resource.find_all }
18
+
19
+ it "returns a 200 OK response code" do
20
+ expect(subject.response.code).to eq(200)
21
+ end
22
+
23
+ it "returns a SaleAccounts collection" do
24
+ expect(subject).to be_a(collection_class)
25
+ end
26
+
27
+ it "returns items as SaleAccount" do
28
+ expect(subject.collection).to all(be_a(entity_class))
29
+ end
30
+ end
31
+
32
+ describe "#find" do
33
+ subject { resource.find(sale_account_id) }
34
+
35
+ it "returns a Sale" do
36
+ expect(subject).to be_a(entity_class)
37
+ end
38
+
39
+ context "with invalid arguments" do
40
+ let(:sale_account_id) { 0 }
41
+
42
+ it "raises not found error with 404" do
43
+ expect { subject }.to raise_error(request_error, "Not Found")
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "#create" do
49
+ let(:params) do
50
+ {
51
+ provider: "pagseguro",
52
+ name: "PagSeguro",
53
+ description: "Conta do PagSeguro",
54
+ entity_id: entity_id
55
+ }
56
+ end
57
+
58
+ subject { resource.create(params) }
59
+
60
+ it "creates a Sale" do
61
+ expect(subject).to be_a(entity_class)
62
+ end
63
+
64
+ context "when given invalid params" do
65
+ let(:params) do
66
+ {
67
+ provider: "amarelinha",
68
+ }
69
+ end
70
+
71
+ it "returns 422 Unprocessable Entity" do
72
+ expect { subject }.to raise_error(request_error) do |e|
73
+ expect(e).to have_attributes(
74
+ code: 422,
75
+ message: "Unprocessable Entity"
76
+ )
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ describe "#update" do
83
+ let(:params) do
84
+ {
85
+ nominal_amount: BigDecimal.new(999),
86
+ description: "Amarelinha"
87
+ }
88
+ end
89
+ subject { resource.update(sale_account_id, params) }
90
+
91
+ it "updates a Sale" do
92
+ expect(subject).to be_a(entity_class)
93
+ end
94
+ end
95
+
96
+ describe "#destroy" do
97
+ let(:sale_account_id) { 10 }
98
+
99
+ subject { resource.destroy(sale_account_id) }
100
+
101
+ it "destroys Sale" do
102
+ expect(subject).to be_truthy
103
+ end
104
+
105
+ context "when given invalid ID" do
106
+ let(:sale_account_id) { 171 }
107
+
108
+ it "returns 404 Not Found" do
109
+ expect { subject }.to raise_error(request_error) do |e|
110
+ expect(e.code).to eq(404)
111
+ expect(e.message).to eq("Not Found")
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,126 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::SaleRule, vcr: true do
4
+ let(:client) do
5
+ equipemyfinance_api_token = "b8e224ea249c9e01a31ce19d4f92e2baca3d5055a1ce0cf0"
6
+ equipemyfinance_account_id = 3539
7
+ Myfinance.client(equipemyfinance_api_token, equipemyfinance_account_id)
8
+ end
9
+ let(:resource) { client.sale_rules }
10
+ let(:entity_class) { Myfinance::Entities::SaleRule }
11
+ let(:collection_class) { Myfinance::Entities::SaleRuleCollection }
12
+ let(:request_error) { Myfinance::RequestError }
13
+ let(:sale_account_id) { 7 }
14
+ let(:sale_rule_id) { 6 }
15
+
16
+ describe "#find_all" do
17
+ subject { resource.find_all(sale_account_id) }
18
+
19
+ it "returns a 200 OK response code" do
20
+ expect(subject.response.code).to eq(200)
21
+ end
22
+
23
+ it "returns a SaleRule collection" do
24
+ expect(subject).to be_a(collection_class)
25
+ end
26
+
27
+ it "returns items as SaleRule" do
28
+ expect(subject.collection).to all(be_a(entity_class))
29
+ end
30
+
31
+ context "with invalid arguments" do
32
+ let(:sale_account_id) { nil }
33
+
34
+ it "raises not found error" do
35
+ expect { subject }.to raise_error(request_error, "Not Found")
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#find" do
41
+ subject { resource.find(sale_account_id, sale_rule_id) }
42
+
43
+ it "returns a SaleRule" do
44
+ expect(subject).to be_a(entity_class)
45
+ end
46
+
47
+ context "with invalid arguments" do
48
+ let(:sale_account_id) { nil }
49
+
50
+ it "raises not found error with 404" do
51
+ expect { subject }.to raise_error(request_error, "Not Found")
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "#create" do
57
+ let(:params) do
58
+ {
59
+ payment_method: "debit",
60
+ issuer: "visa",
61
+ fee_percentage: 1.0,
62
+ sale_account_id: sale_account_id
63
+ }
64
+ end
65
+
66
+ subject { resource.create(sale_account_id, params) }
67
+
68
+ it "creates a SaleRule" do
69
+ expect(subject).to be_a(entity_class)
70
+ end
71
+
72
+ context "when given invalid params" do
73
+ let(:params) do
74
+ {
75
+ amount: BigDecimal.new(199),
76
+ description: "O Guia"
77
+ }
78
+ end
79
+
80
+ it "returns 422 Unprocessable Entity" do
81
+ expect { subject }.to raise_error(request_error) do |e|
82
+ expect(e).to have_attributes(
83
+ code: 422,
84
+ message: "Unprocessable Entity"
85
+ )
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ describe "#update" do
92
+ let(:params) do
93
+ {
94
+ payment_method: "credit",
95
+ issuer: "visa",
96
+ sale_account_id: sale_account_id
97
+ }
98
+ end
99
+ subject { resource.update(sale_account_id, sale_rule_id, params) }
100
+
101
+ it "updates a SaleRule" do
102
+ expect(subject).to be_a(entity_class)
103
+ end
104
+ end
105
+
106
+ describe "#destroy" do
107
+ let(:sale_rule_id) { 12 }
108
+
109
+ subject { resource.destroy(sale_account_id, sale_rule_id) }
110
+
111
+ it "destroys SaleRule" do
112
+ expect(subject).to be_truthy
113
+ end
114
+
115
+ context "when given invalid ID" do
116
+ let(:sale_rule_id) { 171 }
117
+
118
+ it "returns 404 Not Found" do
119
+ expect { subject }.to raise_error(request_error) do |e|
120
+ expect(e.code).to eq(404)
121
+ expect(e.message).to eq("Not Found")
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,126 @@
1
+ require "spec_helper"
2
+
3
+ describe Myfinance::Resources::Sale, vcr: true do
4
+ let(:client) do
5
+ equipemyfinance_api_token = "b8e224ea249c9e01a31ce19d4f92e2baca3d5055a1ce0cf0"
6
+ equipemyfinance_account_id = 3539
7
+ Myfinance.client(equipemyfinance_api_token, equipemyfinance_account_id)
8
+ end
9
+ let(:resource) { client.sales }
10
+ let(:entity_class) { Myfinance::Entities::Sale }
11
+ let(:collection_class) { Myfinance::Entities::SaleCollection }
12
+ let(:request_error) { Myfinance::RequestError }
13
+ let(:entity_id) { 3703 }
14
+ let(:sale_id) { 8 }
15
+ let(:sale_account_id) { 7 }
16
+
17
+ describe "#find_all" do
18
+ subject { resource.find_all(entity_id) }
19
+
20
+ it "returns a 200 OK response code" do
21
+ expect(subject.response.code).to eq(200)
22
+ end
23
+
24
+ it "returns a Sales collection" do
25
+ expect(subject).to be_a(collection_class)
26
+ end
27
+
28
+ it "returns items as Sale" do
29
+ expect(subject.collection).to all(be_a(entity_class))
30
+ end
31
+
32
+ context "with invalid arguments" do
33
+ let(:entity_id) { nil }
34
+
35
+ it "raises not found error" do
36
+ expect { subject }.to raise_error(request_error, "Not Found")
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#find" do
42
+ subject { resource.find(entity_id, 8) }
43
+
44
+ it "returns a Sale" do
45
+ expect(subject).to be_a(entity_class)
46
+ end
47
+
48
+ context "with invalid arguments" do
49
+ let(:entity_id) { nil }
50
+
51
+ it "raises not found error with 404" do
52
+ expect { subject }.to raise_error(request_error, "Not Found")
53
+ end
54
+ end
55
+ end
56
+
57
+ describe "#create" do
58
+ let(:params) do
59
+ {
60
+ nominal_amount: BigDecimal.new(199),
61
+ payment_method: "cash",
62
+ occurred_at: Date.new(2017, 1, 1), description: "O Guia",
63
+ sale_account_id: sale_account_id
64
+ }
65
+ end
66
+
67
+ subject { resource.create(entity_id, params) }
68
+
69
+ it "creates a Sale" do
70
+ expect(subject).to be_a(entity_class)
71
+ end
72
+
73
+ context "when given invalid params" do
74
+ let(:params) do
75
+ {
76
+ amount: BigDecimal.new(199),
77
+ description: "O Guia"
78
+ }
79
+ end
80
+
81
+ it "returns 422 Unprocessable Entity" do
82
+ expect { subject }.to raise_error(request_error) do |e|
83
+ expect(e).to have_attributes(
84
+ code: 422,
85
+ message: "Unprocessable Entity"
86
+ )
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ describe "#update" do
93
+ let(:params) do
94
+ {
95
+ nominal_amount: BigDecimal.new(999),
96
+ description: "O Guia Vol. II"
97
+ }
98
+ end
99
+ subject { resource.update(entity_id, sale_id, params) }
100
+
101
+ it "updates a Sale" do
102
+ expect(subject).to be_a(entity_class)
103
+ end
104
+ end
105
+
106
+ describe "#destroy" do
107
+ let(:sale_id) { 17 }
108
+
109
+ subject { resource.destroy(entity_id, sale_id) }
110
+
111
+ it "destroys Sale" do
112
+ expect(subject).to be_truthy
113
+ end
114
+
115
+ context "when given invalid ID" do
116
+ let(:sale_id) { 171 }
117
+
118
+ it "returns 404 Not Found" do
119
+ expect { subject }.to raise_error(request_error) do |e|
120
+ expect(e.code).to eq(404)
121
+ expect(e.message).to eq("Not Found")
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end