package dbstore import ( "context" "os" "path/filepath" // "reflect" "testing" // "time" ) func TestNewTxDupTx(t *testing.T) { // cache context, create temp dir ctx := context.Background() dir, err := os.MkdirTemp("", "") if err != nil { t.Error(err) return } defer os.RemoveAll(dir) // open db db, err := Open(filepath.Join(dir, "newtxduptx.db")) if err != nil { t.Error(err) return } // init db if err := db.Init(ctx); err != nil { t.Error(err) return } // create first transaction if _, err = db.Begin(ctx, []string{}); err != nil { t.Error(err) return } // create second transaction got, err := db.Begin(ctx, []string{}) if err != nil { // FIXME t.Errorf("got %v, exp error", got) return } } func TestNewTxBadQueries(t *testing.T) { badQueryIds := []string { "query/does/not/exist" } // cache context, create temp dir ctx := context.Background() dir, err := os.MkdirTemp("", "") if err != nil { t.Error(err) return } defer os.RemoveAll(dir) // open db db, err := Open(filepath.Join(dir, "newtx-bad-queries.db")) if err != nil { t.Error(err) return } // init db if err := db.Init(ctx); err != nil { t.Error(err) return } // create first transaction if got, err := db.Begin(ctx, badQueryIds); err == nil { t.Errorf("got %v, exp error", got) return } } func TestNewTxPrepareFail(t *testing.T) { // cache context, create temp dir ctx := context.Background() dir, err := os.MkdirTemp("", "") if err != nil { t.Error(err) return } defer os.RemoveAll(dir) // open db db, err := Open(filepath.Join(dir, "newtx-prepare-fail.db")) if err != nil { t.Error(err) return } // create transaction if got, err := db.Begin(ctx, []string { "test/junk" }); err == nil { t.Errorf("got %v, exp error", got) } } func TestTxExecFail(t *testing.T) { // cache context, create temp dir ctx := context.Background() dir, err := os.MkdirTemp("", "") if err != nil { t.Error(err) return } defer os.RemoveAll(dir) // open db db, err := Open(filepath.Join(dir, "txexecfail.db")) if err != nil { t.Error(err) return } // init db if err := db.Init(ctx); err != nil { t.Error(err) return } // create transaction tx, err := db.Begin(ctx, []string { "init" }) if err != nil { t.Error(err) return } // close transaction (this will clear statements) tx.Close() if got, err := tx.Exec(ctx, "init"); err == nil { t.Errorf("got %v, exp error", got) } }