Skip to content

Commit b1998e8

Browse files
committed
Fixes EventProcedures TotalAmountCents specs. Fixes TotalAmountCents to corretly return when its more then 1 kind of procedure
1 parent 0ad11e8 commit b1998e8

File tree

5 files changed

+47
-86
lines changed

5 files changed

+47
-86
lines changed

app/operations/event_procedures/total_amount_cents.rb

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,42 @@ def convert_money(amount_cents)
2121
end
2222

2323
def calculate_total(user_procedures)
24-
convert_money(user_procedures.sum(&:amount_cents))
24+
procedures_by_id = {}
25+
user_procedures.each do |procedure|
26+
procedures_by_id[procedure.id] = procedure
27+
end
28+
total = 0
29+
event_procedures.each do |event_procedure|
30+
procedure = procedures_by_id[event_procedure.procedure_id]
31+
total += procedure.amount_cents if procedure
32+
end
33+
convert_money(total)
2534
end
2635

2736
def calculate_payd(user_procedures)
28-
payd_procedures_ids = event_procedures.select(&:payd).pluck(:procedure_id)
29-
payd_procedures = user_procedures.where(id: payd_procedures_ids)
30-
convert_money(payd_procedures.sum(&:amount_cents))
37+
procedures_by_id = {}
38+
user_procedures.each do |procedure|
39+
procedures_by_id[procedure.id] = procedure
40+
end
41+
total = 0
42+
event_procedures.select(&:payd).each do |event_procedure|
43+
procedure = procedures_by_id[event_procedure.procedure_id]
44+
total += procedure.amount_cents if procedure
45+
end
46+
convert_money(total)
3147
end
3248

3349
def calculate_unpayd(user_procedures)
34-
unpayd_procudures_ids = event_procedures.reject(&:payd).pluck(:procedure_id)
35-
unpayd_procudures = user_procedures.where(id: unpayd_procudures_ids)
36-
convert_money(unpayd_procudures.sum(&:amount_cents))
50+
procedures_by_id = {}
51+
user_procedures.each do |procedure|
52+
procedures_by_id[procedure.id] = procedure
53+
end
54+
total = 0
55+
event_procedures.reject(&:payd).each do |event_procedure|
56+
procedure = procedures_by_id[event_procedure.procedure_id]
57+
total += procedure.amount_cents if procedure
58+
end
59+
convert_money(total)
3760
end
3861
end
3962
end

spec/operations/event_procedures/total_amount_cents_spec.rb

Lines changed: 13 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -6,91 +6,31 @@
66
describe ".result" do
77
it "is successful" do
88
user = create(:user)
9-
10-
expect(described_class.result(user_id: user.id, month: nil, year: nil)).to be_success
9+
event_procedure = create(:event_procedure, user_id: user.id)
10+
expect(described_class.result(event_procedures: [event_procedure])).to be_success
1111
end
1212

