From 131540e3f14d027231a5d9460c0d601d4f7f7b27 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 12 Aug 2018 16:09:20 +0800 Subject: [PATCH] Add "forgot" page --- .../assets/src/components/auth/Forgot.vue | 117 ++++++++++++++++++ resources/assets/src/components/route.js | 5 + .../tests/components/auth/Forgot.test.js | 50 ++++++++ resources/lang/en/front-end.yml | 3 + resources/lang/zh_CN/front-end.yml | 3 + resources/views/auth/forgot.tpl | 33 +---- 6 files changed, 179 insertions(+), 32 deletions(-) create mode 100644 resources/assets/src/components/auth/Forgot.vue create mode 100644 resources/assets/tests/components/auth/Forgot.test.js diff --git a/resources/assets/src/components/auth/Forgot.vue b/resources/assets/src/components/auth/Forgot.vue new file mode 100644 index 00000000..c311d514 --- /dev/null +++ b/resources/assets/src/components/auth/Forgot.vue @@ -0,0 +1,117 @@ + + + diff --git a/resources/assets/src/components/route.js b/resources/assets/src/components/route.js index 905d9de0..ad8ad7d4 100644 --- a/resources/assets/src/components/route.js +++ b/resources/assets/src/components/route.js @@ -44,4 +44,9 @@ export default [ component: () => import('./auth/Register'), el: 'form' }, + { + path: 'auth/forgot', + component: () => import('./auth/Forgot'), + el: 'form' + }, ]; diff --git a/resources/assets/tests/components/auth/Forgot.test.js b/resources/assets/tests/components/auth/Forgot.test.js new file mode 100644 index 00000000..18fea09a --- /dev/null +++ b/resources/assets/tests/components/auth/Forgot.test.js @@ -0,0 +1,50 @@ +import Vue from 'vue'; +import { mount } from '@vue/test-utils'; +import Forgot from '@/components/auth/Forgot'; + +test('click to refresh captcha', () => { + jest.spyOn(Date, 'now'); + const wrapper = mount(Forgot); + wrapper.find('img').trigger('click'); + expect(Date.now).toHaveBeenCalledTimes(2); +}); + +test('submit forgot form', async () => { + jest.spyOn(Date, 'now'); + Vue.prototype.$http.post + .mockResolvedValueOnce({ errno: 1, msg: 'fail' }) + .mockResolvedValueOnce({ errno: 0, msg: 'ok' }); + const wrapper = mount(Forgot); + const button = wrapper.find('button'); + const info = wrapper.find('.callout-info'); + const warning = wrapper.find('.callout-warning'); + const success = wrapper.find('.callout-success'); + + button.trigger('click'); + expect(Vue.prototype.$http.post).not.toBeCalled(); + expect(info.text()).toBe('auth.emptyEmail'); + + wrapper.find('[type="email"]').setValue('a'); + button.trigger('click'); + expect(Vue.prototype.$http.post).not.toBeCalled(); + expect(info.text()).toBe('auth.invalidEmail'); + + wrapper.find('[type="email"]').setValue('a@b.c'); + button.trigger('click'); + expect(Vue.prototype.$http.post).not.toBeCalled(); + expect(info.text()).toBe('auth.emptyCaptcha'); + + wrapper.find('[type="text"]').setValue('captcha'); + button.trigger('click'); + await wrapper.vm.$nextTick(); + expect(Vue.prototype.$http.post).toBeCalledWith( + '/auth/forgot', + { email: 'a@b.c', captcha: 'captcha' } + ); + expect(warning.text()).toBe('fail'); + expect(Date.now).toHaveBeenCalledTimes(2); + + button.trigger('click'); + await wrapper.vm.$nextTick(); + expect(success.text()).toBe('ok'); +}); diff --git a/resources/lang/en/front-end.yml b/resources/lang/en/front-end.yml index f56e656b..674434f7 100644 --- a/resources/lang/en/front-end.yml +++ b/resources/lang/en/front-end.yml @@ -29,6 +29,9 @@ auth: repeat-pwd: Repeat your password nickname-intro: Whatever you like expect special characters register-button: Register + forgot: + login-link: I do remember it + button: Send skinlib: addToCloset: Add to closet diff --git a/resources/lang/zh_CN/front-end.yml b/resources/lang/zh_CN/front-end.yml index efe987f0..963cadf2 100644 --- a/resources/lang/zh_CN/front-end.yml +++ b/resources/lang/zh_CN/front-end.yml @@ -29,6 +29,9 @@ auth: repeat-pwd: 重复密码 nickname-intro: 昵称可使用汉字,不可包含特殊字符 register-button: 注册 + forgot: + login-link: 我又想起来了 + button: 发送 skinlib: addToCloset: 添加至衣柜 diff --git a/resources/views/auth/forgot.tpl b/resources/views/auth/forgot.tpl index 2bb26777..56d7f35b 100644 --- a/resources/views/auth/forgot.tpl +++ b/resources/views/auth/forgot.tpl @@ -16,38 +16,7 @@
{{ Session::pull('msg') }}
@endif -
-
- - -
- -
-
-
- -
-
- -
- CAPTCHA -
- -
- -
- -
- - -
- -
- -
-
+