package accounts

import (
	"testing"

	"gitea.qpismont.fr/qpismont/trepa/test"
	"github.com/magiconair/properties/assert"
)

func TestRepository_Insert(t *testing.T) {
	db := test.SetupTestDB(t, "../../")
	defer db.Close()

	repo := NewRepository(db)

	account := &Account{
		Username: "test",
		Password: "test",
		RoleId:   1,
	}

	id, err := repo.Insert(account)
	if err != nil {
		t.Fatalf("Failed to insert account: %v", err)
	}

	assert.Equal(t, id, 3)
}

func TestRepository_FetchOneByUsername(t *testing.T) {
	db := test.SetupTestDB(t, "../../")
	defer db.Close()

	repo := NewRepository(db)

	account, err := repo.FetchOneByUsername("admin")
	if err != nil {
		t.Fatalf("Failed to fetch account: %v", err)
	}

	if account == nil {
		t.Fatalf("Account not found")
	}

	assert.Equal(t, account.Username, "admin")
	assert.Equal(t, account.Password, "LOLPASSWORD")
	assert.Equal(t, account.RoleId, 1)
}