element-ui/test/unit/specs/collapse.spec.js

131 lines
6.2 KiB
Vue
Raw Permalink Normal View History

2021-06-07 11:56:04 +08:00
import { createVue, destroyVM } from '../util';
describe('Collapse', () => {
let vm;
afterEach(() => {
destroyVM(vm);
});
it('create', done => {
vm = createVue({
data() {
return {
activeNames: ['1']
};
},
template: `
<el-collapse v-model="activeNames" ref="collapse">
<el-collapse-item title="一致性 Consistency" name="1" ref="item1">
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
<el-collapse-item title="反馈 Feedback" name="2">
<div>控制反馈通过界面样式和交互动效让用户可以清晰的感知自己的操作</div>
<div>页面反馈操作后通过页面元素的变化清晰地展现当前状态</div>
</el-collapse-item>
<el-collapse-item title="效率 Efficiency" name="3" ref="item3">
<div>简化流程设计简洁直观的操作流程</div>
<div>清晰明确语言表达清晰且表意明确让用户快速理解进而作出决策</div>
<div>帮助用户识别界面简单直白让用户快速识别而非回忆减少用户记忆负担</div>
</el-collapse-item>
<el-collapse-item title="可控 Controllability" name="4">
<div>用户决策根据场景可给予用户操作建议或安全提示但不能代替用户进行决策</div>
<div>结果可控用户可以自由的进行操作包括撤销回退和终止当前操作等</div>
</el-collapse-item>
</el-collapse>
`
}, true);
expect(vm.$refs.item1.isActive).to.be.true;
vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
vm.$nextTick(_ => {
expect(vm.$refs.item1.isActive).to.be.true;
expect(vm.$refs.item3.isActive).to.be.true;
vm.$refs.item1.$el.querySelector('.el-collapse-item__header').click();
vm.$nextTick(_ => {
expect(vm.$refs.item1.isActive).to.be.false;
done();
});
});
});
it('accordion', done => {
vm = createVue({
data() {
return {
activeNames: ['1']
};
},
template: `
<el-collapse accordion v-model="activeNames" ref="collapse">
<el-collapse-item title="一致性 Consistency" name="1" ref="item1">
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
<el-collapse-item title="反馈 Feedback" name="2">
<div>控制反馈通过界面样式和交互动效让用户可以清晰的感知自己的操作</div>
<div>页面反馈操作后通过页面元素的变化清晰地展现当前状态</div>
</el-collapse-item>
<el-collapse-item title="效率 Efficiency" name="3" ref="item3">
<div>简化流程设计简洁直观的操作流程</div>
<div>清晰明确语言表达清晰且表意明确让用户快速理解进而作出决策</div>
<div>帮助用户识别界面简单直白让用户快速识别而非回忆减少用户记忆负担</div>
</el-collapse-item>
<el-collapse-item title="可控 Controllability" name="4">
<div>用户决策根据场景可给予用户操作建议或安全提示但不能代替用户进行决策</div>
<div>结果可控用户可以自由的进行操作包括撤销回退和终止当前操作等</div>
</el-collapse-item>
</el-collapse>
`
}, true);
expect(vm.$refs.item1.isActive).to.be.true;
vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
vm.$nextTick(_ => {
expect(vm.$refs.item1.isActive).to.be.false;
expect(vm.$refs.item3.isActive).to.be.true;
done();
});
});
it('event:change', done => {
vm = createVue({
data() {
return {
activeNames: ['1']
};
},
template: `
<el-collapse v-model="activeNames" ref="collapse">
<el-collapse-item title="一致性 Consistency" name="1" ref="item1">
<div>与现实生活一致与现实生活的流程逻辑保持一致遵循用户习惯的语言和概念</div>
<div>在界面中一致所有的元素和结构需保持一致比如设计样式图标和文本元素的位置等</div>
</el-collapse-item>
<el-collapse-item title="反馈 Feedback" name="2">
<div>控制反馈通过界面样式和交互动效让用户可以清晰的感知自己的操作</div>
<div>页面反馈操作后通过页面元素的变化清晰地展现当前状态</div>
</el-collapse-item>
<el-collapse-item title="效率 Efficiency" name="3" ref="item3">
<div>简化流程设计简洁直观的操作流程</div>
<div>清晰明确语言表达清晰且表意明确让用户快速理解进而作出决策</div>
<div>帮助用户识别界面简单直白让用户快速识别而非回忆减少用户记忆负担</div>
</el-collapse-item>
<el-collapse-item title="可控 Controllability" name="4">
<div>用户决策根据场景可给予用户操作建议或安全提示但不能代替用户进行决策</div>
<div>结果可控用户可以自由的进行操作包括撤销回退和终止当前操作等</div>
</el-collapse-item>
</el-collapse>
`
}, true);
const spy = sinon.spy();
vm.$refs.collapse.$on('change', spy);
vm.$refs.item3.$el.querySelector('.el-collapse-item__header').click();
vm.$nextTick(_ => {
expect(spy.withArgs().calledOnce).to.be.true;
done();
});
});
});