package health_test

import (
	"context"
	"testing"

	"github.com/fiskerinc/cloud-services/pkg/health"
	"github.com/fiskerinc/cloud-services/pkg/testhelper"

	"github.com/go-pg/pg/v10/orm"
	"github.com/pkg/errors"
)

func TestPostgresCheck(t *testing.T) {
	mock := MockPostgres{}
	check := health.NewPostgresCheck(&mock)

	err := check(context.Background())
	testhelper.NoError(t, "No error", err)

	mock.PingError = errors.New("ping error")
	err = check(context.Background())
	testhelper.Error(t, "Ping error", err)
}

type MockPostgres struct {
	OrmResult orm.Result
	PingError error
	ExecError error
}

func (m *MockPostgres) Ping(ctx context.Context) error {
	return m.PingError
}

func (m *MockPostgres) Exec(query interface{}, params ...interface{}) (res orm.Result, err error) {
	return m.OrmResult, m.ExecError
}
