package testing

import (
	"github.com/DATA-DOG/go-sqlmock"
	"github.com/stretchr/testify/mock"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
)

// MockAnythingSlice returns a slice of mock.Anything with given size.
func MockAnythingSlice(n int) []interface{} {
	slice := make([]interface{}, 0, n)
	for i := 0; i < n; i++ {
		slice = append(slice, mock.Anything)
	}
	return slice
}

func MockGormSqlmock() (*gorm.DB, sqlmock.Sqlmock, error) {
	conn, sm, err := sqlmock.New()
	if err != nil {
		return nil, nil, err
	}
	db, err := gorm.Open(postgres.New(postgres.Config{
		DSN:                  "postgres",
		DriverName:           "postgres",
		Conn:                 conn,
		PreferSimpleProtocol: true,
	}), &gorm.Config{})
	if err != nil {
		return nil, nil, err
	}
	return db, sm, nil
}
