github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/models/tag_test.go (about) 1 package model 2 3 import ( 4 "errors" 5 "github.com/DATA-DOG/go-sqlmock" 6 "github.com/stretchr/testify/assert" 7 "testing" 8 ) 9 10 func TestTag_Create(t *testing.T) { 11 asserts := assert.New(t) 12 tag := Tag{} 13 14 // 成功 15 { 16 mock.ExpectBegin() 17 mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 18 mock.ExpectCommit() 19 id, err := tag.Create() 20 asserts.NoError(mock.ExpectationsWereMet()) 21 asserts.NoError(err) 22 asserts.EqualValues(1, id) 23 } 24 25 // 失败 26 { 27 mock.ExpectBegin() 28 mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error")) 29 mock.ExpectRollback() 30 id, err := tag.Create() 31 asserts.NoError(mock.ExpectationsWereMet()) 32 asserts.Error(err) 33 asserts.EqualValues(0, id) 34 } 35 } 36 37 func TestDeleteTagByID(t *testing.T) { 38 asserts := assert.New(t) 39 mock.ExpectBegin() 40 mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1)) 41 mock.ExpectCommit() 42 err := DeleteTagByID(1, 2) 43 asserts.NoError(mock.ExpectationsWereMet()) 44 asserts.NoError(err) 45 } 46 47 func TestGetTagsByUID(t *testing.T) { 48 asserts := assert.New(t) 49 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1)) 50 res, err := GetTagsByUID(1) 51 asserts.NoError(mock.ExpectationsWereMet()) 52 asserts.NoError(err) 53 asserts.Len(res, 1) 54 } 55 56 func TestGetTagsByID(t *testing.T) { 57 asserts := assert.New(t) 58 mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"name"}).AddRow("tag")) 59 res, err := GetTagsByID(1, 1) 60 asserts.NoError(mock.ExpectationsWereMet()) 61 asserts.NoError(err) 62 asserts.EqualValues("tag", res.Name) 63 }