package model import ( "github.com/DATA-DOG/go-sqlmock" "github.com/jinzhu/gorm" "github.com/pkg/errors" "github.com/stretchr/testify/assert" "testing" ) func TestGetGroupByID(t *testing.T) { asserts := assert.New(t) //找到用户组时 groupRows := sqlmock.NewRows([]string{"id", "name", "policies"}). AddRow(1, "管理员", "[1]") mock.ExpectQuery("^SELECT (.+)").WillReturnRows(groupRows) group, err := GetGroupByID(1) asserts.NoError(err) asserts.Equal(Group{ Model: gorm.Model{ ID: 1, }, Name: "管理员", Policies: "[1]", PolicyList: []uint{1}, }, group) //未找到用户时 mock.ExpectQuery("^SELECT (.+)").WillReturnError(errors.New("not found")) group, err = GetGroupByID(1) asserts.Error(err) asserts.Equal(Group{}, group) } func TestGroup_AfterFind(t *testing.T) { asserts := assert.New(t) testCase := Group{ Model: gorm.Model{ ID: 1, }, Name: "管理员", Policies: "[1]", } err := testCase.AfterFind() asserts.NoError(err) asserts.Equal(testCase.PolicyList, []uint{1}) testCase.Policies = "[1,2,3,4,5]" err = testCase.AfterFind() asserts.NoError(err) asserts.Equal(testCase.PolicyList, []uint{1, 2, 3, 4, 5}) testCase.Policies = "[1,2,3,4,5" err = testCase.AfterFind() asserts.Error(err) testCase.Policies = "[]" err = testCase.AfterFind() asserts.NoError(err) asserts.Equal(testCase.PolicyList, []uint{}) } func TestGroup_BeforeSave(t *testing.T) { asserts := assert.New(t) group := Group{ PolicyList: []uint{1, 2, 3}, } { err := group.BeforeSave() asserts.NoError(err) asserts.Equal("[1,2,3]", group.Policies) } }