You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/test/runtime/samples/observable-auto-subscribe/_config.js

52 lines
866 B

import { tick } from 'svelte';
let value = 'initial';
let subscribers = [];
const observable = {
subscribe: (fn) => {
subscribers.push(fn);
fn(value);
return {
unsubscribe: () => {
const i = subscribers.indexOf(fn);
subscribers.splice(i, 1);
}
};
}
};
export default {
before_test() {
value = 'initial';
subscribers = [];
},
get props() {
return { observable, visible: false };
},
html: '',
async test({ assert, component, target }) {
assert.equal(subscribers.length, 0);
component.visible = true;
assert.equal(subscribers.length, 1);
assert.htmlEqual(target.innerHTML, '<p>value: initial</p>');
value = 42;
subscribers.forEach((fn) => {
fn(value);
});
await tick();
assert.htmlEqual(target.innerHTML, '<p>value: 42</p>');
component.visible = false;
assert.equal(subscribers.length, 0);
}
};