package mysqlite

import (
	"fmt"
	"github.com/stretchr/testify/require"
	"testing"
)

func openEmptyTestDb(t *testing.T) *Db {
	db, err := OpenDb(":memory:")
	require.NoError(t, err, "error opening db")
	require.NotNil(t, db, "db was nil")
	return db
}

func TestDb_Begin(t *testing.T) {
	db := openEmptyTestDb(t)
	err := db.Close()
	require.NoError(t, err, "error closing db")
}

func TestDb_GetUserVersion(t *testing.T) {
	db := openEmptyTestDb(t)
	defer db.MustClose()
	userVersion := -1
	err := db.Query("pragma user_version").ScanSingle(&userVersion)
	require.NoError(t, err)
	require.Equal(t, 0, userVersion)
}

func TestDb_SetUserVersion(t *testing.T) {
	db := openEmptyTestDb(t)
	defer db.MustClose()

	err := db.Query(fmt.Sprintf("pragma user_version = %d", 123)).Exec()
	require.NoError(t, err)

	userVersion := -1
	err = db.Query("pragma user_version").ScanSingle(&userVersion)
	require.NoError(t, err)
	require.Equal(t, 123, userVersion)
}