Added tests

This commit is contained in:
Zach Musgrave
2024-01-17 11:13:59 -08:00
parent ee0270d0bb
commit 632eea5bf0
2 changed files with 75 additions and 2 deletions

View File

@@ -15,9 +15,14 @@
package sqle
import (
"context"
"testing"
"time"
"github.com/dolthub/dolt/go/libraries/doltcore/dtestutils"
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/dsess"
"github.com/dolthub/dolt/go/libraries/doltcore/table/editor"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/assert"
)
@@ -36,3 +41,71 @@ func TestIsKeyFuncs(t *testing.T) {
testKeyFunc(t, dsess.IsHeadKey, "dolt_working", false, "")
testKeyFunc(t, dsess.IsWorkingKey, "dolt_working", true, "dolt")
}
func TestNeedsToReloadEvents(t *testing.T) {
dEnv := dtestutils.CreateTestEnv()
tmpDir, err := dEnv.TempTableFilesDir()
require.NoError(t, err)
opts := editor.Options{Deaf: dEnv.DbEaFactory(), Tempdir: tmpDir}
timestamp := time.Now().Truncate(time.Minute).UTC()
db, err := NewDatabase(context.Background(), "dolt", dEnv.DbData(), opts)
require.NoError(t, err)
_, ctx, err := NewTestEngine(dEnv, context.Background(), db)
require.NoError(t, err)
var token any
t.Run("empty schema table doesn't need to be reloaded", func(t *testing.T) {
needsReload, err := db.NeedsToReloadEvents(ctx, token)
require.NoError(t, err)
assert.False(t, needsReload)
})
eventDefn := `CREATE EVENT testEvent
ON SCHEDULE
EVERY 1 DAY
STARTS now()
DO
BEGIN
CALL archive_order_history(DATE_SUB(CURDATE(), INTERVAL 1 YEAR));
END`
err = db.addFragToSchemasTable(ctx, "event", "testEvent", eventDefn, timestamp, nil)
require.NoError(t, err)
t.Run("events need to be reloaded after addition", func(t *testing.T) {
needsReload, err := db.NeedsToReloadEvents(ctx, token)
require.NoError(t, err)
assert.True(t, needsReload)
})
_, token, err = db.GetEvents(ctx)
require.NoError(t, err)
t.Run("events do not need to be reloaded after no change", func(t *testing.T) {
needsReload, err := db.NeedsToReloadEvents(ctx, token)
require.NoError(t, err)
assert.False(t, needsReload)
})
err = db.dropFragFromSchemasTable(ctx, "event", "testEvent", nil)
require.NoError(t, err)
t.Run("events need to be reloaded after dropping one", func(t *testing.T) {
needsReload, err := db.NeedsToReloadEvents(ctx, token)
require.NoError(t, err)
assert.True(t, needsReload)
})
_, token, err = db.GetEvents(ctx)
require.NoError(t, err)
t.Run("events do not need to be reloaded after no change", func(t *testing.T) {
needsReload, err := db.NeedsToReloadEvents(ctx, token)
require.NoError(t, err)
assert.False(t, needsReload)
})
}

View File

@@ -41,7 +41,7 @@ func TestProceduresMigration(t *testing.T) {
timestamp := time.Now().Truncate(time.Minute).UTC()
ctx, db := newDatabase(t, dEnv, opts, timestamp)
ctx, db := newDatabaseWithProcedures(t, dEnv, opts, timestamp)
t.Run("test migration logic", func(t *testing.T) {
// Call the logic to migrate it to the latest schema
@@ -102,7 +102,7 @@ func TestProceduresMigration(t *testing.T) {
}
func newDatabase(t *testing.T, dEnv *env.DoltEnv, opts editor.Options, timestamp time.Time) (*sql.Context, *Database) {
func newDatabaseWithProcedures(t *testing.T, dEnv *env.DoltEnv, opts editor.Options, timestamp time.Time) (*sql.Context, *Database) {
db, err := NewDatabase(context.Background(), "dolt", dEnv.DbData(), opts)
require.NoError(t, err)