mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-26 10:37:04 -06:00
Added tests
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user