Skip to content

Commit 43a3ba5

Browse files
committed
fix: fix test mocks
1 parent 8405560 commit 43a3ba5

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

src/generic/hooks/tests/hooks.test.tsx

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,25 +123,41 @@ describe('useIframeBehavior', () => {
123123
});
124124

125125
it('handles xblockScroll message correctly', () => {
126-
document.body.innerHTML = '<div id="window" top: 25px;"><div id="xblock-iframe" style="position: absolute; top: 50px;"></div></div>';
127-
renderHook(() => useIframeBehavior({ id, iframeUrl, iframeRef }));
126+
const iframeElement = document.createElement('iframe');
127+
iframeElement.setAttribute('name','xblock-iframe');
128+
Object.defineProperty(iframeElement, 'offsetTop', { writable: true, configurable: true, value: 50 });
129+
130+
const iframeParentElement = document.createElement('div');
131+
iframeParentElement.setAttribute('id','div0');
132+
Object.defineProperty(iframeParentElement, 'offsetTop', { writable: true, configurable: true, value: 25 });
133+
134+
iframeParentElement.appendChild(iframeElement);
135+
document.body.appendChild(iframeParentElement);
136+
137+
renderHook(() => useIframeBehavior({ id, iframeUrl, iframeRef}));
128138

129139
const message = {
130-
type: iframeMessageTypes.xblockScroll,
131-
data: { offset: 100 },
140+
data: {
141+
type: iframeMessageTypes.xblockScroll,
142+
offset: 100,
143+
}
132144
};
133145

134146
act(() => {
135147
window.dispatchEvent(new MessageEvent('message', message));
136148
});
137149

138-
expect(window.scrollY).toBe(100
139-
+ (document.getElementById('xblock-iframe') as HTMLElement).offsetTop
140-
+ (document.getElementById('xblock-iframe')?.parentElement as HTMLElement).offsetTop);
150+
expect(window.scrollTo).toHaveBeenCalledWith(0,175);
151+
expect(window.scrollY).toBe(100 + document.getElementsByName('xblock-iframe')[0].offsetTop + document.getElementsByName('xblock-iframe')[0]!.parentElement!.offsetTop);
141152
});
142153

143154
it('handles offset message correctly', () => {
144-
document.body.innerHTML = '<div id="unit-iframe" style="position: absolute; top: 50px;"></div>';
155+
const iframeElement = document.createElement('iframe');
156+
iframeElement.setAttribute('id','unit-iframe');
157+
Object.defineProperty(iframeElement, 'offsetTop', { writable: true, configurable: true, value: 50 });;
158+
159+
document.body.appendChild(iframeElement);
160+
145161
renderHook(() => useIframeBehavior({ id, iframeUrl, iframeRef }));
146162

147163
const message = {
@@ -152,6 +168,7 @@ describe('useIframeBehavior', () => {
152168
window.dispatchEvent(new MessageEvent('message', message));
153169
});
154170

171+
expect(window.scrollTo).toHaveBeenCalledWith(0,150);
155172
expect(window.scrollY).toBe(100 + (document.getElementById('unit-iframe') as HTMLElement).offsetTop);
156173
});
157174

0 commit comments

Comments
 (0)