Skip to content

Commit 89011dc

Browse files
authored
Merge pull request #55 from trurl-master/unobserved-nodes
Add tests to not call the callback from unobserved nodes
2 parents 9a36419 + 6b6ca39 commit 89011dc

File tree

2 files changed

+69
-1
lines changed

2 files changed

+69
-1
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jsdom-testing-mocks",
3-
"version": "1.11.0",
3+
"version": "1.12.0",
44
"author": "Ivan Galiatin",
55
"license": "MIT",
66
"description": "A set of tools for emulating browser behavior in jsdom environment",
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import { mockIntersectionObserver } from './intersection-observer';
2+
3+
const io = mockIntersectionObserver();
4+
5+
describe('mockIntersectionObserver', () => {
6+
it("don't call unobserved nodes, enterNode", () => {
7+
const node = document.createElement('div');
8+
const callback = runner.fn();
9+
10+
const observer = new IntersectionObserver(callback);
11+
12+
observer.observe(node);
13+
14+
io.enterNode(node);
15+
16+
expect(callback).toHaveBeenCalledTimes(1);
17+
18+
observer.unobserve(node);
19+
20+
io.enterNode(node);
21+
22+
expect(callback).toHaveBeenCalledTimes(1);
23+
});
24+
25+
it('handles multiple nodes correctly, enterNodes', () => {
26+
const node1 = document.createElement('div');
27+
const node2 = document.createElement('div');
28+
const callback = runner.fn();
29+
30+
const observer = new IntersectionObserver(callback);
31+
32+
observer.observe(node1);
33+
observer.observe(node2);
34+
35+
io.enterNodes([node1, node2]);
36+
37+
expect(callback).toHaveBeenCalledTimes(1);
38+
39+
observer.unobserve(node1);
40+
observer.unobserve(node2);
41+
42+
io.enterNodes([node1, node2]);
43+
44+
expect(callback).toHaveBeenCalledTimes(1);
45+
});
46+
47+
it('handles multiple nodes correctly, enterAll', () => {
48+
const node1 = document.createElement('div');
49+
const node2 = document.createElement('div');
50+
const callback = runner.fn();
51+
52+
const observer = new IntersectionObserver(callback);
53+
54+
observer.observe(node1);
55+
observer.observe(node2);
56+
57+
io.enterAll();
58+
59+
expect(callback).toHaveBeenCalledTimes(1);
60+
61+
observer.unobserve(node1);
62+
observer.unobserve(node2);
63+
64+
io.enterAll();
65+
66+
expect(callback).toHaveBeenCalledTimes(1);
67+
});
68+
});

0 commit comments

Comments
 (0)