Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'widgets/excursionSheet';

import {renderEntry, usePageObjects} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import {useFakeParentWindow} from 'support/fakeWindows';
import {changeLocationHash} from 'support/changeLocationHash';
import {useFakeTranslations} from 'pageflow/testHelpers';
import 'support/viewTimelineStub';
Expand All @@ -11,16 +11,12 @@ import userEvent from '@testing-library/user-event';

describe('CHANGE_SECTION message', () => {
usePageObjects();
useFakeParentWindow();

useFakeTranslations({
'pageflow_scrolled.public.close': 'Close'
});

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('is posted when section becomes active', () => {
const {getSectionByPermaId} = renderEntry({
seed: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {frontend} from 'frontend';
import {features} from 'pageflow/frontend';

import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import {changeLocationHash} from 'support/changeLocationHash';
import '@testing-library/jest-dom/extend-expect'
import {act, fireEvent, waitFor} from '@testing-library/react';
Expand All @@ -12,8 +11,6 @@ describe('content element selection', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
window.location.hash = '#initial';
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@ import {act, waitFor} from '@testing-library/react';
import {features} from 'pageflow/frontend';

import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';

import badgeStyles from 'review/Badge.module.css';

describe('editor comment badges', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow();
window.parent.postMessage = jest.fn();
features.enable('frontend', ['commenting']);
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import '@testing-library/jest-dom/extend-expect'

describe('INSERT_CONTENT_ELEMENT message', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('is posted when selection rect insert button is clicked', () => {
const {getContentElementByTestId} = renderEntry({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import '@testing-library/jest-dom/extend-expect';

describe('MarginIndicator', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow();
});

it('displays scale translation for top margin when element is selected', () => {
const {getContentElementByTestId} = renderEntry({
seed: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import '@testing-library/jest-dom/extend-expect'

describe('MOVE_CONTENT_ELEMENT message', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('is posted when content element is dragged before other content element', () => {
const {getContentElementByTestId} = renderEntry({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import {useMotifAreaState} from 'frontend/useMotifAreaState';
import '@testing-library/jest-dom/extend-expect';

Expand All @@ -8,10 +7,6 @@ jest.mock('frontend/useMotifAreaState');
describe('PaddingIndicator', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow();
});

it('displays scale translation for top padding when section is selected', () => {
const {getSectionByPermaId} = renderEntry({
seed: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import {renderEntry, useInlineEditingPageObjects} from 'support/pageObjects';
import {fakeParentWindow} from 'support';

import {asyncHandlingOf} from 'support/asyncHandlingOf';

describe('scroll point messages', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow();
window.parent.postMessage = jest.fn();
window.scrollTo = jest.fn();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,12 @@ import {frontend, WidgetSelectionRect} from 'frontend';
import {features} from 'pageflow/frontend';

import {useInlineEditingPageObjects, renderEntry} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import {act, fireEvent, waitFor} from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect'

describe('SELECTED message', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('is posted when content element is clicked', () => {
frontend.contentElementTypes.register('text', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@ import React, {useEffect} from 'react';
import {frontend, useContentElementConfigurationUpdate} from 'frontend';

import {renderEntry, useInlineEditingPageObjects} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import '@testing-library/jest-dom/extend-expect'

describe('useContentElementConfigurationUpdate', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('lets content elements use hook to update their own configuration', () => {
frontend.contentElementTypes.register('text', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@ import React, {useEffect} from 'react';
import {frontend, useWidgetConfigurationUpdate} from 'frontend';

import {renderEntry, useInlineEditingPageObjects} from 'support/pageObjects';
import {fakeParentWindow} from 'support';
import '@testing-library/jest-dom/extend-expect'

describe('useWidgetConfigurationUpdate', () => {
useInlineEditingPageObjects();

beforeEach(() => {
fakeParentWindow()
window.parent.postMessage = jest.fn();
});

it('lets widgets use hook to update their own configuration', () => {
frontend.widgetTypes.register('customNavigation', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import React from 'react';
import {features} from 'pageflow/frontend';
import {EditableText} from 'frontend';
import {renderEntry, useInlineEditingPageObjects} from 'support/pageObjects/inlineEditing';
import {fakeParentWindow} from 'support';

import {act, waitFor} from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
Expand Down Expand Up @@ -50,8 +49,6 @@ describe('inline editing EditableText comment highlights', () => {
});

it('highlights pending new thread range from editor state', async () => {
fakeParentWindow();

const entry = renderEntry({
contentElement: {
ui: <EditableText value={value} />,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import React from 'react';
import {features} from 'pageflow/frontend';
import {EditableText} from 'frontend';
import {renderEntry, useInlineEditingPageObjects} from 'support/pageObjects/inlineEditing';
import {fakeParentWindow} from 'support';

import {act} from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
Expand All @@ -22,8 +21,6 @@ describe('inline editing EditableText comment selection messages', () => {
});

it('posts SELECTED contentElementComments with highlightedThreadId on badge click', () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();

const value = [
{type: 'paragraph', children: [{text: 'First paragraph'}]}
Expand Down Expand Up @@ -57,8 +54,6 @@ describe('inline editing EditableText comment selection messages', () => {
});

it('runs badge click logic and scrolls into view on SELECT_COMMENT_THREAD message', async () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();
const scrollIntoView = jest.fn();
Element.prototype.scrollIntoView = scrollIntoView;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import {useSelectLinkDestination} from 'frontend/inlineEditing/useSelectLinkDestination';

import {renderHook} from '@testing-library/react-hooks';
import {fakeParentWindow} from 'support';
import {useFakeParentWindow} from 'support/fakeWindows';

describe('useSelectLinkDestination', () => {
it('returns function that posts SELECT_LINK_DESTINATION message', () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();
useFakeParentWindow();

it('returns function that posts SELECT_LINK_DESTINATION message', () => {
const {result} = renderHook(() => useSelectLinkDestination());
const selectLinkDestination = result.current;
selectLinkDestination().catch(() => {});
Expand All @@ -19,9 +18,6 @@ describe('useSelectLinkDestination', () => {
});

it('returns function returns promise which resolves on LINK_DESTINATION_SELECTED message', () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();

const {result} = renderHook(() => useSelectLinkDestination());
const selectLinkDestination = result.current;
const promise = selectLinkDestination();
Expand All @@ -35,9 +31,6 @@ describe('useSelectLinkDestination', () => {
});

it('rejects promise on when function is called again', () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();

const {result} = renderHook(() => useSelectLinkDestination());
const selectLinkDestination = result.current;
const promise = selectLinkDestination();
Expand All @@ -47,9 +40,6 @@ describe('useSelectLinkDestination', () => {
});

it('ignores other messages send to window', () => {
fakeParentWindow();
window.parent.postMessage = jest.fn();

const {result} = renderHook(() => useSelectLinkDestination());
const selectLinkDestination = result.current;
const promise = selectLinkDestination();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {frontend, Entry, useContentElementEditorState} from 'pageflow-scrolled/frontend';
import {renderInEntry} from 'support';
import {useFakeParentWindow} from 'support/fakeWindows';
import {useEditorSelection} from 'frontend/inlineEditing/EditorState';

import React, {useEffect} from 'react';
Expand All @@ -10,6 +11,7 @@ import {loadInlineEditingComponents} from 'frontend/inlineEditing';

describe('useContentElementEditorState in editor preview', () => {
beforeAll(loadInlineEditingComponents);
useFakeParentWindow();

it('lets content elements determine whether they are selected', () => {
frontend.contentElementTypes.register('test', {
Expand Down Expand Up @@ -98,7 +100,6 @@ describe('useContentElementEditorState in editor preview', () => {
});

it('lets content elements publish transient state via post message', () => {
window.parent.postMessage = jest.fn();
frontend.contentElementTypes.register('test', {
component: function Test() {
const {setTransientState} = useContentElementEditorState();
Expand All @@ -116,7 +117,7 @@ describe('useContentElementEditorState in editor preview', () => {
}
});

expect(window.postMessage).toHaveBeenCalledWith({
expect(window.parent.postMessage).toHaveBeenCalledWith({
type: 'UPDATE_TRANSIENT_CONTENT_ELEMENT_STATE',
payload: {
id: 5,
Expand All @@ -126,7 +127,6 @@ describe('useContentElementEditorState in editor preview', () => {
});

it('does not send message if transient state is shallow equal to previous transient state', () => {
window.parent.postMessage = jest.fn();
frontend.contentElementTypes.register('test', {
component: function Test() {
const {setTransientState} = useContentElementEditorState();
Expand All @@ -144,8 +144,9 @@ describe('useContentElementEditorState in editor preview', () => {
}
});

window.parent.postMessage.mockClear();
rerender(<Entry />);

expect(window.postMessage).toHaveBeenCalledTimes(1);
expect(window.parent.postMessage).not.toHaveBeenCalled();
});
});
13 changes: 13 additions & 0 deletions entry_types/scrolled/package/spec/support/fakeWindows.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,19 @@ export function fakeParentWindow() {
Object.defineProperty(window, 'parent', {value: new JSDOM('').window });
};

export function useFakeParentWindow() {
beforeAll(() => {
Object.defineProperty(window, 'parent', {
value: new JSDOM('').window,
configurable: true
});
});

beforeEach(() => {
window.parent.postMessage = jest.fn();
});
}

export function createIframeWindow() {
const dom = new JSDOM('');
dom.reconfigure({windowTop: window, url: window.location.origin});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {loadInlineEditingComponents} from 'frontend/inlineEditing';
import {clearExtensions} from 'frontend/extensionRegistry';
import badgeStyles from 'review/Badge.module.css';

import {useFakeParentWindow} from '../fakeWindows';
import {
renderEntry as baseRenderEntry,
usePageObjects
Expand All @@ -24,6 +25,8 @@ export function renderEntry({commenting, ...options} = {}) {
}

export function useInlineEditingPageObjects() {
useFakeParentWindow();

beforeAll(async () => {
await loadInlineEditingComponents();
});
Expand Down
Loading