1313
it "returns the amount_cents total, paid and unpaid of event_procedures" do
1414
user = create(:user)
15-
_payd_amount_cents = create_list(
15+
procedure_5000 = create(:procedure, amount_cents: 5000)
16+
procedure_2000 = create(:procedure, amount_cents: 2000)
17+
payd_amount_cents = create_list(
1618
:event_procedure, 3,
17-
procedure: create(:procedure, amount_cents: 5000),
19+
procedure: procedure_5000,
1820
user: user,
1921
payd: true
2022
)
21-
_unpayd_event_procedure = create(
22-
:event_procedure,
23-
procedure: create(:procedure, amount_cents: 2000),
23+
unpayd_event_procedure = create_list(
24+
:event_procedure, 2,
25+
procedure: procedure_2000,
2426
user: user,
2527
payd: false
2628
)
27-
total_amount_cents = described_class.call(user_id: user.id, month: nil, year: nil)
28-
29-
expect(total_amount_cents.total).to eq("R$170.00")
29+
event_procedures = payd_amount_cents + unpayd_event_procedure
30+
total_amount_cents = described_class.call(event_procedures: event_procedures)
31+
expect(total_amount_cents.total).to eq("R$190.00")
3032
expect(total_amount_cents.payd).to eq("R$150.00")
31-
expect(total_amount_cents.unpaid).to eq("R$20.00")
32-
end
33-
34-
it "calculates the total, payd, and unpaid amounts for a specific month" do
35-
user = create(:user)
36-
procedure_1000 = create(:procedure, amount_cents: 1000)
37-
procedure_2000 = create(:procedure, amount_cents: 2000)
38-
39-
_event_procedure_jan = create(
40-
:event_procedure, procedure: procedure_1000,
41-
date: "31/01/2023",
42-
payd: true,
43-
user: user
44-
)
45-
_payd_event_procedure_feb = create(
46-
:event_procedure, procedure: procedure_2000,
47-
date: "25/02/2023",
48-
payd: true,
49-
user: user
50-
)
51-
_unpayd_event_procedure_feb = create(
52-
:event_procedure, procedure: procedure_1000,
53-
date: "25/02/2023",
54-
payd: false,
55-
user: user
56-
)
57-
58-
total_amount_cents = described_class.call(user_id: user.id, month: "2", year: nil)
59-
60-
expect(total_amount_cents.total).to eq("R$30.00")
61-
expect(total_amount_cents.payd).to eq("R$20.00")
62-
expect(total_amount_cents.unpaid).to eq("R$10.00")
63-
end
64-
65-
it "calculates the total, payd, and unpaid amounts for a specific year" do
66-
user = create(:user)
67-
procedure_1000 = create(:procedure, amount_cents: 1000)
68-
procedure_2000 = create(:procedure, amount_cents: 2000)
69-
70-
_event_procedure_2023 = create(
71-
:event_procedure, procedure: procedure_1000,
72-
date: "31/01/2023",
73-
payd: true,
74-
user: user
75-
)
76-
_payd_event_procedure_2024 = create(
77-
:event_procedure, procedure: procedure_2000,
78-
date: "25/02/2024",
79-
payd: true,
80-
user: user
81-
)
82-
_unpayd_event_procedure_2024 = create(
83-
:event_procedure, procedure: procedure_1000,
84-
date: "25/02/2024",
85-
payd: false,
86-
user: user
87-
)
88-
89-
total_amount_cents = described_class.call(user_id: user.id, month: nil, year: "2024")
90-
91-
expect(total_amount_cents.total).to eq("R$30.00")
92-
expect(total_amount_cents.payd).to eq("R$20.00")
93-
expect(total_amount_cents.unpaid).to eq("R$10.00")
33+
expect(total_amount_cents.unpaid).to eq("R$40.00")
9434
end
9535
end
9636
end

spec/pdfs/event_procedures_report_pdf_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
it "generates a report with the correct content" do
77
user = create(:user)
88
pdf = Prawn::Document.new
9-
amount = EventProcedures::TotalAmountCents.call(user_id: user.id, month: nil, year: nil)
109
event_procedures = create_list(:event_procedure, 3, user_id: user.id)
10+
amount = EventProcedures::TotalAmountCents.call(event_procedures: event_procedures)
1111

1212
described_class.new(
1313
pdf: pdf, amount: amount, items: event_procedures, title: "Procedimentos", email: user.email

spec/pdfs/footer_pdf_spec.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
RSpec.describe FooterPdf, type: :pdf do
66
it "generates a footer with the correct content" do
77
user = create(:user)
8-
create_list(:event_procedure, 3, user_id: user.id)
8+
event_procedures = create_list(:event_procedure, 3, user_id: user.id)
99
total_amount_cents = EventProcedures::TotalAmountCents.call(
10-
user_id: user.id,
11-
month: nil,
12-
year: nil
10+
event_procedures: event_procedures
1311
)
1412
pdf = Prawn::Document.new
1513

spec/services/pdf_generator_service_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
it "generates event_procedures pdf" do
99
user = create(:user)
1010
event_procedures = create_list(:event_procedure, 11)
11-
amount = EventProcedures::TotalAmountCents.call(user_id: event_procedures.first.user_id, month: nil, year: nil)
11+
amount = EventProcedures::TotalAmountCents.call(event_procedures: event_procedures)
1212
pdf = described_class.new(
1313
relation: event_procedures, amount: amount, entity_name: "event_procedures", email: user.email
1414
).generate_pdf

0 commit comments

Comments
 (0)