@@ -0,0 +1,53 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gardomatic.kleiax.de/internal/storage"
|
||||
)
|
||||
|
||||
func TestSyncSeasonTaskTemplatesCreatesAndPreservesDerivedTemplates(t *testing.T) {
|
||||
gardenID, march, day, april := 3, 3, 10, 4
|
||||
model := &templateTestModel{items: map[int]storage.SpeciesTaskTemplate{}, nextID: 4}
|
||||
app, _, _ := newGardenTestApplication()
|
||||
app.models.SpeciesTaskTemplates = model
|
||||
species := storage.Species{ID: 2, GardenID: &gardenID, PlantingMonthFrom: &march, PlantingDayFrom: &day, PlantingMonthTo: &april, PlantingDayTo: &day}
|
||||
|
||||
if err := app.syncSeasonTaskTemplates(gardenID, species); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(model.items) != 1 {
|
||||
t.Fatalf("templates=%d want=1", len(model.items))
|
||||
}
|
||||
var generated storage.SpeciesTaskTemplate
|
||||
for _, generated = range model.items {
|
||||
}
|
||||
if generated.Origin != storage.TaskTemplateOriginSeasonPlanting || generated.TriggerType != storage.TaskTriggerRelativeToSpeciesPlanting {
|
||||
t.Fatalf("unexpected generated template: %+v", generated)
|
||||
}
|
||||
if generated.Duration != 31 || generated.Recurrence != storage.TaskRecurrenceNone {
|
||||
t.Fatalf("unexpected generated schedule: %+v", generated)
|
||||
}
|
||||
|
||||
generated.Title, generated.Active = "Eigener Titel", false
|
||||
model.items[generated.ID] = generated
|
||||
if err := app.syncSeasonTaskTemplates(gardenID, species); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := model.items[generated.ID]; got.Title != "Eigener Titel" || got.Active {
|
||||
t.Fatalf("user changes were overwritten: %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGeneratedTaskUsesSpeciesPlantingSeason(t *testing.T) {
|
||||
acquired := time.Date(2026, 8, 1, 0, 0, 0, 0, time.UTC)
|
||||
month, day := 3, 15
|
||||
plant := storage.Plant{ID: 8, AcquiredAt: &acquired}
|
||||
species := storage.Species{PlantingMonthFrom: &month, PlantingDayFrom: &day}
|
||||
template := storage.SpeciesTaskTemplate{ID: 9, Title: "Pflanzen", TriggerType: storage.TaskTriggerRelativeToSpeciesPlanting, DurationUnit: storage.TaskDurationDay}
|
||||
tasks := generatedTasksForTemplate(plant, species, template, nil, 3, 1, time.Date(2026, 9, 1, 0, 0, 0, 0, time.UTC))
|
||||
if len(tasks) != 1 || tasks[0].DueAtStart.Month() != time.March || tasks[0].DueAtStart.Day() != 15 || tasks[0].DueAtStart.Year() != 2027 {
|
||||
t.Fatalf("unexpected planting season task: %+v", tasks)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user