64 lines
2 KiB
JavaScript
64 lines
2 KiB
JavaScript
import {createVue, destroyVM, waitForIt} from '../util';
|
|
|
|
describe('Message.vue', () => {
|
|
let vm;
|
|
afterEach(() => {
|
|
destroyVM(vm);
|
|
});
|
|
|
|
it('should open a info message by default', done => {
|
|
vm = createVue({render: () => {}});
|
|
const testMessage = 'Hello world!';
|
|
let messageContainer = null;
|
|
vm.$Message.info({
|
|
content: testMessage,
|
|
duration: 200 // too long so we can test
|
|
});
|
|
|
|
const selector = '.ivu-message-notice-content-text .ivu-message-info';
|
|
const checkMessageOpens = () => (messageContainer = document.querySelector(selector));
|
|
|
|
waitForIt(checkMessageOpens, function() {
|
|
expect(messageContainer.textContent.trim()).to.equal(testMessage);
|
|
messageContainer.parentElement.removeChild(messageContainer);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should open specific messages of different types', function(done) {
|
|
vm = createVue({render: () => {}});
|
|
const testMessage = type => `Hello world! this is a ${type} message`;
|
|
const tests = ['info', 'success', 'warning', 'error', 'loading'].reduce((tests, type) => {
|
|
return tests.concat({
|
|
type: type,
|
|
message: testMessage(type),
|
|
class: 'ivu-message-' + type
|
|
});
|
|
}, []);
|
|
let domElements = [];
|
|
|
|
for (const {type, message} of tests) {
|
|
vm.$Message[type]({
|
|
content: message,
|
|
duration: 10 // long so we can test
|
|
});
|
|
}
|
|
|
|
const checkAllMessageOpens = () => {
|
|
domElements = document.querySelectorAll('.ivu-message-custom-content');
|
|
return domElements.length == tests.length && domElements;
|
|
};
|
|
|
|
waitForIt(checkAllMessageOpens, function() {
|
|
const verify = {};
|
|
domElements.forEach(el => {
|
|
const message = el.textContent.trim();
|
|
const test = tests.find(test => test.message == message);
|
|
verify[test.type] = true;
|
|
expect(el.classList.contains(test.class)).to.equal(true);
|
|
});
|
|
expect(Object.keys(verify).length).to.equal(tests.length);
|
|
done();
|
|
});
|
|
});
|
|
});
|