package core

import (
	"fmt"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestComputeDBURL(t *testing.T) {
	LoadEnvVars("../../.env")

	dbHost := MustGetEnvVar("TEST_DB_HOST")
	dbPort := MustGetEnvVar("TEST_DB_PORT")
	dbUser := MustGetEnvVar("TEST_DB_USER")
	dbPassword := MustGetEnvVar("TEST_DB_PASSWORD")
	dbName := MustGetEnvVar("TEST_DB_NAME")

	dbURL := ComputeDBURL(dbHost, dbPort, dbUser, dbPassword, dbName)

	assert.Equal(t, dbURL, fmt.Sprintf("postgres://%s:%s@%s:%s/%s", dbUser, dbPassword, dbHost, dbPort, dbName))
}

func TestSetupDB(t *testing.T) {
	LoadEnvVars("../../.env")

	dbHost := MustGetEnvVar("TEST_DB_HOST")
	dbPort := MustGetEnvVar("TEST_DB_PORT")
	dbUser := MustGetEnvVar("TEST_DB_USER")
	dbPassword := MustGetEnvVar("TEST_DB_PASSWORD")
	dbName := MustGetEnvVar("TEST_DB_NAME")

	dbURL := ComputeDBURL(dbHost, dbPort, dbUser, dbPassword, dbName)
	db, err := SetupDB(dbURL)
	defer db.Close()

	assert.NoError(t, err)
	assert.NotNil(t, db)
}