mirror of https://github.com/sveltejs/svelte
commit
0239ff3965
@ -1,10 +1,37 @@
|
||||
import { env, useFakeTimers } from "../../../helpers";
|
||||
|
||||
let clock;
|
||||
|
||||
export default {
|
||||
skip: true, // JSDOM
|
||||
before_test() {
|
||||
clock = useFakeTimers();
|
||||
|
||||
const window = env();
|
||||
Object.defineProperties(window, {
|
||||
pageYOffset: {
|
||||
value: 0,
|
||||
configurable: true
|
||||
},
|
||||
pageXOffset: {
|
||||
value: 0,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
test({ assert, component, target, window }) {
|
||||
after_test() {
|
||||
clock.removeFakeTimers();
|
||||
clock = null;
|
||||
},
|
||||
|
||||
async test({ assert, component, target, window }) {
|
||||
assert.equal(window.pageYOffset, 0);
|
||||
|
||||
// clear the previous 'scrolling' state
|
||||
clock.flush();
|
||||
component.scrollY = 100;
|
||||
|
||||
clock.flush();
|
||||
assert.equal(window.pageYOffset, 100);
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
@ -0,0 +1,29 @@
|
||||
export default {
|
||||
skip_if_ssr: true,
|
||||
before_test() {
|
||||
Object.defineProperties(window, {
|
||||
pageYOffset: {
|
||||
value: 0,
|
||||
configurable: true,
|
||||
},
|
||||
});
|
||||
},
|
||||
async test({ assert, component, target, window }) {
|
||||
assert.equal(window.pageYOffset, 0);
|
||||
|
||||
const event = new window.Event('scroll');
|
||||
Object.defineProperties(window, {
|
||||
pageYOffset: {
|
||||
value: 234,
|
||||
configurable: true,
|
||||
},
|
||||
});
|
||||
|
||||
await window.dispatchEvent(event);
|
||||
|
||||
assert.htmlEqual(
|
||||
target.innerHTML,
|
||||
`<p style="position: fixed; top: 1em; left: 1em;">scroll\ny\nis\n234.\n234\n*\n234\n=\n54756</p><div style="height: 9999px;"></div>`
|
||||
);
|
||||
},
|
||||
};
|
@ -0,0 +1,15 @@
|
||||
<script>
|
||||
import { writable, derived } from 'svelte/store';
|
||||
const y = writable(0);
|
||||
const y_squared = derived(y, $y => $y * $y);
|
||||
</script>
|
||||
|
||||
<svelte:window bind:scrollY={$y}/>
|
||||
|
||||
<p style="position: fixed; top: 1em; left: 1em;">
|
||||
scroll y is {$y}. {$y} * {$y} = {$y_squared}
|
||||
</p>
|
||||
|
||||
<div style="height: 9999px">
|
||||
|
||||
</div>
|
Loading…
Reference in new issue