Files
Gardomatic/internal/api/season_templates_test.go
T
kleiax 904d14b64c
CI / test (push) Canceled after 0s
Initial commit
2026-09-12 22:22:17 +02:00

54 lines
2.2 KiB
Go

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)
}
}