From 23d2043d395c95ec2811459072b36d07b9e4ced0 Mon Sep 17 00:00:00 2001 From: Pan Date: Mon, 16 Jul 2018 23:24:33 +0800 Subject: [PATCH] update --- src/components/Counter.vue | 17 ---- src/utils/index.js | 6 +- tests/unit/components/Breadcrumb.spec.js | 117 +++++++++++++++++++---- tests/unit/components/Counter.spec.js | 24 ----- tests/unit/utils/formatTime.spec.js | 31 ++++++ 5 files changed, 134 insertions(+), 61 deletions(-) delete mode 100644 src/components/Counter.vue delete mode 100644 tests/unit/components/Counter.spec.js create mode 100644 tests/unit/utils/formatTime.spec.js diff --git a/src/components/Counter.vue b/src/components/Counter.vue deleted file mode 100644 index 0fff10f..0000000 --- a/src/components/Counter.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/src/utils/index.js b/src/utils/index.js index 9657c9c..00f5ef7 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -35,7 +35,11 @@ export function parseTime(time, cFormat) { } export function formatTime(time, option) { - time = +time * 1000 + if (('' + time).length === 10) { + time = parseInt(time) * 1000 + } else { + time = +time + } const d = new Date(time) const now = Date.now() diff --git a/tests/unit/components/Breadcrumb.spec.js b/tests/unit/components/Breadcrumb.spec.js index 5b63d0e..3ec37bb 100644 --- a/tests/unit/components/Breadcrumb.spec.js +++ b/tests/unit/components/Breadcrumb.spec.js @@ -1,24 +1,103 @@ -// import { shallowMount } from '@vue/test-utils' -// import Breadcrumb from '@/components/Breadcrumb.vue' +import { mount, createLocalVue } from '@vue/test-utils' +import VueRouter from 'vue-router' +import ElementUI from 'element-ui' +import Breadcrumb from '@/components/Breadcrumb/index.vue' -// describe('Breadcrumb.vue', () => { -// const wrapper = shallowMount(Breadcrumb) +const localVue = createLocalVue() +localVue.use(VueRouter) +localVue.use(ElementUI) -// it('toggle', () => { -// expect(wrapper.vm.counter).toBe(0) -// wrapper.find('[jest="increment-button"]').trigger('click') -// expect(wrapper.vm.counter).toBe(1) -// }) +const routes = [ + { + path: '/', + name: 'home', + children: [{ + path: 'dashboard', + name: 'dashboard' + }] + }, + { + path: '/menu', + name: 'menu', + children: [{ + path: 'menu1', + name: 'menu1', + meta: { title: 'menu1' }, + children: [{ + path: 'menu1-1', + name: 'menu1-1', + meta: { title: 'menu1-1' } + }, + { + path: 'menu1-2', + name: 'menu1-2', + redirect: 'noredirect', + meta: { title: 'menu1-2' }, + children: [{ + path: 'menu1-2-1', + name: 'menu1-2-1', + meta: { title: 'menu1-2-1' } + }, + { + path: 'menu1-2-2', + name: 'menu1-2-2' + }] + }] + }] + }] -// // it('渲染正确', () => { -// // expect(wrapper.html()).toContain('0') -// // }) +const router = new VueRouter({ + routes +}) -// it('是一个按钮', () => { -// expect(wrapper.contains('button')).toBe(true) -// }) +describe('Breadcrumb.vue', () => { + const wrapper = mount(Breadcrumb, { + localVue, + router + }) -// // it('snapshot test', () => { -// // expect(wrapper.element).toMatchSnapshot() -// // }) -// }) + it('dashboard', () => { + router.push('/dashboard') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(1) + }) + + it('normal route', () => { + router.push('/menu/menu1') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(2) + }) + it('nested route', () => { + router.push('/menu/menu1/menu1-2/menu1-2-1') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(4) + }) + + it('no meta.title', () => { + router.push('/menu/menu1/menu1-2/menu1-2-2') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(3) + }) + + it('click link', () => { + router.push('/menu/menu1/menu1-2/menu1-2-2') + const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + const second = breadcrumbArray.at(1) + const href = second.find('a').attributes().href + expect(href).toBe('#/menu/menu1') + }) + + it('noredirect', () => { + router.push('/menu/menu1/menu1-2/menu1-2-1') + const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + const redirectBreadcrumb = breadcrumbArray.at(2) + expect(redirectBreadcrumb.contains('a')).toBe(false) + }) + + it('last breadcrumb', () => { + router.push('/menu/menu1/menu1-2/menu1-2-1') + const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + const redirectBreadcrumb = breadcrumbArray.at(3) + expect(redirectBreadcrumb.contains('a')).toBe(false) + }) +}) diff --git a/tests/unit/components/Counter.spec.js b/tests/unit/components/Counter.spec.js deleted file mode 100644 index f03588a..0000000 --- a/tests/unit/components/Counter.spec.js +++ /dev/null @@ -1,24 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import Counter from '@/components/Counter.vue' - -describe('test Counter.vue', () => { - const wrapper = shallowMount(Counter) - - it('increments counter', () => { - expect(wrapper.vm.counter).toBe(0) - wrapper.find('[jest="increment-button"]').trigger('click') - expect(wrapper.vm.counter).toBe(1) - }) - - // it('渲染正确', () => { - // expect(wrapper.html()).toContain('0') - // }) - - it('是一个按钮', () => { - expect(wrapper.contains('button')).toBe(true) - }) - - // it('snapshot test', () => { - // expect(wrapper.element).toMatchSnapshot() - // }) -}) diff --git a/tests/unit/utils/formatTime.spec.js b/tests/unit/utils/formatTime.spec.js new file mode 100644 index 0000000..99d44a0 --- /dev/null +++ b/tests/unit/utils/formatTime.spec.js @@ -0,0 +1,31 @@ +import { formatTime } from '@/utils/index.js' + +describe('Utils:formatTime', () => { + const d = 1531475641067 // "2018-07-13 17:54:01" + + it('test now', () => { + expect(formatTime(+new Date() - 1)).toBe('刚刚') + }) + + it('less two minute', () => { + expect(formatTime(+new Date() - 60 * 2 * 1000)).toBe('2分钟前') + }) + + it('less two hour', () => { + expect(formatTime(+new Date() - 60 * 60 * 2 * 1000)).toBe('2小时前') + }) + + it('less one day', () => { + expect(formatTime(+new Date() - 60 * 60 * 24 * 1 * 1000)).toBe('1天前') + }) + + it('more than one day', () => { + expect(formatTime(d)).toBe('7月13日17时54分') + }) + + it('format', () => { + expect(formatTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') + expect(formatTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') + expect(formatTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') + }) +})