58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package rally
|
|
|
|
import (
|
|
"regexp"
|
|
"testing"
|
|
|
|
"github.com/DATA-DOG/go-sqlmock"
|
|
"github.com/jinzhu/gorm"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type RunnerSuite struct {
|
|
suite.Suite
|
|
DB *gorm.DB
|
|
mock sqlmock.Sqlmock
|
|
}
|
|
|
|
func (s *RunnerSuite) SetupSuite() {
|
|
db, mock, err := sqlmock.New()
|
|
require.NoError(s.T(), err)
|
|
|
|
s.DB, err = gorm.Open("sqlite3", db)
|
|
require.NoError(s.T(), err)
|
|
|
|
s.DB.LogMode(true)
|
|
s.mock = mock
|
|
}
|
|
|
|
func (s *RunnerSuite) TestGetLatestTaskWithNoRecords() {
|
|
s.mock.
|
|
ExpectQuery(regexp.QuoteMeta(`SELECT * FROM "tasks" WHERE ("tasks"."status" NOT IN (?)) ORDER BY "tasks"."id" DESC LIMIT 1`)).
|
|
WithArgs("running").
|
|
WillReturnRows(
|
|
sqlmock.NewRows([]string{"id", "status"}),
|
|
)
|
|
|
|
_, err := getLatestTask(s.DB)
|
|
require.Equal(s.T(), err, gorm.ErrRecordNotFound)
|
|
}
|
|
|
|
func (s *RunnerSuite) TestGetLatestTask() {
|
|
s.mock.
|
|
ExpectQuery(regexp.QuoteMeta(`SELECT * FROM "tasks" WHERE ("tasks"."status" NOT IN (?)) ORDER BY "tasks"."id" DESC LIMIT 1`)).
|
|
WithArgs("running").
|
|
WillReturnRows(
|
|
sqlmock.NewRows([]string{"id", "status"}).
|
|
AddRow(1, "finished"),
|
|
)
|
|
|
|
task, err := getLatestTask(s.DB)
|
|
require.NoError(s.T(), err)
|
|
require.Equal(s.T(), "finished", task.Status)
|
|
}
|
|
func TestRunnerSuite(t *testing.T) {
|
|
suite.Run(t, new(RunnerSuite))
|
|
}
|