Reputation: 211
I'm testing a simple collapse custom element with view:
<template>
<button click.delegate="toggle()"></button>
<div show.bind="collapsed">
<slot></slot>
</div>
</template>
and view model:
export class Collapse {
collapsed: boolean;
toggle() {
this.collapsed = !this.collapsed;
}
}
My test looks like that:
it('should show content on flag change', done => {
component.create(bootstrap).then(() => {
const div = <Element> document.getElementsByTagName('div')[1];
const style = window.getComputedStyle(div);
expect(style.display).toBe('none');
component.viewModel.toggle();
setTimeout(() => {
expect(style.display).toBe('block');
done();
}, 0);
});
});
Can I get rid of the setTimeout in some way?
Upvotes: 0
Views: 388
Reputation: 26406
it('should show content on flag change', done => {
let div: HTMLDivElement;
component.create(bootstrap)
.then(() => {
div = <HTMLDivElement>document.querySelector('div');
const style = window.getComputedStyle(div);
expect(style.display).toBe('none');
component.viewModel.toggle();
})
.then(() => {
const style = window.getComputedStyle(div);
expect(style.display).toBe('block');
})
.then(done);
});
});
Upvotes: 3