export default {
props: {
x: false,
y: true
},
test({ assert, component, target, raf }) {
// first, toggle x — first element should snap in
// and out while second one transitions
component.x = true;
let divs = target.querySelectorAll('div');
assert.equal(divs[0].foo, undefined);
assert.equal(divs[1].foo, 0);
raf.tick(50);
assert.equal(divs[0].foo, undefined);
assert.equal(divs[1].foo, 0.5);
raf.tick(100);
component.x = false;
assert.htmlEqual(target.innerHTML, `
snaps if x changes
transitions if x changes
`);
raf.tick(150);
assert.equal(divs[0].foo, undefined);
assert.equal(divs[1].foo, 0.5);
raf.tick(200);
assert.htmlEqual(target.innerHTML, '');
// then toggle y
component.y = false;
component.x = true;
component.y = true;
assert.htmlEqual(target.innerHTML, `
snaps if x changes
transitions if x changes
`);
divs = target.querySelectorAll('div');
raf.tick(250);
assert.equal(divs[0].foo, 0.5);
assert.equal(divs[1].foo, 0.5);
raf.tick(300);
assert.equal(divs[0].foo, 1);
assert.equal(divs[1].foo, 1);
component.y = false;
assert.htmlEqual(target.innerHTML, `
snaps if x changes
transitions if x changes
`);
raf.tick(320);
assert.equal(divs[0].foo, 0.8);
assert.equal(divs[1].foo, 0.8);
raf.tick(400);
assert.htmlEqual(target.innerHTML, '');
}
};