|
10 | 10 | it 'should report zero values' do |
11 | 11 | expect(report.report[:name]).to eq("Adult Incontinence") |
12 | 12 | expect(report.report[:entries]).to match(hash_including({ |
13 | | - "Adult incontinence supplies distributed" => "0", |
14 | | - "Adults Assisted Per Month" => 0, |
15 | 13 | "% adult incontinence bought" => "0%", |
16 | 14 | "% adult incontinence supplies donated" => "0%", |
| 15 | + "Adult incontinence supplies distributed" => "0", |
17 | 16 | "Adult incontinence supplies per adult per month" => 0, |
18 | 17 | "Money spent purchasing adult incontinence supplies" => "$0.00" |
19 | 18 | })) |
|
40 | 39 | adult_incontinence_item = organization.items.adult_incontinence.first |
41 | 40 | non_adult_incontinence_item = organization.items.where.not(id: organization.items.adult_incontinence).first |
42 | 41 |
|
43 | | - # kits |
44 | | - create(:base_item, name: "Adult Briefs (Medium)", partner_key: "adult_briefs_medium", category: "adult incontinence") |
45 | | - create(:base_item, name: "Adult Briefs (Large)", partner_key: "adult_briefs_large", category: "adult incontinence") |
46 | | - create(:base_item, name: "Adult Briefs (small)", partner_key: "adult_briefs_small", category: "adult incontinence") |
47 | | - create(:base_item, name: "Wipes", partner_key: "baby wipes", category: "wipes") |
48 | | - |
49 | | - adult_incontinence_kit_item_1 = create(:item, name: "Adult Briefs (Medium)", partner_key: "adult_briefs_medium", distribution_quantity: 1) |
50 | | - adult_incontinence_kit_item_2 = create(:item, name: "Adult Briefs (Large)", partner_key: "adult_briefs_large", distribution_quantity: 1) |
51 | | - adult_incontinence_kit_item_3 = create(:item, name: "Adult Briefs (Small)", partner_key: "adult_briefs_small", distribution_quantity: 1) |
52 | | - non_adult_incontinence_kit_item = create(:item, name: "Baby Wipes", partner_key: "baby wipes", reporting_category: "other", distribution_quantity: 1) |
53 | | - |
54 | | - donation_1 = create(:donation) |
55 | | - donation_2 = create(:donation) |
56 | | - donation_3 = create(:donation) |
57 | | - donation_4 = create(:donation) |
58 | | - |
59 | | - line_item_1 = LineItem.create!(item: adult_incontinence_kit_item_1, itemizable_id: donation_1.id, itemizable_type: "Donation", quantity: 5) |
60 | | - line_item_2 = LineItem.create!(item: adult_incontinence_kit_item_2, itemizable_id: donation_2.id, itemizable_type: "Donation", quantity: 5) |
61 | | - line_item_4 = LineItem.create!(item: adult_incontinence_kit_item_3, itemizable_id: donation_4.id, itemizable_type: "Donation", quantity: 5) |
62 | | - line_item_3 = LineItem.create!(item: non_adult_incontinence_kit_item, itemizable_id: donation_3.id, itemizable_type: "Donation", quantity: 5) |
63 | | - |
64 | | - @kit_1 = create(:kit, line_items: [line_item_1], organization: organization, item: adult_incontinence_kit_item_1) |
65 | | - @kit_2 = create(:kit, line_items: [line_item_2], organization: organization, item: adult_incontinence_kit_item_2) |
66 | | - @kit_4 = create(:kit, line_items: [line_item_4], organization: organization, item: adult_incontinence_kit_item_3) |
67 | | - @kit_3 = create(:kit, line_items: [line_item_3], organization: organization, item: non_adult_incontinence_kit_item) |
68 | | - |
69 | | - # kit distributions |
70 | | - kit_distribution_1 = create(:distribution, organization: organization, issued_at: within_time) |
71 | | - kit_distribution_2 = create(:distribution, organization: organization, issued_at: within_time) |
72 | | - kit_distribution_4 = create(:distribution, organization: organization, issued_at: within_time) |
73 | | - # wipes distribution |
74 | | - kit_distribution_3 = create(:distribution, organization: organization, issued_at: within_time) |
75 | | - |
76 | | - create(:line_item, :distribution, quantity: 100, item: @kit_1.line_items.first.item, itemizable: kit_distribution_1) |
77 | | - create(:line_item, :distribution, quantity: 100, item: @kit_2.line_items.first.item, itemizable: kit_distribution_2) |
78 | | - create(:line_item, :distribution, quantity: 100, item: @kit_4.line_items.first.item, itemizable: kit_distribution_4) |
79 | | - # wipes kit no ai items |
80 | | - create(:line_item, :distribution, quantity: 100, item: @kit_3.line_items.first.item, itemizable: kit_distribution_3) |
81 | 42 | # We will create data both within and outside our date range, and both adult_incontinence and non adult_incontinence. |
82 | 43 | # Spec will ensure that only the required data is included. |
83 | 44 |
|
84 | 45 | # Distributions |
85 | 46 | distributions = create_list(:distribution, 2, issued_at: within_time, organization: organization) |
86 | 47 | outside_distributions = create_list(:distribution, 2, issued_at: outside_time, organization: organization) |
87 | 48 | (distributions + outside_distributions).each do |dist| |
88 | | - create_list(:line_item, 5, :distribution, quantity: 5000, item: adult_incontinence_item, itemizable: dist) |
89 | | - create_list(:line_item, 5, :distribution, quantity: 500, item: non_adult_incontinence_item, itemizable: dist) |
| 49 | + create_list(:line_item, 5, :distribution, quantity: 200, item: adult_incontinence_item, itemizable: dist) |
| 50 | + create_list(:line_item, 5, :distribution, quantity: 30, item: non_adult_incontinence_item, itemizable: dist) |
90 | 51 | end |
91 | 52 |
|
92 | 53 | # Donations |
|
133 | 94 | end |
134 | 95 | end |
135 | 96 |
|
136 | | - it "returns an accurate number of adult served per month" do |
137 | | - expect(report.adults_served_per_month.round).to eq(108) |
138 | | - end |
139 | | - |
140 | | - it "should return the number of loose adult incontinence supplies distributed" do |
141 | | - expect(report.distributed_adult_incontinence_items_from_kits).to eq(1500.0) |
142 | | - end |
143 | | - it "should return the number of distributed adult incontinence items from kits" do |
144 | | - expect(report.distributed_adult_incontinence_items_from_kits).to eq(1500.0) |
145 | | - end |
146 | | - |
147 | | - it "should return the number of distributed kits only containing adult incontinence items per month" do |
148 | | - expect(report.total_distributed_kits_containing_adult_incontinence_items_per_month).to eq(25.0) |
149 | | - end |
150 | | - |
151 | | - it "should return the kits distributed within a specific year" do |
152 | | - result = report.distributed_kits_for_year |
153 | | - expect(result.to_a).to match_array([@kit_1.id, @kit_2.id, @kit_3.id, @kit_4.id]) |
154 | | - end |
155 | | - |
156 | 97 | it 'should report normal values' do |
157 | 98 | organization.items.adult_incontinence.first.update!(distribution_quantity: 20) |
| 99 | + |
158 | 100 | expect(report.report[:name]).to eq("Adult Incontinence") |
159 | 101 | expect(report.report[:entries]).to match(hash_including({ |
160 | 102 | "% adult incontinence bought" => "60%", |
161 | 103 | "% adult incontinence supplies donated" => "40%", |
162 | | - "Adults Assisted Per Month" => 233.33, |
163 | | - "Adult incontinence supplies distributed" => "51,800", |
164 | | - "Adult incontinence supplies per adult per month" => 18.5, |
| 104 | + "Adult incontinence supplies distributed" => "2,000", |
| 105 | + "Adult incontinence supplies per adult per month" => 20, |
165 | 106 | "Money spent purchasing adult incontinence supplies" => "$30.00" |
166 | 107 | })) |
167 | 108 | expect(report.report[:entries]['Adult incontinence supplies'].split(', ')) |
|
174 | 115 | "Adult Briefs (XXS)", |
175 | 116 | "Adult Incontinence Pads", |
176 | 117 | "Underpads (Pack)", |
177 | | - "Adult Cloth Diapers (Large/XL/XXL)", |
178 | | - "Adult Cloth Diapers (Small/Medium)", |
179 | 118 | "Liners (Incontinence)", |
180 | | - "Adult Briefs (Small)", |
181 | | - "Adult Briefs (Large)", |
182 | | - "Adult Briefs (Medium)") |
| 119 | + "Adult Cloth Diapers (Large/XL/XXL)", |
| 120 | + "Adult Cloth Diapers (Small/Medium)") |
183 | 121 | end |
184 | 122 |
|
185 | 123 | it 'should handle null distribution quantity' do |
186 | 124 | expect(report.report[:name]).to eq("Adult Incontinence") |
187 | 125 | expect(report.report[:entries]).to match(hash_including({ |
188 | 126 | "% adult incontinence bought" => "60%", |
189 | 127 | "% adult incontinence supplies donated" => "40%", |
190 | | - "Adult incontinence supplies distributed" => "51,800", |
191 | | - "Adults Assisted Per Month" => 108.33, |
192 | | - "Adult incontinence supplies per adult per month" => 39.85, |
| 128 | + "Adult incontinence supplies distributed" => "2,000", |
| 129 | + "Adult incontinence supplies per adult per month" => 50, |
193 | 130 | "Money spent purchasing adult incontinence supplies" => "$30.00" |
194 | 131 | })) |
195 | 132 | expect(report.report[:entries]['Adult incontinence supplies'].split(', ')) |
|
202 | 139 | "Adult Briefs (XXS)", |
203 | 140 | "Adult Incontinence Pads", |
204 | 141 | "Underpads (Pack)", |
205 | | - "Adult Cloth Diapers (Large/XL/XXL)", |
206 | | - "Adult Cloth Diapers (Small/Medium)", |
207 | | - "Liners (Incontinence)", |
208 | | - "Adult Briefs (Small)", |
209 | | - "Adult Briefs (Large)", |
210 | | - "Adult Briefs (Medium)") |
| 142 | + "Liners (Incontinence)", |
| 143 | + "Adult Cloth Diapers (Large/XL/XXL)", |
| 144 | + "Adult Cloth Diapers (Small/Medium)") |
211 | 145 | end |
212 | 146 | end |
213 | 147 | end |
|
0 commit comments