rexpense 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codeclimate.yml +22 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +24 -0
- data/.rspec +2 -0
- data/.rubocop.yml +54 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +97 -0
- data/LICENSE.txt +21 -0
- data/README.md +195 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rspec +21 -0
- data/bin/setup +7 -0
- data/lib/rexpense/client.rb +39 -0
- data/lib/rexpense/configuration.rb +13 -0
- data/lib/rexpense/entities/activity.rb +11 -0
- data/lib/rexpense/entities/activity_collection.rb +14 -0
- data/lib/rexpense/entities/advancement.rb +14 -0
- data/lib/rexpense/entities/advancement_collection.rb +14 -0
- data/lib/rexpense/entities/advancement_devolution.rb +13 -0
- data/lib/rexpense/entities/attachment.rb +13 -0
- data/lib/rexpense/entities/attachment_collection.rb +14 -0
- data/lib/rexpense/entities/base.rb +9 -0
- data/lib/rexpense/entities/collection.rb +65 -0
- data/lib/rexpense/entities/comment.rb +13 -0
- data/lib/rexpense/entities/comment_collection.rb +14 -0
- data/lib/rexpense/entities/expense.rb +22 -0
- data/lib/rexpense/entities/expense_collection.rb +14 -0
- data/lib/rexpense/entities/membership.rb +10 -0
- data/lib/rexpense/entities/membership_collection.rb +14 -0
- data/lib/rexpense/entities/organization.rb +14 -0
- data/lib/rexpense/entities/organization_collection.rb +14 -0
- data/lib/rexpense/entities/pre_expense.rb +17 -0
- data/lib/rexpense/entities/pre_expense_collection.rb +14 -0
- data/lib/rexpense/entities/reimbursement.rb +14 -0
- data/lib/rexpense/entities/reimbursement_collection.rb +14 -0
- data/lib/rexpense/entities/tag.rb +8 -0
- data/lib/rexpense/entities/tag_collection.rb +14 -0
- data/lib/rexpense/entities/user.rb +14 -0
- data/lib/rexpense/entities/user_collection.rb +14 -0
- data/lib/rexpense/entities/webhook.rb +10 -0
- data/lib/rexpense/entities/webhook_collection.rb +14 -0
- data/lib/rexpense/exception.rb +11 -0
- data/lib/rexpense/http.rb +41 -0
- data/lib/rexpense/request.rb +56 -0
- data/lib/rexpense/resources/activity.rb +24 -0
- data/lib/rexpense/resources/advancement.rb +20 -0
- data/lib/rexpense/resources/advancement_devolution.rb +36 -0
- data/lib/rexpense/resources/base.rb +52 -0
- data/lib/rexpense/resources/expense.rb +39 -0
- data/lib/rexpense/resources/nested_endpoints/attachment.rb +48 -0
- data/lib/rexpense/resources/nested_endpoints/comment.rb +84 -0
- data/lib/rexpense/resources/nested_endpoints/membership.rb +74 -0
- data/lib/rexpense/resources/nested_endpoints/participant.rb +43 -0
- data/lib/rexpense/resources/organization.rb +31 -0
- data/lib/rexpense/resources/pre_expense.rb +56 -0
- data/lib/rexpense/resources/reimbursement.rb +20 -0
- data/lib/rexpense/resources/resource_base.rb +105 -0
- data/lib/rexpense/resources/tag.rb +82 -0
- data/lib/rexpense/resources/webhook.rb +82 -0
- data/lib/rexpense/response.rb +43 -0
- data/lib/rexpense/version.rb +3 -0
- data/lib/rexpense.rb +19 -0
- data/rexpense.gemspec +48 -0
- data/spec/lib/rexpense/client_spec.rb +47 -0
- data/spec/lib/rexpense/configuration_spec.rb +26 -0
- data/spec/lib/rexpense/entities/activity_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/activity_spec.rb +9 -0
- data/spec/lib/rexpense/entities/advancement_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/advancement_devolution_spec.rb +9 -0
- data/spec/lib/rexpense/entities/advancement_spec.rb +10 -0
- data/spec/lib/rexpense/entities/base_spec.rb +28 -0
- data/spec/lib/rexpense/entities/collection_spec.rb +70 -0
- data/spec/lib/rexpense/entities/comment_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/comment_spec.rb +10 -0
- data/spec/lib/rexpense/entities/expense_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/expense_spec.rb +14 -0
- data/spec/lib/rexpense/entities/membership_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/membership_spec.rb +7 -0
- data/spec/lib/rexpense/entities/organization_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/organization_spec.rb +8 -0
- data/spec/lib/rexpense/entities/pre_expense_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/pre_expense_spec.rb +10 -0
- data/spec/lib/rexpense/entities/reimbursement_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/reimbursement_spec.rb +10 -0
- data/spec/lib/rexpense/entities/user_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/user_spec.rb +10 -0
- data/spec/lib/rexpense/entities/webhook_collection_spec.rb +5 -0
- data/spec/lib/rexpense/entities/webhook_spec.rb +7 -0
- data/spec/lib/rexpense/http_spec.rb +37 -0
- data/spec/lib/rexpense/request_spec.rb +29 -0
- data/spec/lib/rexpense/resources/activity_spec.rb +16 -0
- data/spec/lib/rexpense/resources/advancement_devolution_spec.rb +29 -0
- data/spec/lib/rexpense/resources/advancement_spec.rb +207 -0
- data/spec/lib/rexpense/resources/expense_spec.rb +227 -0
- data/spec/lib/rexpense/resources/organization_spec.rb +162 -0
- data/spec/lib/rexpense/resources/pre_expense_spec.rb +83 -0
- data/spec/lib/rexpense/resources/reimbursement_spec.rb +207 -0
- data/spec/lib/rexpense/resources/tag_specs.rb +77 -0
- data/spec/lib/rexpense/resources/webhook_spec.rb +51 -0
- data/spec/lib/rexpense/response_spec.rb +91 -0
- data/spec/lib/rexpense_spec.rb +34 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/attachments/logo.png +0 -0
- data/spec/support/client.rb +3 -0
- data/spec/support/matchers/have_attr_accessor.rb +18 -0
- data/spec/support/shared_examples/entity_attributes.rb +9 -0
- data/spec/support/shared_examples/entity_collection.rb +19 -0
- data/spec/support/shared_examples/http_request_methods.rb +35 -0
- data/spec/support/vcr.rb +7 -0
- metadata +390 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Rexpense::Resources::Advancement, vcr: true do
|
|
4
|
+
let(:advancement_klass) { Rexpense::Entities::Advancement }
|
|
5
|
+
|
|
6
|
+
describe "#find_all" do
|
|
7
|
+
context "with success" do
|
|
8
|
+
subject { client.advancements.find_all }
|
|
9
|
+
|
|
10
|
+
it "show all advancements successfully" do
|
|
11
|
+
expect(subject.class).to eq(Rexpense::Entities::AdvancementCollection)
|
|
12
|
+
expect(subject.collection.first.class).to eq(advancement_klass)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "find advancements by attributes" do
|
|
17
|
+
params = { currency_in: ["USD"] }
|
|
18
|
+
result = client.advancements.find_all(params)
|
|
19
|
+
|
|
20
|
+
expect(result).to be_a(Rexpense::Entities::AdvancementCollection)
|
|
21
|
+
expect(result.collection[0]).to be_a(advancement_klass)
|
|
22
|
+
expect(result.collection[0].currency).to eq("USD")
|
|
23
|
+
expect(result.collection[1].currency).to eq("USD")
|
|
24
|
+
expect(result.collection[2].currency).to eq("USD")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "when error" do
|
|
28
|
+
let(:client) { Rexpense.client("") }
|
|
29
|
+
|
|
30
|
+
it "raises Rexpense::RequestError with 401 status code" do
|
|
31
|
+
expect { client.advancements.find_all({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
32
|
+
expect(error.code).to eq(401)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#find" do
|
|
39
|
+
context "with success" do
|
|
40
|
+
subject { client.advancements.find(40) }
|
|
41
|
+
|
|
42
|
+
it "returns a category successfully" do
|
|
43
|
+
expect(subject.class).to eq(advancement_klass)
|
|
44
|
+
expect(subject.id).to eq(40)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "with error" do
|
|
49
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
50
|
+
expect { client.advancements.find(000000) }.to raise_error(Rexpense::RequestError) do |error|
|
|
51
|
+
expect(error.code).to eq(404)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe "#create" do
|
|
58
|
+
let(:params) do
|
|
59
|
+
{
|
|
60
|
+
amount: 129.65,
|
|
61
|
+
date: '2017-09-04',
|
|
62
|
+
payer: {
|
|
63
|
+
id: 144,
|
|
64
|
+
type: 'Organization'
|
|
65
|
+
},
|
|
66
|
+
receiver: {
|
|
67
|
+
id: 2,
|
|
68
|
+
type: 'User'
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "with success" do
|
|
74
|
+
it "creates a category successfully" do
|
|
75
|
+
result = client.advancements.create(params)
|
|
76
|
+
expect(result).to be_a(advancement_klass)
|
|
77
|
+
expect(result.amount).to eq(129.65)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
context "with error" do
|
|
82
|
+
it "raises Rexpense::RequestError with 422 status code" do
|
|
83
|
+
expect { client.advancements.create({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
84
|
+
expect(error.code).to eq(422)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe "#update" do
|
|
91
|
+
context "with success" do
|
|
92
|
+
it "updates a category successfully" do
|
|
93
|
+
expect(client.advancements.update(40, { amount: 152.00 })).to be_a(advancement_klass)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context "with error" do
|
|
98
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
99
|
+
expect { client.advancements.update(88888888, {}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
100
|
+
expect(error.code).to eq(404)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "raises Rexpense::RequestError with 422 status core" do
|
|
105
|
+
expect { client.advancements.update(40, { date: '' }) }.to raise_error(Rexpense::RequestError) do |error|
|
|
106
|
+
expect(error.code).to eq(422)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
describe "#destroy" do
|
|
113
|
+
context "with success" do
|
|
114
|
+
it "destroy a category successfully" do
|
|
115
|
+
expect(client.advancements.destroy(52)).to be_truthy
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
context "with error" do
|
|
120
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
121
|
+
expect { client.advancements.destroy(88888888) }.to raise_error(Rexpense::RequestError) do |error|
|
|
122
|
+
expect(error.code).to eq(404)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
context 'Comments' do
|
|
129
|
+
let(:comment_klass) { Rexpense::Entities::Comment }
|
|
130
|
+
|
|
131
|
+
describe '#comments' do
|
|
132
|
+
context "with success" do
|
|
133
|
+
subject { client.advancements.comments(4) }
|
|
134
|
+
|
|
135
|
+
it "show all advancement comments successfully" do
|
|
136
|
+
expect(subject.class).to eq(Rexpense::Entities::CommentCollection)
|
|
137
|
+
expect(subject.collection.first.class).to eq(comment_klass)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
describe '#find_comment' do
|
|
143
|
+
context "with success" do
|
|
144
|
+
subject { client.advancements.find_comment(4, 295) }
|
|
145
|
+
|
|
146
|
+
it "show all advancement comments successfully" do
|
|
147
|
+
expect(subject.class).to eq(comment_klass)
|
|
148
|
+
expect(subject.id).to eq(295)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
describe '#create_comment' do
|
|
154
|
+
context "with success" do
|
|
155
|
+
subject { client.advancements.create_comment(4, { content: 'Loren ipsun dollor' }) }
|
|
156
|
+
|
|
157
|
+
it "create a comment" do
|
|
158
|
+
expect(subject.class).to eq(comment_klass)
|
|
159
|
+
expect(subject.id).to eq(673)
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
describe '#update_comment' do
|
|
165
|
+
context "with success" do
|
|
166
|
+
subject { client.advancements.update_comment(4, 673, { content: 'Foo bar' }) }
|
|
167
|
+
|
|
168
|
+
it "update comment" do
|
|
169
|
+
expect(subject.class).to eq(comment_klass)
|
|
170
|
+
expect(subject.id).to eq(673)
|
|
171
|
+
expect(subject.content).to eq('Foo bar')
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
describe '#destroy_comment' do
|
|
177
|
+
subject { client.advancements.destroy_comment(4, 673) }
|
|
178
|
+
|
|
179
|
+
it "destroy comment" do
|
|
180
|
+
expect(subject).to be_truthy
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
context 'Participants' do
|
|
186
|
+
let(:user_klass) { Rexpense::Entities::User }
|
|
187
|
+
|
|
188
|
+
describe "#participants" do
|
|
189
|
+
context "with success" do
|
|
190
|
+
subject { client.advancements.participants(51) }
|
|
191
|
+
|
|
192
|
+
it "show all advancements successfully" do
|
|
193
|
+
expect(subject.class).to eq(Rexpense::Entities::UserCollection)
|
|
194
|
+
expect(subject.collection.first.class).to eq(user_klass)
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
describe '#leave_participant' do
|
|
200
|
+
subject { client.advancements.leave_participant(49) }
|
|
201
|
+
|
|
202
|
+
it "show all advancements successfully" do
|
|
203
|
+
expect(subject).to be_truthy
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Rexpense::Resources::Expense, vcr: true do
|
|
4
|
+
let(:expense_klass) { Rexpense::Entities::Expense }
|
|
5
|
+
|
|
6
|
+
describe "#find_all" do
|
|
7
|
+
context "with success" do
|
|
8
|
+
subject { client.expenses.find_all }
|
|
9
|
+
|
|
10
|
+
it "show all expenses successfully" do
|
|
11
|
+
expect(subject.class).to eq(Rexpense::Entities::ExpenseCollection)
|
|
12
|
+
expect(subject.collection.first.class).to eq(expense_klass)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "when error" do
|
|
17
|
+
let(:client) { Rexpense.client("") }
|
|
18
|
+
|
|
19
|
+
it "raises Rexpense::RequestError with 401 status code" do
|
|
20
|
+
expect { client.expenses.find_all({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
21
|
+
expect(error.code).to eq(401)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "#find" do
|
|
28
|
+
context "with success" do
|
|
29
|
+
subject { client.expenses.find(949) }
|
|
30
|
+
|
|
31
|
+
it "returns a category successfully" do
|
|
32
|
+
expect(subject.class).to eq(expense_klass)
|
|
33
|
+
expect(subject.id).to eq(949)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "with error" do
|
|
38
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
39
|
+
expect { client.expenses.find(000000) }.to raise_error(Rexpense::RequestError) do |error|
|
|
40
|
+
expect(error.code).to eq(404)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "#create" do
|
|
47
|
+
let(:params) do
|
|
48
|
+
{
|
|
49
|
+
amount: 129.65,
|
|
50
|
+
kind: 'monetary',
|
|
51
|
+
occurred_at: '2017-09-04',
|
|
52
|
+
payer: {
|
|
53
|
+
id: 144,
|
|
54
|
+
type: 'Organization'
|
|
55
|
+
},
|
|
56
|
+
receiver: {
|
|
57
|
+
id: 2,
|
|
58
|
+
type: 'User'
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "with success" do
|
|
64
|
+
it "creates a category successfully" do
|
|
65
|
+
result = client.expenses.create(params)
|
|
66
|
+
expect(result).to be_a(expense_klass)
|
|
67
|
+
expect(result.amount).to eq(129.65)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context "with error" do
|
|
72
|
+
it "raises Rexpense::RequestError with 422 status code" do
|
|
73
|
+
expect { client.expenses.create({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
74
|
+
expect(error.code).to eq(422)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe "#update" do
|
|
81
|
+
context "with success" do
|
|
82
|
+
it "updates a category successfully" do
|
|
83
|
+
expect(client.expenses.update(949, { amount: 152.00 })).to be_a(expense_klass)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context "with error" do
|
|
88
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
89
|
+
expect { client.expenses.update(88888888, {}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
90
|
+
expect(error.code).to eq(404)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "raises Rexpense::RequestError with 422 status core" do
|
|
95
|
+
expect { client.expenses.update(949, { occurred_at: '' }) }.to raise_error(Rexpense::RequestError) do |error|
|
|
96
|
+
expect(error.code).to eq(422)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe "#destroy" do
|
|
103
|
+
context "with success" do
|
|
104
|
+
it "destroy a category successfully" do
|
|
105
|
+
expect(client.expenses.destroy(949)).to be_truthy
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
context "with error" do
|
|
110
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
111
|
+
expect { client.expenses.destroy(88888888) }.to raise_error(Rexpense::RequestError) do |error|
|
|
112
|
+
expect(error.code).to eq(404)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context 'Comments' do
|
|
119
|
+
let(:comment_klass) { Rexpense::Entities::Comment }
|
|
120
|
+
|
|
121
|
+
describe '#comments' do
|
|
122
|
+
context "with success" do
|
|
123
|
+
subject { client.expenses.comments(808) }
|
|
124
|
+
|
|
125
|
+
it "show all expense comments successfully" do
|
|
126
|
+
expect(subject.class).to eq(Rexpense::Entities::CommentCollection)
|
|
127
|
+
expect(subject.collection.first.class).to eq(comment_klass)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe '#find_comment' do
|
|
133
|
+
context "with success" do
|
|
134
|
+
subject { client.expenses.find_comment(808, 654) }
|
|
135
|
+
|
|
136
|
+
it "show a expense comment successfully" do
|
|
137
|
+
expect(subject.class).to eq(comment_klass)
|
|
138
|
+
expect(subject.id).to eq(654)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe '#create_comment' do
|
|
144
|
+
context "with success" do
|
|
145
|
+
subject { client.expenses.create_comment(808, { content: 'Loren ipsun dollor' }) }
|
|
146
|
+
|
|
147
|
+
it "create a comment" do
|
|
148
|
+
expect(subject.class).to eq(comment_klass)
|
|
149
|
+
expect(subject.id).to eq(679)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
describe '#update_comment' do
|
|
155
|
+
context "with success" do
|
|
156
|
+
subject { client.expenses.update_comment(808, 679, { content: 'Foo bar' }) }
|
|
157
|
+
|
|
158
|
+
it "update comment" do
|
|
159
|
+
expect(subject.class).to eq(comment_klass)
|
|
160
|
+
expect(subject.id).to eq(679)
|
|
161
|
+
expect(subject.content).to eq('Foo bar')
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
describe '#destroy_comment' do
|
|
167
|
+
subject { client.expenses.destroy_comment(808, 679) }
|
|
168
|
+
|
|
169
|
+
it "destroy comment" do
|
|
170
|
+
expect(subject).to be_truthy
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
context 'Participants' do
|
|
176
|
+
let(:user_klass) { Rexpense::Entities::User }
|
|
177
|
+
|
|
178
|
+
describe "#participants" do
|
|
179
|
+
context "with success" do
|
|
180
|
+
subject { client.expenses.participants(973) }
|
|
181
|
+
|
|
182
|
+
it "show all expenses successfully" do
|
|
183
|
+
expect(subject.class).to eq(Rexpense::Entities::UserCollection)
|
|
184
|
+
expect(subject.collection.first.class).to eq(user_klass)
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
describe '#leave_participant' do
|
|
190
|
+
subject { client.expenses.leave_participant(940) }
|
|
191
|
+
|
|
192
|
+
it "show all expenses successfully" do
|
|
193
|
+
expect(subject).to be_truthy
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
context 'Attachments' do
|
|
199
|
+
let(:attachment_klass) { Rexpense::Entities::Attachment }
|
|
200
|
+
|
|
201
|
+
describe '#attachments' do
|
|
202
|
+
subject { client.expenses.attachments(974) }
|
|
203
|
+
|
|
204
|
+
it 'return expenses attachments' do
|
|
205
|
+
expect(subject.class).to eq(Rexpense::Entities::AttachmentCollection)
|
|
206
|
+
expect(subject.collection.first.class).to eq(attachment_klass)
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
describe '#find_attachments' do
|
|
211
|
+
subject { client.expenses.find_attachment(974, 635) }
|
|
212
|
+
|
|
213
|
+
it 'return attachment' do
|
|
214
|
+
expect(subject.class).to eq(Rexpense::Entities::Attachment)
|
|
215
|
+
expect(subject.id).to eq(635)
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
describe '#destroy_attachments' do
|
|
220
|
+
subject { client.expenses.destroy_attachment(974, 635) }
|
|
221
|
+
|
|
222
|
+
it 'destroy attachment' do
|
|
223
|
+
expect(subject).to be_truthy
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Rexpense::Resources::Organization, vcr: true do
|
|
4
|
+
let(:organization_klass) { Rexpense::Entities::Organization }
|
|
5
|
+
|
|
6
|
+
describe "#find_all" do
|
|
7
|
+
context "with success" do
|
|
8
|
+
subject { client.organizations.find_all }
|
|
9
|
+
|
|
10
|
+
it "show all organizations successfully" do
|
|
11
|
+
expect(subject.class).to eq(Rexpense::Entities::OrganizationCollection)
|
|
12
|
+
expect(subject.collection.first.class).to eq(organization_klass)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "when error" do
|
|
17
|
+
let(:client) { Rexpense.client("") }
|
|
18
|
+
|
|
19
|
+
it "raises Rexpense::RequestError with 401 status code" do
|
|
20
|
+
expect { client.organizations.find_all({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
21
|
+
expect(error.code).to eq(401)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "#find" do
|
|
28
|
+
context "with success" do
|
|
29
|
+
subject { client.organizations.find(35) }
|
|
30
|
+
|
|
31
|
+
it "returns a category successfully" do
|
|
32
|
+
expect(subject.class).to eq(organization_klass)
|
|
33
|
+
expect(subject.id).to eq(35)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "with error" do
|
|
38
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
39
|
+
expect { client.organizations.find(000000) }.to raise_error(Rexpense::RequestError) do |error|
|
|
40
|
+
expect(error.code).to eq(404)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "#update" do
|
|
47
|
+
context "with success" do
|
|
48
|
+
it "updates a organization name successfully" do
|
|
49
|
+
expect(client.organizations.update(16, { name: "Game of words" })).to be_a(organization_klass)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "with error" do
|
|
54
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
55
|
+
expect { client.organizations.update(88888888, {}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
56
|
+
expect(error.code).to eq(404)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "raises Rexpense::RequestError with 422 status core" do
|
|
61
|
+
expect { client.organizations.update(16, { name: '' }) }.to raise_error(Rexpense::RequestError) do |error|
|
|
62
|
+
expect(error.code).to eq(422)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#destroy" do
|
|
69
|
+
context "with success" do
|
|
70
|
+
it "destroy a category successfully" do
|
|
71
|
+
expect(client.organizations.destroy(14)).to be_truthy
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "with error" do
|
|
76
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
77
|
+
expect { client.organizations.destroy(88888888) }.to raise_error(Rexpense::RequestError) do |error|
|
|
78
|
+
expect(error.code).to eq(404)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
describe '#distances_rules' do
|
|
85
|
+
subject { client.organizations.distances_rules(35) }
|
|
86
|
+
|
|
87
|
+
it 'return organization distance rule' do
|
|
88
|
+
expect(subject).to eq({
|
|
89
|
+
'id' => 3,
|
|
90
|
+
'amount' => 6.0,
|
|
91
|
+
'currency' => 'BRL',
|
|
92
|
+
'distance_kind' => 'km',
|
|
93
|
+
'organization_id' => 35
|
|
94
|
+
})
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe '#update_distances_rules' do
|
|
99
|
+
subject { client.organizations.update_distances_rules(35, { amount: 7.0 }) }
|
|
100
|
+
|
|
101
|
+
it 'return organization distance rule' do
|
|
102
|
+
expect(subject).to eq({
|
|
103
|
+
'id' => 3,
|
|
104
|
+
'amount' => 7.0,
|
|
105
|
+
'currency' => 'BRL',
|
|
106
|
+
'distance_kind' => 'km',
|
|
107
|
+
'organization_id' => 35
|
|
108
|
+
})
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
context 'Memberships' do
|
|
113
|
+
let(:membership_klass) { Rexpense::Entities::Membership }
|
|
114
|
+
|
|
115
|
+
describe '#memberships' do
|
|
116
|
+
subject { client.organizations.memberships(35) }
|
|
117
|
+
|
|
118
|
+
it 'returns a collection of memberships' do
|
|
119
|
+
expect(subject.class).to eq(Rexpense::Entities::MembershipCollection)
|
|
120
|
+
expect(subject.collection.first.class).to eq(membership_klass)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
describe '#find_membership' do
|
|
125
|
+
subject { client.organizations.find_membership(35, 64) }
|
|
126
|
+
|
|
127
|
+
it 'find a membership in organization' do
|
|
128
|
+
expect(subject.class).to eq(Rexpense::Entities::Membership)
|
|
129
|
+
expect(subject.user.id).to eq(64)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
describe '#create_membership' do
|
|
134
|
+
subject { client.organizations.create_membership(35, { user: { email: 'dante.miranda@nexaas.com' }, role: 'member' }) }
|
|
135
|
+
|
|
136
|
+
it 'create a membership in organization' do
|
|
137
|
+
expect(subject).to eq({
|
|
138
|
+
"total_recipients" => 1,
|
|
139
|
+
"not_added_recipients" => [],
|
|
140
|
+
"added_recipients" => ["dante.miranda@nexaas.com"],
|
|
141
|
+
"invalid_recipients" => []
|
|
142
|
+
})
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe '#update_membership' do
|
|
147
|
+
subject { client.organizations.update_membership(35, 64, { role: 'admin' }) }
|
|
148
|
+
|
|
149
|
+
it 'update a membership' do
|
|
150
|
+
expect(subject.role).to eq('admin')
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
describe '#destroy_membership' do
|
|
155
|
+
subject { client.organizations.destroy_membership(35, 64) }
|
|
156
|
+
|
|
157
|
+
it 'update a membership' do
|
|
158
|
+
expect(subject).to be_truthy
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Rexpense::Resources::PreExpense, vcr: true do
|
|
4
|
+
let(:pre_expense_klass) { Rexpense::Entities::PreExpense }
|
|
5
|
+
|
|
6
|
+
describe "#find_all" do
|
|
7
|
+
context "with success" do
|
|
8
|
+
subject { client.pre_expenses.find_all }
|
|
9
|
+
|
|
10
|
+
it "show all pre_expenses successfully" do
|
|
11
|
+
expect(subject.class).to eq(Rexpense::Entities::PreExpenseCollection)
|
|
12
|
+
expect(subject.collection.first.class).to eq(pre_expense_klass)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "when error" do
|
|
17
|
+
let(:client) { Rexpense.client("") }
|
|
18
|
+
|
|
19
|
+
it "raises Rexpense::RequestError with 401 status code" do
|
|
20
|
+
expect { client.pre_expenses.find_all({}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
21
|
+
expect(error.code).to eq(401)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "#ignore" do
|
|
28
|
+
context "with success" do
|
|
29
|
+
it "ignore a pre_expense" do
|
|
30
|
+
result = client.pre_expenses.ignore(4)
|
|
31
|
+
expect(result.ignored_at).to_not be_nil
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "#restore" do
|
|
37
|
+
context "with success" do
|
|
38
|
+
it "restore a pre_expense" do
|
|
39
|
+
result = client.pre_expenses.restore(4)
|
|
40
|
+
expect(result.ignored_at).to be_nil
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "#convert" do
|
|
46
|
+
let(:params) do
|
|
47
|
+
{ amount: 129.65, currency: 'BRL', payer_id: 35, liquidate_through_advancement: 0 }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "with success" do
|
|
51
|
+
it "creates a category successfully" do
|
|
52
|
+
result = client.pre_expenses.convert(2, params)
|
|
53
|
+
expect(result).to be_a(Rexpense::Entities::Expense)
|
|
54
|
+
expect(result.amount).to eq(129.65)
|
|
55
|
+
expect(result.pre_expense_id).to eq(2)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "with error" do
|
|
60
|
+
it "raises Rexpense::RequestError with 422 status code" do
|
|
61
|
+
expect { client.pre_expenses.convert(3, {}) }.to raise_error(Rexpense::RequestError) do |error|
|
|
62
|
+
expect(error.code).to eq(422)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#destroy" do
|
|
69
|
+
context "with success" do
|
|
70
|
+
it "destroy a category successfully" do
|
|
71
|
+
expect(client.pre_expenses.destroy(3)).to be_truthy
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "with error" do
|
|
76
|
+
it "raises Rexpense::RequestError with 404 status code" do
|
|
77
|
+
expect { client.pre_expenses.destroy(88888888) }.to raise_error(Rexpense::RequestError) do |error|
|
|
78
|
+
expect(error.code).to eq(404)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|