171 lines
5.0 KiB
Go
171 lines
5.0 KiB
Go
|
package learsteam_quiz_test
|
||
|
|
||
|
// type ProgramTestSuite struct {
|
||
|
// suite.Suite
|
||
|
// db *gorm.DB
|
||
|
// repository repositories.ProgramRepository
|
||
|
// service services.ProgramService
|
||
|
// controller controllers.ProgramController
|
||
|
// }
|
||
|
|
||
|
// func (suite *ProgramTestSuite) SetupSuite() {
|
||
|
// // err := os.Remove("test.db")
|
||
|
// // if err != nil {
|
||
|
// // suite.Fail("Failed to remove the test database file")
|
||
|
// // }
|
||
|
|
||
|
// gorm_config := gorm.Config{NamingStrategy: schema.NamingStrategy{SingularTable: true}}
|
||
|
// db, _ := gorm.Open(sqlite.Open("test.db"), &gorm_config)
|
||
|
// db.AutoMigrate(&models.Program{})
|
||
|
|
||
|
// repository := repositories.NewProgramRepository(db)
|
||
|
// service := services.NewProgramService(repository)
|
||
|
// controller := controllers.NewProgramController(service)
|
||
|
|
||
|
// suite.db = db
|
||
|
// suite.service = service
|
||
|
// suite.repository = repository
|
||
|
// suite.controller = controller
|
||
|
|
||
|
// suite.CreateSampleData()
|
||
|
// }
|
||
|
|
||
|
// func (suite *ProgramTestSuite) CreateSampleData() {
|
||
|
// var programs []models.Program
|
||
|
// for i := 1; i < 101; i++ {
|
||
|
// t := []string{"tag" + strconv.Itoa(i), "taga", "tagb"}
|
||
|
// var j datatypes.JSON
|
||
|
// j, _ = json.Marshal(t)
|
||
|
// p := models.Program{
|
||
|
// ID: strconv.Itoa(i) + "_id",
|
||
|
// Subject: strconv.Itoa(i) + " subject",
|
||
|
// Content: strconv.Itoa(i) + " content",
|
||
|
// Tag: j,
|
||
|
// Tags: j.String(),
|
||
|
// Status: "on",
|
||
|
// PublishAt: time.Now(),
|
||
|
// UpdatedAt: time.Now(),
|
||
|
// CreatedAt: time.Now(),
|
||
|
// }
|
||
|
// programs = append(programs, p)
|
||
|
// }
|
||
|
|
||
|
// for _, program := range programs {
|
||
|
// suite.db.Create(&program)
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// func (suite *ProgramTestSuite) TearDownSuite() {
|
||
|
// // DB 삭제
|
||
|
// suite.db.Migrator().DropTable(&models.Program{})
|
||
|
// err := os.Remove("test.db")
|
||
|
// if err != nil {
|
||
|
// suite.Fail("Failed to remove the test database file")
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// func (suite *ProgramTestSuite) SetupTest() {
|
||
|
|
||
|
// }
|
||
|
|
||
|
// func (suite *ProgramTestSuite) TearDownTest() {
|
||
|
|
||
|
// }
|
||
|
|
||
|
// func TestProgramSuite(t *testing.T) {
|
||
|
// suite.Run(t, new(ProgramTestSuite))
|
||
|
// }
|
||
|
|
||
|
// // 목록 테스트 : 1page, 10개
|
||
|
// func (suite *ProgramTestSuite) TestListProgramSuccess() {
|
||
|
// programs, err := suite.repository.List("", "", 1, 10)
|
||
|
// assert.NoError(suite.T(), err)
|
||
|
// assert.NotNil(suite.T(), programs)
|
||
|
// assert.Equal(suite.T(), 10, len(*programs))
|
||
|
// program0 := (*programs)[0]
|
||
|
// assert.Equal(suite.T(), "100_id", program0.ID)
|
||
|
|
||
|
// program9 := (*programs)[9]
|
||
|
// assert.Equal(suite.T(), "91_id", program9.ID)
|
||
|
// }
|
||
|
|
||
|
// // 목록 테스트 : tag 검색
|
||
|
// func (suite *ProgramTestSuite) TestListProgramTagSearchSuccess() {
|
||
|
// programs, err := suite.repository.List("", "tag9", 1, 10)
|
||
|
// assert.NoError(suite.T(), err)
|
||
|
// assert.NotNil(suite.T(), programs)
|
||
|
// assert.Equal(suite.T(), 10, len(*programs))
|
||
|
// }
|
||
|
|
||
|
// // Total 테스트
|
||
|
// func (suite *ProgramTestSuite) TestTotalSuccess() {
|
||
|
// total, err := suite.repository.Total("", "")
|
||
|
// assert.NoError(suite.T(), err)
|
||
|
// assert.Equal(suite.T(), int64(100), total)
|
||
|
// }
|
||
|
|
||
|
// // Total 테스트 : tag 검색
|
||
|
// func (suite *ProgramTestSuite) TestTotalTagSuccess() {
|
||
|
// total, err := suite.repository.Total("", "tag2")
|
||
|
// assert.NoError(suite.T(), err)
|
||
|
// assert.Equal(suite.T(), int64(11), total)
|
||
|
// }
|
||
|
|
||
|
// // // 수정 테스트
|
||
|
// // func (suite *ProgramTestSuite) TestUpdateProgramSuccess() {
|
||
|
// // t := []string{"TAG"}
|
||
|
// // var j datatypes.JSON
|
||
|
// // j, _ = json.Marshal(t)
|
||
|
// // p := &models.Program{
|
||
|
// // ID: uuid.NewString(),
|
||
|
// // Subject: "My Subject",
|
||
|
// // Content: "My Content",
|
||
|
// // Tag: j,
|
||
|
// // Tags: j.String(),
|
||
|
// // Status: "on",
|
||
|
// // PublishAt: time.Now(),
|
||
|
// // UpdatedAt: time.Now(),
|
||
|
// // CreatedAt: time.Now(),
|
||
|
// // }
|
||
|
|
||
|
// // program, err := suite.repository.Create(p)
|
||
|
// // assert.NoError(suite.T(), err)
|
||
|
|
||
|
// // program.Subject = "My Subject Updated"
|
||
|
// // program.Content = "My Content Updated"
|
||
|
// // program.Tag = j
|
||
|
// // program.Tags = j.String()
|
||
|
// // program.Status = "draft"
|
||
|
|
||
|
// // updatedProgram, err := suite.repository.Update(program)
|
||
|
// // assert.NoError(suite.T(), err)
|
||
|
// // assert.Equal(suite.T(), program.Subject, updatedProgram.Subject)
|
||
|
// // assert.Equal(suite.T(), program.Content, updatedProgram.Content)
|
||
|
// // assert.Equal(suite.T(), program.Tag, updatedProgram.Tag)
|
||
|
// // assert.Equal(suite.T(), program.Status, updatedProgram.Status)
|
||
|
// // }
|
||
|
|
||
|
// // // 삭제 테스트
|
||
|
// // func (suite *ProgramTestSuite) TestDeleteProgramSuccess() {
|
||
|
// // t := []string{"TAG"}
|
||
|
// // var j datatypes.JSON
|
||
|
// // j, _ = json.Marshal(t)
|
||
|
// // p := &models.Program{
|
||
|
// // ID: uuid.NewString(),
|
||
|
// // Subject: "My Subject",
|
||
|
// // Content: "My Content",
|
||
|
// // Tag: j,
|
||
|
// // Tags: j.String(),
|
||
|
// // Status: "on",
|
||
|
// // PublishAt: time.Now(),
|
||
|
// // UpdatedAt: time.Now(),
|
||
|
// // CreatedAt: time.Now(),
|
||
|
// // }
|
||
|
// // _, err := suite.repository.Create(p)
|
||
|
// // assert.NoError(suite.T(), err)
|
||
|
// // err = suite.repository.Delete(p.ID)
|
||
|
// // assert.NoError(suite.T(), err)
|
||
|
// // _, err = suite.repository.Find(p.ID)
|
||
|
// // assert.Error(suite.T(), err)
|
||
|
// // }
|