Skip to content

Commit 1c935f6

Browse files
committed
Ensure floats are used for calculations
1 parent 5c5b761 commit 1c935f6

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

app/services/reports/adult_incontinence_report_service.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ def total_supplies_distributed
4040
end
4141

4242
def monthly_supplies
43-
total_supplies_distributed / 12.0
43+
total_supplies_distributed.to_f / 12.0
4444
end
4545

4646
def supplies_per_adult_per_month
47-
monthly_supplies / (adults_served_per_month.nonzero? || 1)
47+
monthly_supplies.to_f / (adults_served_per_month.nonzero? || 1)
4848
end
4949

5050
def types_of_supplies
@@ -55,14 +55,14 @@ def types_of_supplies
5555
def percent_donated
5656
return 0.0 if total_supplies.zero?
5757

58-
(donated_supplies / total_supplies.to_f) * 100
58+
(donated_supplies.to_f / total_supplies.to_f) * 100.0
5959
end
6060

6161
# @return [Float]
6262
def percent_bought
6363
return 0.0 if total_supplies.zero?
6464

65-
(purchased_supplies / total_supplies.to_f) * 100
65+
(purchased_supplies.to_f / total_supplies.to_f) * 100.0
6666
end
6767

6868
# @return [String]
@@ -82,7 +82,7 @@ def purchased_supplies
8282

8383
# @return [Integer]
8484
def total_supplies
85-
@total_supplies ||= purchased_supplies + donated_supplies
85+
@total_supplies ||= purchased_supplies.to_f + donated_supplies.to_f
8686
end
8787

8888
# @return [Integer]
@@ -117,7 +117,7 @@ def distributed_adult_incontinence_items_from_kits
117117

118118
result = ActiveRecord::Base.connection.execute(sanitized_sql)
119119

120-
result.first['sum'].to_i
120+
result.first['sum'].to_f
121121
end
122122

123123
def adults_served_per_month
@@ -130,7 +130,7 @@ def total_people_served_with_loose_supplies_per_month
130130
.for_year(year)
131131
.joins(line_items: :item)
132132
.merge(Item.adult_incontinence)
133-
.sum('line_items.quantity / COALESCE(items.distribution_quantity, 50)')
133+
.sum('line_items.quantity / COALESCE(items.distribution_quantity, 50.0)')
134134
total_quantity.to_f / 12.0
135135
end
136136

spec/services/reports/adult_incontinence_report_service_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
it 'should report zero values' do
1111
expect(report.report[:name]).to eq("Adult Incontinence")
1212
expect(report.report[:entries]).to match(hash_including({
13-
"Adult incontinence supplies distributed" => "0",
13+
"Adult incontinence supplies distributed" => "0.0",
1414
"Adults Assisted Per Month" => 0,
1515
"% adult incontinence bought" => "0%",
1616
"% adult incontinence supplies donated" => "0%",
@@ -152,7 +152,7 @@
152152
"% adult incontinence bought" => "60%",
153153
"% adult incontinence supplies donated" => "40%",
154154
"Adults Assisted Per Month" => 9,
155-
"Adult incontinence supplies distributed" => "2,180",
155+
"Adult incontinence supplies distributed" => "2,180.0",
156156
"Adult incontinence supplies per adult per month" => 21,
157157
"Money spent purchasing adult incontinence supplies" => "$30.00"
158158
}))
@@ -179,9 +179,9 @@
179179
expect(report.report[:entries]).to match(hash_including({
180180
"% adult incontinence bought" => "60%",
181181
"% adult incontinence supplies donated" => "40%",
182-
"Adult incontinence supplies distributed" => "2,180",
182+
"Adult incontinence supplies distributed" => "2,180.0",
183183
"Adults Assisted Per Month" => 4,
184-
"Adult incontinence supplies per adult per month" => 51,
184+
"Adult incontinence supplies per adult per month" => 50,
185185
"Money spent purchasing adult incontinence supplies" => "$30.00"
186186
}))
187187
expect(report.report[:entries]['Adult incontinence supplies'].split(', '))

0 commit comments

Comments
 (0)