// Copyright 2024 schukai GmbH // SPDX-License-Identifier: AGPL-3.0 package jobqueue import ( "github.com/stretchr/testify/assert" "gorm.io/driver/sqlite" "gorm.io/gorm" "testing" ) func TestCreateOrUpdateJob(t *testing.T) { gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{}) if err != nil { t.Fatalf("an error occurred while opening the database: %v", err) } t.Cleanup(func() { sqlDB, err := gormDB.DB() if err != nil { t.Fatalf("failed to get generic database object from GORM DB: %v", err) } _ = sqlDB.Close() }) db := gormDB // Migrate the schema assert.NoError(t, db.AutoMigrate(&JobPersistence{}, &JobLog{}, &JobStats{})) runner := &CounterRunnable{} job := NewJob[CounterResult]("job1", runner) assert.NoError(t, saveJob(job.GetPersistence(), db)) var jobPersistence JobPersistence assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error) assert.Equal(t, job.GetID(), jobPersistence.ID) assert.Equal(t, "", jobPersistence.Description) assert.Equal(t, Priority(1), jobPersistence.Priority) job.description = "Updated description" assert.NoError(t, saveJob(job.GetPersistence(), db)) assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error) assert.Equal(t, "Updated description", jobPersistence.Description) }