updateDeptLogic_mock_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package dept
  2. import (
  3. "testing"
  4. deptModel "perms-system-server/internal/model/dept"
  5. "perms-system-server/internal/testutil/ctxhelper"
  6. "perms-system-server/internal/testutil/mocks"
  7. "perms-system-server/internal/types"
  8. "github.com/stretchr/testify/assert"
  9. "go.uber.org/mock/gomock"
  10. )
  11. // TC-0105: DeptType变更时级联清除子部门用户缓存
  12. func TestUpdateDept_Mock_CascadeCacheClean(t *testing.T) {
  13. ctrl := gomock.NewController(t)
  14. defer ctrl.Finish()
  15. parentDeptId := int64(10)
  16. childDeptId1 := int64(20)
  17. childDeptId2 := int64(30)
  18. mockDept := mocks.NewMockSysDeptModel(ctrl)
  19. mockDept.EXPECT().FindOne(gomock.Any(), parentDeptId).
  20. Return(&deptModel.SysDept{
  21. Id: parentDeptId,
  22. Name: "Parent",
  23. Path: "/10/",
  24. DeptType: "NORMAL",
  25. Status: 1,
  26. }, nil)
  27. mockDept.EXPECT().Update(gomock.Any(), gomock.Any()).Return(nil)
  28. mockDept.EXPECT().FindByPathPrefix(gomock.Any(), "/10/").
  29. Return([]*deptModel.SysDept{
  30. {Id: parentDeptId, Path: "/10/", DeptType: "DEV"},
  31. {Id: childDeptId1, Path: "/10/20/", DeptType: "NORMAL"},
  32. {Id: childDeptId2, Path: "/10/30/", DeptType: "NORMAL"},
  33. }, nil)
  34. mockUser := mocks.NewMockSysUserModel(ctrl)
  35. mockUser.EXPECT().FindIdsByDeptId(gomock.Any(), parentDeptId).
  36. Return([]int64{100, 101}, nil)
  37. mockUser.EXPECT().FindIdsByDeptId(gomock.Any(), childDeptId1).
  38. Return([]int64{200}, nil)
  39. mockUser.EXPECT().FindIdsByDeptId(gomock.Any(), childDeptId2).
  40. Return([]int64{300, 301}, nil)
  41. svcCtx := mocks.NewMockServiceContext(mocks.MockModels{
  42. Dept: mockDept,
  43. User: mockUser,
  44. })
  45. ctx := ctxhelper.SuperAdminCtx()
  46. logic := NewUpdateDeptLogic(ctx, svcCtx)
  47. err := logic.UpdateDept(&types.UpdateDeptReq{
  48. Id: parentDeptId,
  49. Name: "Parent Updated",
  50. DeptType: "DEV",
  51. })
  52. assert.NoError(t, err)
  53. }