diff options
| author | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2023-08-13 14:22:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-13 21:22:57 +0900 |
| commit | ab58b651f79e182c20a238f9c07f0c0006a58599 (patch) | |
| tree | 185019db8852cfe649481dbce817fc4ae2d935d0 /packages/frontend/test | |
| parent | enhance(frontend): tweak user moderation page (diff) | |
| download | misskey-ab58b651f79e182c20a238f9c07f0c0006a58599.tar.gz misskey-ab58b651f79e182c20a238f9c07f0c0006a58599.tar.bz2 misskey-ab58b651f79e182c20a238f9c07f0c0006a58599.zip | |
fix(frontend/scroll): no callback for disconnected elements (#11714)
* fix(frontend/scroll): no callback for disconnected elements
* Update CHANGELOG.md
Diffstat (limited to 'packages/frontend/test')
| -rw-r--r-- | packages/frontend/test/scroll.test.ts | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/packages/frontend/test/scroll.test.ts b/packages/frontend/test/scroll.test.ts new file mode 100644 index 0000000000..3fa740b11c --- /dev/null +++ b/packages/frontend/test/scroll.test.ts @@ -0,0 +1,64 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { describe, test, assert, afterEach } from 'vitest'; +import { Window } from 'happy-dom'; +import { onScrollBottom, onScrollTop } from '@/scripts/scroll'; + +describe('Scroll', () => { + describe('onScrollTop', () => { + test('Initial onScrollTop callback for connected elements', () => { + const { document } = new Window(); + const div = document.createElement('div'); + assert.strictEqual(div.scrollTop, 0); + + document.body.append(div); + + let called = false; + onScrollTop(div as any as HTMLElement, () => called = true); + + assert.ok(called); + }); + + test('No onScrollTop callback for disconnected elements', () => { + const { document } = new Window(); + const div = document.createElement('div'); + assert.strictEqual(div.scrollTop, 0); + + let called = false; + onScrollTop(div as any as HTMLElement, () => called = true); + + assert.ok(!called); + }); + }); + + describe('onScrollBottom', () => { + test('Initial onScrollBottom callback for connected elements', () => { + const { document } = new Window(); + const div = document.createElement('div'); + assert.strictEqual(div.scrollTop, 0); + (div as any).scrollHeight = 100; // happy-dom has no scrollHeight + + document.body.append(div); + + let called = false; + onScrollBottom(div as any as HTMLElement, () => called = true); + + assert.ok(called); + }); + + test('No onScrollBottom callback for disconnected elements', () => { + const { document } = new Window(); + const div = document.createElement('div'); + assert.strictEqual(div.scrollTop, 0); + (div as any).scrollHeight = 100; // happy-dom has no scrollHeight + + let called = false; + onScrollBottom(div as any as HTMLElement, () => called = true); + + assert.ok(!called); + }); + }); +}); |