diff --git a/server/src/modules/auth/__test/auth.controller.spec.ts b/server/src/modules/auth/__test/auth.controller.spec.ts index eb7e0ca7..2aed3d04 100644 --- a/server/src/modules/auth/__test/auth.controller.spec.ts +++ b/server/src/modules/auth/__test/auth.controller.spec.ts @@ -92,7 +92,10 @@ describe('AuthController', () => { }; await expect(controller.register(mockUserInfo)).rejects.toThrow( - new HttpException('密码无效', EXCEPTION_CODE.PASSWORD_INVALID), + new HttpException( + '密码只能输入数字、字母、特殊字符', + EXCEPTION_CODE.PASSWORD_INVALID, + ), ); }); }); @@ -217,4 +220,29 @@ describe('AuthController', () => { expect(typeof result.data.img).toBe('string'); }); }); + + describe('password strength', () => { + it('it should return strong', async () => { + await expect( + controller.getPasswordStrength('abcd&1234'), + ).resolves.toEqual({ + code: 200, + data: 'Strong', + }); + }); + + it('it should return medium', async () => { + await expect(controller.getPasswordStrength('abc123')).resolves.toEqual({ + code: 200, + data: 'Medium', + }); + }); + + it('it should return weak', async () => { + await expect(controller.getPasswordStrength('123456')).resolves.toEqual({ + code: 200, + data: 'Weak', + }); + }); + }); }); diff --git a/server/src/modules/workspace/_test/workspace.controller.spec.ts b/server/src/modules/workspace/_test/workspace.controller.spec.ts index 58f168f3..aed91a3b 100644 --- a/server/src/modules/workspace/_test/workspace.controller.spec.ts +++ b/server/src/modules/workspace/_test/workspace.controller.spec.ts @@ -245,8 +245,10 @@ describe('WorkspaceController', () => { const req = { user: { _id: new ObjectId() } }; const workspaceId = new ObjectId(); - const memberList = [{ workspaceId, userId: new ObjectId() }]; + const userId = new ObjectId(); + const memberList = [{ workspaceId, userId: userId }]; const workspaces = [{ _id: workspaceId, name: 'Test Workspace' }]; + const userList = [{ _id: userId, username: 'Test User' }]; jest .spyOn(workspaceService, 'findAllByUserId') @@ -254,6 +256,9 @@ describe('WorkspaceController', () => { jest .spyOn(workspaceMemberService, 'batchSearchByWorkspace') .mockResolvedValue(memberList as unknown as Array); + jest + .spyOn(userService, 'getUserListByIds') + .mockResolvedValue(userList as User[]); const result = await controller.getWorkspaceAndMember(req); diff --git a/web/src/materials/questions/widgets/TitleModules/TitleContent/index.jsx b/web/src/materials/questions/widgets/TitleModules/TitleContent/index.jsx index 0cba4d9a..b19b4a27 100644 --- a/web/src/materials/questions/widgets/TitleModules/TitleContent/index.jsx +++ b/web/src/materials/questions/widgets/TitleModules/TitleContent/index.jsx @@ -48,9 +48,9 @@ export default defineComponent({ watch(status, (v) => { if (v === 'edit') { - document.addEventListener('click', handleDocumentClick) + document.addEventListener('click', handleDocumentClick, {capture: true}) } else { - document.removeEventListener('click', handleDocumentClick) + document.removeEventListener('click', handleDocumentClick, {capture: true}) } }) @@ -96,7 +96,8 @@ export default defineComponent({ function handleDocumentClick(e) { const richEditorDOM = moduleTitleRef.value.querySelector('.rich-editor') - const isClickRichEditor = richEditorDOM?.contains(e.target) + const isUploadImage = e.target.type === 'file' && e.target.tagName.toLowerCase() === 'input' // 富文本上传图片点击事件触发到input file 元素上了, 该元素插入到body了 + const isClickRichEditor = richEditorDOM?.contains(e.target) || isUploadImage if (status.value === 'edit' && richEditorDOM && !isClickRichEditor) { // 监听编辑状态时点击非编辑区域 diff --git a/web/src/render/components/QuestionWrapper.vue b/web/src/render/components/QuestionWrapper.vue index 4152b33e..f113e37d 100644 --- a/web/src/render/components/QuestionWrapper.vue +++ b/web/src/render/components/QuestionWrapper.vue @@ -33,6 +33,7 @@ const props = defineProps({ return {} } } + } }) const emit = defineEmits(['change']) const questionStore = useQuestionStore()