127 lines
3.0 KiB
Go
127 lines
3.0 KiB
Go
package repository
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/stretchr/testify/suite"
|
|
"go.etcd.io/bbolt"
|
|
"go.uber.org/zap"
|
|
"os"
|
|
"penahub.gitlab.yandexcloud.net/backend/templategen_feedback/internal/models"
|
|
"testing"
|
|
)
|
|
|
|
type FeedbackTestSuite struct {
|
|
args *models.Feedback
|
|
repository *FeedbackRepository
|
|
db *bbolt.DB
|
|
suite.Suite
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) SetupSuite() {
|
|
suite.args = models.NewFeedback("test.repository.feedback.insert", "suite test", "suite test")
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) SetupTest() {
|
|
logger := zap.NewNop()
|
|
db, err := bbolt.Open("test.db", 0666, nil)
|
|
|
|
if suite.NoError(err) {
|
|
suite.db = db
|
|
suite.repository = NewFeedback(logger, db)
|
|
err = suite.repository.CreateBucket()
|
|
if suite.NoError(err) {
|
|
err = suite.repository.Insert(suite.args)
|
|
suite.NoError(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TearDownTest() {
|
|
suite.NoError(suite.db.Close())
|
|
suite.NoError(os.Remove("test.db"))
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_CreateBucket() {
|
|
err := suite.repository.CreateBucket()
|
|
suite.NoError(err)
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_Insert() {
|
|
err := suite.repository.Insert(suite.args)
|
|
if suite.NoError(err) {
|
|
got, err := suite.repository.Get(suite.args.GetID())
|
|
|
|
if suite.NoError(err) {
|
|
suite.Equal(suite.args.GetID(), got.GetID())
|
|
suite.Equal(suite.args.Contact, got.Contact)
|
|
suite.Equal(suite.args.WhoAmi, got.WhoAmi)
|
|
suite.Equal(suite.args.Host, got.Host)
|
|
suite.True(suite.args.CreatedAt.Equal(got.CreatedAt))
|
|
}
|
|
}
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_GetAll() {
|
|
gotArr, err := suite.repository.GetAll()
|
|
got := gotArr[0]
|
|
if suite.NoError(err) {
|
|
suite.Equal(suite.args.GetID(), got.GetID())
|
|
suite.Equal(suite.args.Contact, got.Contact)
|
|
suite.Equal(suite.args.WhoAmi, got.WhoAmi)
|
|
suite.Equal(suite.args.Host, got.Host)
|
|
suite.True(suite.args.CreatedAt.Equal(got.CreatedAt))
|
|
}
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_Get() {
|
|
got, err := suite.repository.Get(suite.args.GetID())
|
|
|
|
if suite.NoError(err) {
|
|
suite.Equal(suite.args.GetID(), got.GetID())
|
|
suite.Equal(suite.args.Contact, got.Contact)
|
|
suite.Equal(suite.args.WhoAmi, got.WhoAmi)
|
|
suite.Equal(suite.args.Host, got.Host)
|
|
suite.True(suite.args.CreatedAt.Equal(got.CreatedAt))
|
|
}
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_Delete() {
|
|
err := suite.repository.Delete(suite.args.GetID())
|
|
|
|
if suite.NoError(err) {
|
|
got, err := suite.repository.Get(suite.args.GetID())
|
|
fmt.Println("got:", got, err)
|
|
}
|
|
}
|
|
|
|
func (suite *FeedbackTestSuite) TestFeedback_err() {
|
|
tests := []struct {
|
|
name string
|
|
args error
|
|
want bool
|
|
}{
|
|
{
|
|
name: "no error",
|
|
args: nil,
|
|
want: false,
|
|
},
|
|
{
|
|
name: "have error",
|
|
args: errors.New("test.repository.feedback.err"),
|
|
want: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
suite.Run(tt.name, func() {
|
|
got := suite.repository.err(tt.args)
|
|
suite.Equal(tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestFeedbackTestSuite(t *testing.T) {
|
|
suite.Run(t, new(FeedbackTestSuite))
|
|
}
|