package database

import (
	"embed"
	"testing"
)

var (
	//go:embed testdata/migration1/**
	testMigration1 embed.FS
	//go:embed testdata/migration2/**
	testMigration2 embed.FS
)

func TestMigration(t *testing.T) {
	dbc, err := New("sqlite", ":memory:", testEncryptionPass)
	if err != nil {
		t.Fatalf("creating database connector: %s", err)
	}
	defer dbc.Close()

	var (
		tm1 = NewEmbedFSMigrator(testMigration1, "testdata")
		tm2 = NewEmbedFSMigrator(testMigration2, "testdata")
	)

	if err = dbc.Migrate("test", tm1); err != nil {
		t.Errorf("migration 1 take 1: %s", err)
	}

	if err = dbc.Migrate("test", tm1); err != nil {
		t.Errorf("migration 1 take 2: %s", err)
	}

	if err = dbc.Migrate("test", tm2); err != nil {
		t.Errorf("migration 2 take 1: %s", err)
	}

	if err = dbc.Migrate("test", tm2); err != nil {
		t.Errorf("migration 2 take 2: %s", err)
	}
}