Skip to content

Commit a8887bf

Browse files
committed
Fix deliveries_count_for lookup with non-standard fiscal years
deliveries_count_for expects an integer year, not a FiscalYear object. The deliveries_counts hash is keyed by year as string (e.g. "2025"), but FiscalYear#to_s returns "2025-26" for non-standard fiscal years, causing the lookup to fail and incorrectly triggering the fallback to the primary delivery cycle.
1 parent d3b5b8a commit a8887bf

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

app/models/membership_renewal.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def renew!(attrs = {})
2727

2828
new_membership = Membership.new(renewed_attrs(attrs))
2929

30-
if new_membership.delivery_cycle.deliveries_count_for(@fiscal_year) == 0
30+
if new_membership.delivery_cycle.deliveries_count_for(@fiscal_year.year) == 0
3131
new_membership.delivery_cycle = DeliveryCycle.primary
3232
end
3333

test/models/membership_renewal_test.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,4 +190,34 @@ class MembershipRenewalTest < ActiveSupport::TestCase
190190
renewed_membership = membership.reload.renewed_membership
191191
assert_equal delivery_cycles(:all), renewed_membership.delivery_cycle
192192
end
193+
194+
test "keeps delivery cycle with non-standard fiscal year when it has deliveries" do
195+
org(fiscal_year_start_month: 4)
196+
197+
cycle_with_deliveries = DeliveryCycle.create!(
198+
names: { en: "Has Deliveries" },
199+
wdays: [ 1 ],
200+
depots: [ depots(:home) ],
201+
periods_attributes: [ { from_fy_month: 1, to_fy_month: 12 } ]
202+
)
203+
cycle_with_deliveries.update_column(:deliveries_counts, { "2025" => 10 })
204+
205+
# Create a membership that fits the non-standard fiscal year (April 2024 - March 2025)
206+
member = members(:jane)
207+
membership = Membership.create!(
208+
member: member,
209+
basket_size: basket_sizes(:large),
210+
depot: depots(:bakery),
211+
delivery_cycle: cycle_with_deliveries,
212+
started_on: "2024-04-01",
213+
ended_on: "2025-03-31"
214+
)
215+
216+
assert_difference "Membership.count", 1 do
217+
MembershipRenewal.new(membership).renew!
218+
end
219+
220+
renewed_membership = membership.reload.renewed_membership
221+
assert_equal cycle_with_deliveries, renewed_membership.delivery_cycle
222+
end
193223
end

0 commit comments

Comments
 (0)