updated tests

This commit is contained in:
Gani Georgiev 2024-10-18 12:23:18 +03:00
parent 5dbf975424
commit dbc074ee9a
2 changed files with 27 additions and 8 deletions

View File

@ -115,6 +115,18 @@ func TestSyncRecordTableSchema(t *testing.T) {
} }
} }
func getTotalViews(app core.App) (int, error) {
var total int
err := app.DB().Select("count(*)").
From("sqlite_master").
AndWhere(dbx.NewExp("sql is not null")).
AndWhere(dbx.HashExp{"type": "view"}).
Row(&total)
return total, err
}
func TestSingleVsMultipleValuesNormalization(t *testing.T) { func TestSingleVsMultipleValuesNormalization(t *testing.T) {
t.Parallel() t.Parallel()
@ -126,6 +138,11 @@ func TestSingleVsMultipleValuesNormalization(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
beforeTotalViews, err := getTotalViews(app)
if err != nil {
t.Fatal(err)
}
// mock field changes // mock field changes
collection.Fields.GetByName("select_one").(*core.SelectField).MaxSelect = 2 collection.Fields.GetByName("select_one").(*core.SelectField).MaxSelect = 2
collection.Fields.GetByName("select_many").(*core.SelectField).MaxSelect = 1 collection.Fields.GetByName("select_many").(*core.SelectField).MaxSelect = 1
@ -146,11 +163,13 @@ func TestSingleVsMultipleValuesNormalization(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
// ensures that the writable schema was reverted to its expected default // ensure that the views were reinserted
var writableSchema bool afterTotalViews, err := getTotalViews(app)
app.DB().NewQuery("PRAGMA writable_schema").Row(&writableSchema) if err != nil {
if writableSchema == true { t.Fatal(err)
t.Fatalf("Expected writable_schema to be OFF, got %v", writableSchema) }
if afterTotalViews != beforeTotalViews {
t.Fatalf("Expected total views %d, got %d", beforeTotalViews, afterTotalViews)
} }
// check whether the columns DEFAULT definition was updated // check whether the columns DEFAULT definition was updated

View File

@ -141,7 +141,7 @@ func (app *BaseApp) delete(ctx context.Context, model Model, isForAuxDB bool) er
}) })
if deleteErr != nil { if deleteErr != nil {
errEvent := &ModelErrorEvent{ModelEvent: *event, Error: deleteErr} errEvent := &ModelErrorEvent{ModelEvent: *event, Error: deleteErr}
errEvent.App = app errEvent.App = app // replace with the initial app in case it was changed by the hook
hookErr := app.OnModelAfterDeleteError().Trigger(errEvent) hookErr := app.OnModelAfterDeleteError().Trigger(errEvent)
if hookErr != nil { if hookErr != nil {
return errors.Join(deleteErr, hookErr) return errors.Join(deleteErr, hookErr)
@ -332,7 +332,7 @@ func (app *BaseApp) create(ctx context.Context, model Model, withValidations boo
event.Model.MarkAsNew() // reset "new" state event.Model.MarkAsNew() // reset "new" state
errEvent := &ModelErrorEvent{ModelEvent: *event, Error: saveErr} errEvent := &ModelErrorEvent{ModelEvent: *event, Error: saveErr}
errEvent.App = app errEvent.App = app // replace with the initial app in case it was changed by the hook
hookErr := app.OnModelAfterCreateError().Trigger(errEvent) hookErr := app.OnModelAfterCreateError().Trigger(errEvent)
if hookErr != nil { if hookErr != nil {
return errors.Join(saveErr, hookErr) return errors.Join(saveErr, hookErr)
@ -416,7 +416,7 @@ func (app *BaseApp) update(ctx context.Context, model Model, withValidations boo
}) })
if saveErr != nil { if saveErr != nil {
errEvent := &ModelErrorEvent{ModelEvent: *event, Error: saveErr} errEvent := &ModelErrorEvent{ModelEvent: *event, Error: saveErr}
errEvent.App = app errEvent.App = app // replace with the initial app in case it was changed by the hook
hookErr := app.OnModelAfterUpdateError().Trigger(errEvent) hookErr := app.OnModelAfterUpdateError().Trigger(errEvent)
if hookErr != nil { if hookErr != nil {
return errors.Join(saveErr, hookErr) return errors.Join(saveErr, hookErr)