mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-11-01 02:39:26 -05:00
- Added `send_harvest_reminder` preference to Member model and settings UI. - Implemented `harvest_in_next_week?` in PredictHarvest concern. - Created `harvest_reminder` email with localized templates. - Added `growstuff:send_harvest_reminders` Rake task to run weekly. - Refactored existing and new reminder tasks to use `deliver_later` for scalability. - Added unit tests for prediction logic and mailer. - Fixed a bug in the existing planting reminder task where it was using an uninitialized constant `Notifier`. Co-authored-by: CloCkWeRX <365751+CloCkWeRX@users.noreply.github.com>
42 lines
1.3 KiB
Ruby
42 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe "Harvest prediction logic" do
|
|
let(:crop) { create(:crop, median_days_to_first_harvest: 20) }
|
|
let(:planting) { create(:planting, crop: crop) }
|
|
|
|
describe "#harvest_in_next_week?" do
|
|
it "is true if predicted harvest is in 5 days" do
|
|
planting.planted_at = 15.days.ago
|
|
expect(planting.harvest_in_next_week?).to be true
|
|
end
|
|
|
|
it "is true if predicted harvest is today" do
|
|
planting.planted_at = 20.days.ago
|
|
expect(planting.harvest_in_next_week?).to be true
|
|
end
|
|
|
|
it "is true if predicted harvest is in 7 days" do
|
|
planting.planted_at = 13.days.ago
|
|
expect(planting.harvest_in_next_week?).to be true
|
|
end
|
|
|
|
it "is false if predicted harvest is in 8 days" do
|
|
planting.planted_at = 12.days.ago
|
|
expect(planting.harvest_in_next_week?).to be false
|
|
end
|
|
|
|
it "is false if predicted harvest was yesterday" do
|
|
planting.planted_at = 21.days.ago
|
|
expect(planting.harvest_in_next_week?).to be false
|
|
end
|
|
|
|
it "is false if there are already harvests" do
|
|
planting.planted_at = 15.days.ago
|
|
create(:harvest, planting: planting, owner: planting.owner, crop: planting.crop, harvested_at: 1.day.ago)
|
|
expect(planting.harvest_in_next_week?).to be false
|
|
end
|
|
end
|
|
end
|