@pie-lib/editable-html-tip-tap 2.1.11 → 2.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -84
- package/lib/__tests__/EditableHtml.test.js +831 -0
- package/lib/__tests__/EditableHtml.test.js.map +1 -0
- package/lib/__tests__/constants.test.js +21 -0
- package/lib/__tests__/constants.test.js.map +1 -0
- package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
- package/lib/__tests__/div-to-paragraph-conversion.test.js.map +1 -0
- package/lib/__tests__/extensions.test.js +209 -0
- package/lib/__tests__/extensions.test.js.map +1 -0
- package/lib/__tests__/index.test.js +250 -0
- package/lib/__tests__/index.test.js.map +1 -0
- package/lib/__tests__/size-utils.test.js +57 -0
- package/lib/__tests__/size-utils.test.js.map +1 -0
- package/lib/__tests__/theme.test.js +17 -0
- package/lib/__tests__/theme.test.js.map +1 -0
- package/lib/components/__tests__/AltDialog.test.js +201 -0
- package/lib/components/__tests__/AltDialog.test.js.map +1 -0
- package/lib/components/__tests__/CharacterPicker.test.js +455 -0
- package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
- package/lib/components/__tests__/CssIcon.test.js +58 -0
- package/lib/components/__tests__/CssIcon.test.js.map +1 -0
- package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
- package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
- package/lib/components/__tests__/ImageToolbar.test.js +185 -0
- package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
- package/lib/components/__tests__/InlineDropdown.test.js +839 -0
- package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
- package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
- package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
- package/lib/components/__tests__/MediaDialog.test.js +433 -0
- package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
- package/lib/components/__tests__/MediaToolbar.test.js +126 -0
- package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
- package/lib/components/__tests__/MediaWrapper.test.js +96 -0
- package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
- package/lib/components/__tests__/MenuBar.test.js +502 -0
- package/lib/components/__tests__/MenuBar.test.js.map +1 -0
- package/lib/components/__tests__/RespArea.test.js +171 -0
- package/lib/components/__tests__/RespArea.test.js.map +1 -0
- package/lib/components/__tests__/TableIcons.test.js +153 -0
- package/lib/components/__tests__/TableIcons.test.js.map +1 -0
- package/lib/components/__tests__/TextAlign.test.js +209 -0
- package/lib/components/__tests__/TextAlign.test.js.map +1 -0
- package/lib/components/__tests__/TiptapContainer.test.js +196 -0
- package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
- package/lib/components/__tests__/characterUtils.test.js +178 -0
- package/lib/components/__tests__/characterUtils.test.js.map +1 -0
- package/lib/components/__tests__/choice.test.js +213 -0
- package/lib/components/__tests__/choice.test.js.map +1 -0
- package/lib/components/__tests__/custom-popper.test.js +108 -0
- package/lib/components/__tests__/custom-popper.test.js.map +1 -0
- package/lib/components/__tests__/done-button.test.js +72 -0
- package/lib/components/__tests__/done-button.test.js.map +1 -0
- package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
- package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
- package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
- package/lib/components/respArea/MathTemplated.js +2 -2
- package/lib/components/respArea/MathTemplated.js.map +1 -1
- package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
- package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
- package/lib/extensions/__tests__/css.test.js +214 -0
- package/lib/extensions/__tests__/css.test.js.map +1 -0
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
- package/lib/extensions/__tests__/divNode.test.js +108 -0
- package/lib/extensions/__tests__/divNode.test.js.map +1 -0
- package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
- package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
- package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
- package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
- package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
- package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
- package/lib/extensions/__tests__/extended-table.test.js +200 -0
- package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
- package/lib/extensions/__tests__/image-component.test.js +432 -0
- package/lib/extensions/__tests__/image-component.test.js.map +1 -0
- package/lib/extensions/__tests__/image.test.js +313 -0
- package/lib/extensions/__tests__/image.test.js.map +1 -0
- package/lib/extensions/__tests__/math.test.js +1399 -0
- package/lib/extensions/__tests__/math.test.js.map +1 -0
- package/lib/extensions/__tests__/media-node-view.test.js +307 -0
- package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
- package/lib/extensions/__tests__/media.test.js +292 -0
- package/lib/extensions/__tests__/media.test.js.map +1 -0
- package/lib/extensions/__tests__/responseArea.test.js +736 -0
- package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
- package/lib/utils/__tests__/helper.test.js +107 -0
- package/lib/utils/__tests__/helper.test.js.map +1 -0
- package/lib/utils/__tests__/toolbar.test.js +38 -0
- package/lib/utils/__tests__/toolbar.test.js.map +1 -0
- package/package.json +7 -7
- package/src/components/respArea/MathTemplated.jsx +1 -1
- package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
- package/LICENSE.md +0 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.test.js","names":["_react","_interopRequireDefault","require","_react2","_math","toolbarUtils","_interopRequireWildcard","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","jest","mock","NodeViewWrapper","_ref","children","props","_objectWithoutProperties2","createElement","_extends2","ReactNodeViewRenderer","fn","component","mockCreatePortal","node","requireActual","createPortal","React","MathPreview","_ref2","latex","MathToolbar","_ref3","onChange","onDone","_React$useState","useState","_React$useState2","_slicedToArray2","localLatex","setLocalLatex","value","target","onClick","wrapMath","wrapper","Node","create","config","Plugin","PluginKey","key","TextSelection","doc","pos","type","NodeSelection","describe","it","expect","MathNode","name","toBe","inline","group","atom","attributes","addAttributes","toHaveProperty","toEqual","html","rules","parseHTML","Array","isArray","toHaveLength","result","renderHTML","HTMLAttributes","commands","addCommands","_typeof2","insertMath","setToolbarOpenedSpy","spyOn","mathNode","nodeSize","tr","insert","mockReturnThis","setSelection","editor","view","state","schema","nodes","math","selection","$from","dispatch","toHaveBeenCalledWith","toHaveBeenCalled","mockRestore","addNodeView","toBeDefined","plugins","addProseMirrorPlugins","appendTransaction","handleKeyDown","plugin","EnsureTextAfterMathPlugin","textNode","newState","text","descendants","cb","nodeAt","docChanged","anything","not","toBeNull","createDocWithMathAndZwsp","resolveOverrides","undefined","resolve","nodeAfter","nodeBefore","textContent","createDocWithRegularTextBeforeCursor","createView","_ref4","_ref4$state","stateOverrides","from","empty","handled","ZeroWidthSpaceHandlingPlugin","_require","_require2","createEditorElement","rect","top","left","width","height","element","document","configurable","createMockEditor","to","setMeta","coordsAtPos","options","focus","instanceId","_toolbarOpened","mockNode","attrs","defaultProps","beforeEach","clearAllMocks","mockImplementation","updateAttributes","selected","getPos","_render","render","MathNodeView","container","toBeInTheDocument","_render2","getByTestId","_render3","_asyncToGenerator2","_regenerator","mark","_callee","_render4","wrap","_context","prev","next","waitFor","stop","_render5","queryByTestId","_callee2","_render6","_context2","toolbar","querySelector","toHaveAttribute","_callee3","_render7","_context3","style","_callee4","containerEl","_render8","_context4","getBoundingClientRect","_tiptapContainerEl","_callee5","_render9","_context5","position","_callee6","_render0","_context6","zIndex","_callee7","_render1","_context7","_callee9","originalInnerHeight","originalInnerWidth","_render10","_context9","window","innerHeight","innerWidth","writable","bottom","act","_callee8","_context8","dispatchEvent","Event","Promise","requestAnimationFrame","parseInt","toBeLessThanOrEqual","toBeGreaterThanOrEqual","_callee0","addSpy","_context0","any","Function","_callee1","_context1","mockClear","lastCall","calls","_callee10","_context10","body","_callee11","_render11","_context11","input","fireEvent","change","_callee12","_render12","doneButton","_context12","click","_callee13","_render13","_context13","_callee14","_render14","_context14","_callee15","_render15","_context15","_callee16","_require3","_render16","_context16","_callee17","addEventListenerSpy","removeEventListenerSpy","nodeA","nodeB","_render17","rerender","initialCallCount","_context17","toBeGreaterThan","_callee18","_render18","_context18","dateNowSpy","timestamp","Date","afterEach","_render19","className","toMatch","_render20","Fragment","getAllByTestId","wrappers","_callee19","editorA","editorB","_render21","queryAllByTestId","secondPreview","_context19","toHaveValue","_callee20","_render22","_context20","_callee22","_render23","_context22","_callee21","_context21","_callee24","_render24","_context24","_callee23","_context23","_callee25","_render25","dropdown","_context25","id","appendChild","removeChild","nodeWithEmptyLatex","_render26","_render27","toHaveStyle","display","cursor"],"sources":["../../../src/extensions/__tests__/math.test.js"],"sourcesContent":["import React from 'react';\nimport { render, waitFor, fireEvent, act } from '@testing-library/react';\nimport { EnsureTextAfterMathPlugin, MathNode, MathNodeView, ZeroWidthSpaceHandlingPlugin } from '../math';\nimport * as toolbarUtils from '../../utils/toolbar';\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children, ...props }) => (\n <div data-testid=\"node-view-wrapper\" {...props}>\n {children}\n </div>\n ),\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\nconst mockCreatePortal = jest.fn((node) => node);\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n createPortal: (...args) => mockCreatePortal(...args),\n}));\n\njest.mock('@pie-lib/math-toolbar', () => {\n const React = require('react');\n return {\n MathPreview: ({ latex }) => <div data-testid=\"math-preview\">{latex}</div>,\n MathToolbar: ({ latex, onChange, onDone }) => {\n const [localLatex, setLocalLatex] = React.useState(latex);\n return (\n <div data-testid=\"math-toolbar\">\n <input\n data-testid=\"math-input\"\n value={localLatex}\n onChange={(e) => {\n setLocalLatex(e.target.value);\n onChange(e.target.value);\n }}\n />\n <button data-testid=\"done-button\" onClick={() => onDone(localLatex)}>\n Done\n </button>\n </div>\n );\n },\n };\n});\n\njest.mock('@pie-lib/math-rendering', () => ({\n wrapMath: (latex, wrapper) => latex,\n}));\n\njest.mock('@tiptap/core', () => ({\n Node: {\n create: jest.fn((config) => config),\n },\n}));\n\njest.mock('prosemirror-state', () => ({\n Plugin: jest.fn(function (config) {\n return config;\n }),\n PluginKey: jest.fn(function (key) {\n this.key = key;\n }),\n TextSelection: {\n create: jest.fn((doc, pos) => ({ type: 'text', pos })),\n },\n NodeSelection: {\n create: jest.fn((doc, pos) => ({ type: 'node', pos })),\n },\n}));\n\ndescribe('MathNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(MathNode.name).toBe('math');\n });\n\n it('is inline', () => {\n expect(MathNode.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(MathNode.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(MathNode.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns required attributes', () => {\n const attributes = MathNode.addAttributes();\n\n expect(attributes).toHaveProperty('latex');\n expect(attributes).toHaveProperty('wrapper');\n expect(attributes).toHaveProperty('html');\n\n expect(attributes.latex).toEqual({ default: '' });\n expect(attributes.wrapper).toEqual({ default: null });\n expect(attributes.html).toEqual({ default: null });\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules for latex', () => {\n const rules = MathNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(2);\n expect(rules[0]).toHaveProperty('tag', 'span[data-latex]');\n });\n\n it('returns parsing rules for mathml', () => {\n const rules = MathNode.parseHTML();\n expect(rules[1]).toHaveProperty('tag', 'span[data-type=\"mathml\"]');\n });\n });\n\n describe('renderHTML', () => {\n it('renders mathml when html attribute is present', () => {\n const result = MathNode.renderHTML({\n HTMLAttributes: {\n html: '<math><mi>x</mi></math>',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-type', 'mathml');\n });\n\n it('renders latex when html attribute is not present', () => {\n const result = MathNode.renderHTML({\n HTMLAttributes: {\n latex: 'x^2',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-latex', '');\n expect(result[1]).toHaveProperty('data-raw', 'x^2');\n });\n });\n\n describe('addCommands', () => {\n it('returns insertMath command', () => {\n const commands = MathNode.addCommands();\n\n expect(commands).toHaveProperty('insertMath');\n expect(typeof commands.insertMath).toBe('function');\n });\n\n it('insertMath opens the toolbar after inserting a math node', () => {\n const setToolbarOpenedSpy = jest.spyOn(toolbarUtils, 'setToolbarOpened');\n const mathNode = { type: { name: 'math' }, nodeSize: 1 };\n const tr = {\n insert: jest.fn().mockReturnThis(),\n setSelection: jest.fn().mockReturnThis(),\n doc: {},\n };\n const editor = {\n view: {\n state: {\n schema: { nodes: { math: { create: jest.fn(() => mathNode) } } },\n selection: { $from: { pos: 1 } },\n },\n },\n };\n const dispatch = jest.fn();\n const insertMath = MathNode.addCommands().insertMath('x^2');\n\n insertMath({ tr, editor, dispatch });\n\n expect(tr.insert).toHaveBeenCalledWith(1, mathNode);\n expect(tr.setSelection).toHaveBeenCalled();\n expect(dispatch).toHaveBeenCalledWith(tr);\n expect(setToolbarOpenedSpy).toHaveBeenCalledWith(editor, true);\n\n setToolbarOpenedSpy.mockRestore();\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = MathNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n\n describe('addProseMirrorPlugins', () => {\n it('registers ensure-text-after-math and zero-width-space plugins', () => {\n const plugins = MathNode.addProseMirrorPlugins();\n\n expect(plugins).toHaveLength(2);\n expect(plugins[0].appendTransaction).toBeDefined();\n expect(plugins[1].props.handleKeyDown).toBeDefined();\n });\n });\n});\n\ndescribe('EnsureTextAfterMathPlugin', () => {\n it('inserts a zero-width space after a math node when no text follows', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n const textNode = { type: { name: 'text' } };\n const mathNode = { type: { name: 'math' }, nodeSize: 3 };\n const tr = { insert: jest.fn() };\n\n const newState = {\n schema: { text: jest.fn((value) => ({ type: textNode.type, text: value })) },\n tr,\n doc: {\n descendants: (cb) => cb(mathNode, 5),\n nodeAt: jest.fn(() => null),\n },\n };\n\n const result = plugin.appendTransaction([{ docChanged: true }], {}, newState);\n\n expect(tr.insert).toHaveBeenCalledWith(8, expect.anything());\n expect(result).toBe(tr);\n });\n\n it('does not insert when text already follows the math node', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n const tr = { insert: jest.fn() };\n const mathNode = { type: { name: 'math' }, nodeSize: 3 };\n\n const newState = {\n schema: { text: jest.fn() },\n tr,\n doc: {\n descendants: (cb) => cb(mathNode, 5),\n nodeAt: jest.fn(() => ({ type: { name: 'text' } })),\n },\n };\n\n const result = plugin.appendTransaction([{ docChanged: true }], {}, newState);\n\n expect(tr.insert).not.toHaveBeenCalled();\n expect(result).toBeNull();\n });\n\n it('returns null when the document did not change', () => {\n const plugin = EnsureTextAfterMathPlugin('math');\n\n const result = plugin.appendTransaction([{ docChanged: false }], {}, {});\n expect(result).toBeNull();\n });\n});\n\ndescribe('ZeroWidthSpaceHandlingPlugin', () => {\n const createDocWithMathAndZwsp = (resolveOverrides = {}) => ({\n resolve: jest.fn((pos) => ({\n nodeAfter: null,\n nodeBefore: null,\n pos,\n ...resolveOverrides[pos],\n })),\n nodeAt: jest.fn((pos) => {\n if (pos === 1) {\n return { type: { name: 'text' }, textContent: '\\u200b' };\n }\n if (pos === 0) {\n return { type: { name: 'math' }, nodeSize: 1 };\n }\n return null;\n }),\n });\n\n const createDocWithRegularTextBeforeCursor = () => ({\n resolve: jest.fn((pos) => ({ nodeAfter: null, nodeBefore: null, pos })),\n nodeAt: jest.fn((pos) => {\n if (pos === 1) {\n return { type: { name: 'text' }, textContent: 'a' };\n }\n return null;\n }),\n });\n\n const createView = ({ state: stateOverrides = {} } = {}) => {\n const dispatch = jest.fn();\n const tr = {\n delete: jest.fn().mockReturnThis(),\n setSelection: jest.fn().mockReturnThis(),\n };\n\n return {\n state: {\n selection: { from: 2, empty: true },\n doc: createDocWithMathAndZwsp(),\n tr,\n ...stateOverrides,\n },\n dispatch,\n };\n };\n\n describe('Backspace', () => {\n it('deletes the inline node and zero-width space before the cursor', () => {\n const view = createView();\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Backspace' });\n\n expect(handled).toBe(true);\n expect(view.state.tr.delete).toHaveBeenCalledWith(0, 2);\n expect(view.dispatch).toHaveBeenCalledWith(view.state.tr);\n });\n\n it('returns false when regular text precedes the cursor', () => {\n const view = createView({\n state: {\n doc: createDocWithRegularTextBeforeCursor(),\n },\n });\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Backspace' });\n\n expect(handled).toBe(false);\n expect(view.state.tr.delete).not.toHaveBeenCalled();\n expect(view.dispatch).not.toHaveBeenCalled();\n });\n });\n\n describe('ArrowLeft', () => {\n it('selects the inline node before a zero-width space', () => {\n const mathNode = { nodeSize: 3 };\n const view = createView({\n state: {\n doc: createDocWithMathAndZwsp({\n 0: { nodeAfter: mathNode, nodeBefore: null, pos: 0 },\n }),\n },\n });\n const { NodeSelection } = require('prosemirror-state');\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(true);\n expect(view.state.doc.resolve).toHaveBeenCalledWith(0);\n expect(NodeSelection.create).toHaveBeenCalledWith(view.state.doc, 0);\n expect(view.dispatch).toHaveBeenCalled();\n });\n\n it('moves the text cursor before the zero-width space when no inline node precedes it', () => {\n const view = createView();\n const { TextSelection } = require('prosemirror-state');\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(true);\n expect(view.state.doc.resolve).toHaveBeenCalledWith(0);\n expect(TextSelection.create).toHaveBeenCalledWith(view.state.doc, 0);\n expect(view.dispatch).toHaveBeenCalled();\n });\n\n it('returns false when regular text precedes the cursor', () => {\n const view = createView({\n state: {\n doc: createDocWithRegularTextBeforeCursor(),\n },\n });\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'ArrowLeft' });\n\n expect(handled).toBe(false);\n expect(view.state.tr.setSelection).not.toHaveBeenCalled();\n expect(view.dispatch).not.toHaveBeenCalled();\n });\n });\n\n it('returns false for unrelated keys', () => {\n const view = createView();\n\n const handled = ZeroWidthSpaceHandlingPlugin.props.handleKeyDown(view, { key: 'Enter' });\n expect(handled).toBe(false);\n });\n});\n\ndescribe('MathNodeView', () => {\n const createEditorElement = (rect = { top: 0, left: 0, width: 600, height: 400 }) => {\n const element = document.createElement('div');\n Object.defineProperty(element, 'getBoundingClientRect', {\n value: jest.fn(() => rect),\n configurable: true,\n });\n return element;\n };\n\n const createMockEditor = () => ({\n state: {\n selection: {\n from: 0,\n to: 1,\n node: { type: { name: 'math' } },\n },\n tr: {\n setSelection: jest.fn().mockReturnThis(),\n setMeta: jest.fn().mockReturnThis(),\n },\n doc: {},\n },\n view: {\n coordsAtPos: jest.fn(() => ({ top: 100, left: 50 })),\n dispatch: jest.fn(),\n },\n options: {\n element: createEditorElement(),\n },\n commands: {\n focus: jest.fn(),\n },\n instanceId: 'editor-123',\n _toolbarOpened: false,\n });\n\n const mockNode = {\n attrs: {\n latex: 'x^2',\n },\n nodeSize: 1,\n };\n\n let defaultProps;\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockCreatePortal.mockImplementation((node) => node);\n defaultProps = {\n node: mockNode,\n updateAttributes: jest.fn(),\n editor: createMockEditor(),\n selected: false,\n options: {},\n getPos: jest.fn(() => 0),\n };\n });\n\n it('renders without crashing', () => {\n const { container } = render(<MathNodeView {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n expect(getByTestId('node-view-wrapper')).toBeInTheDocument();\n });\n\n it('displays math preview', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n expect(getByTestId('math-preview')).toBeInTheDocument();\n });\n\n it('shows toolbar when selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n it('does not show toolbar when not selected', () => {\n const { queryByTestId } = render(<MathNodeView {...defaultProps} selected={false} />);\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n\n it('adds data-toolbar-for attribute with editor instanceId', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toHaveAttribute('data-toolbar-for', 'editor-123');\n });\n });\n\n describe('toolbar positioning', () => {\n it('positions relative to portal container using coordsAtPos', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('100px');\n expect(toolbar.style.left).toBe('50px');\n });\n });\n\n it('offsets position by portal container getBoundingClientRect', async () => {\n const containerEl = document.createElement('div');\n containerEl.getBoundingClientRect = jest.fn(() => ({ top: 100, left: 50, width: 600, height: 400 }));\n\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: containerEl,\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('0px');\n expect(toolbar.style.left).toBe('0px');\n });\n });\n\n it('applies absolute positioning style to toolbar', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.position).toBe('absolute');\n });\n });\n\n it('renders above other editor overlays with a high z-index', async () => {\n const { container } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.zIndex).toBe('1000');\n });\n });\n\n it('updates position from coordsAtPos when selection changes', async () => {\n const editor = {\n ...defaultProps.editor,\n view: {\n ...defaultProps.editor.view,\n coordsAtPos: jest.fn(() => ({ top: 200, left: 150 })),\n dispatch: jest.fn(),\n },\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n const toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n expect(toolbar.style.top).toBe('200px');\n expect(toolbar.style.left).toBe('150px');\n });\n });\n\n it('clamps toolbar position to viewport margins', async () => {\n const originalInnerHeight = window.innerHeight;\n const originalInnerWidth = window.innerWidth;\n\n Object.defineProperty(window, 'innerHeight', { configurable: true, writable: true, value: 200 });\n Object.defineProperty(window, 'innerWidth', { configurable: true, writable: true, value: 300 });\n\n const editor = {\n ...defaultProps.editor,\n view: {\n ...defaultProps.editor.view,\n coordsAtPos: jest.fn(() => ({ top: 190, left: 280, bottom: 195 })),\n dispatch: jest.fn(),\n },\n };\n\n const { container } = render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n let toolbar;\n await waitFor(() => {\n toolbar = container.querySelector('[data-toolbar-for]');\n expect(toolbar).toBeInTheDocument();\n });\n\n Object.defineProperty(toolbar, 'offsetHeight', { configurable: true, value: 100 });\n Object.defineProperty(toolbar, 'offsetWidth', { configurable: true, value: 150 });\n\n await act(async () => {\n window.dispatchEvent(new Event('resize'));\n await new Promise((resolve) => requestAnimationFrame(resolve));\n });\n\n await waitFor(() => {\n expect(parseInt(toolbar.style.top, 10)).toBeLessThanOrEqual(200 - 100 - 8);\n expect(parseInt(toolbar.style.left, 10)).toBeLessThanOrEqual(300 - 150 - 8);\n expect(parseInt(toolbar.style.top, 10)).toBeGreaterThanOrEqual(8);\n expect(parseInt(toolbar.style.left, 10)).toBeGreaterThanOrEqual(8);\n });\n\n Object.defineProperty(window, 'innerHeight', { configurable: true, writable: true, value: originalInnerHeight });\n Object.defineProperty(window, 'innerWidth', { configurable: true, writable: true, value: originalInnerWidth });\n });\n\n it('attaches scroll and resize listeners while toolbar is open', async () => {\n const addSpy = jest.spyOn(window, 'addEventListener');\n render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(addSpy).toHaveBeenCalledWith('scroll', expect.any(Function), true);\n expect(addSpy).toHaveBeenCalledWith('resize', expect.any(Function));\n });\n addSpy.mockRestore();\n });\n\n it('portals toolbar into _tiptapContainerEl when available', async () => {\n const containerEl = document.createElement('div');\n containerEl.getBoundingClientRect = jest.fn(() => ({ top: 0, left: 0, width: 600, height: 400 }));\n\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: containerEl,\n };\n\n mockCreatePortal.mockClear();\n render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n const lastCall = mockCreatePortal.mock.calls[mockCreatePortal.mock.calls.length - 1];\n expect(lastCall[1]).toBe(containerEl);\n });\n });\n\n it('portals toolbar into document.body when _tiptapContainerEl is not set', async () => {\n const editor = {\n ...defaultProps.editor,\n _tiptapContainerEl: undefined,\n };\n\n mockCreatePortal.mockClear();\n render(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n const lastCall = mockCreatePortal.mock.calls[mockCreatePortal.mock.calls.length - 1];\n expect(lastCall[1]).toBe(document.body);\n });\n });\n });\n\n it('calls updateAttributes when latex changes', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n const input = getByTestId('math-input');\n fireEvent.change(input, { target: { value: 'y^2' } });\n });\n expect(defaultProps.updateAttributes).toHaveBeenCalledWith({ latex: 'y^2' });\n });\n\n it('closes toolbar and updates attributes when done', async () => {\n const updateAttributes = jest.fn();\n const { getByTestId } = render(\n <MathNodeView {...defaultProps} updateAttributes={updateAttributes} selected={true} />,\n );\n\n await waitFor(() => {\n expect(getByTestId('done-button')).toBeInTheDocument();\n });\n\n const doneButton = getByTestId('done-button');\n fireEvent.click(doneButton);\n\n await waitFor(() => {\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n });\n });\n\n it('sets editor._toolbarOpened when toolbar is shown', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n });\n\n it('unsets editor._toolbarOpened when toolbar is closed and node is not selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={false} />);\n\n fireEvent.click(getByTestId('math-preview'));\n\n await waitFor(() => {\n expect(getByTestId('math-toolbar')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n\n fireEvent.click(getByTestId('done-button'));\n\n await waitFor(() => {\n expect(defaultProps.editor._toolbarOpened).toBe(false);\n });\n });\n\n it('keeps editor._toolbarOpened true while the math node remains selected', async () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(getByTestId('done-button')).toBeInTheDocument();\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n\n fireEvent.click(getByTestId('done-button'));\n\n await waitFor(() => {\n expect(defaultProps.editor._toolbarOpened).toBe(true);\n });\n });\n\n it('closes toolbar on outside click and runs handleDone', async () => {\n const updateAttributes = jest.fn();\n const editor = createMockEditor();\n const { TextSelection } = require('prosemirror-state');\n const { queryByTestId } = render(\n <MathNodeView {...defaultProps} editor={editor} updateAttributes={updateAttributes} selected={true} />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.click(document.body);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n expect(TextSelection.create).toHaveBeenCalledWith(editor.state.doc, 1);\n expect(editor.state.tr.setSelection).toHaveBeenCalled();\n expect(editor.view.dispatch).toHaveBeenCalledWith(editor.state.tr);\n expect(editor.commands.focus).toHaveBeenCalled();\n expect(editor._toolbarOpened).toBe(true);\n });\n });\n\n it('re-registers click listener when node changes', async () => {\n const addEventListenerSpy = jest.spyOn(document, 'addEventListener');\n const removeEventListenerSpy = jest.spyOn(document, 'removeEventListener');\n const nodeA = { attrs: { latex: 'x^2' } };\n const nodeB = { attrs: { latex: 'y^2' } };\n\n const { rerender } = render(<MathNodeView {...defaultProps} node={nodeA} selected={true} />);\n\n await waitFor(() => {\n expect(addEventListenerSpy).toHaveBeenCalledWith('click', expect.any(Function));\n });\n\n const initialCallCount = addEventListenerSpy.mock.calls.length;\n\n rerender(<MathNodeView {...defaultProps} node={nodeB} selected={true} />);\n\n await waitFor(() => {\n expect(removeEventListenerSpy).toHaveBeenCalled();\n expect(addEventListenerSpy.mock.calls.length).toBeGreaterThan(initialCallCount);\n });\n\n addEventListenerSpy.mockRestore();\n removeEventListenerSpy.mockRestore();\n });\n\n it('does not close toolbar when clicking the math node preview', async () => {\n const { getByTestId, queryByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.click(getByTestId('math-preview'));\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n describe('unique math-node class per instance', () => {\n let dateNowSpy;\n\n beforeEach(() => {\n let timestamp = 1000;\n dateNowSpy = jest.spyOn(Date, 'now').mockImplementation(() => timestamp++);\n });\n\n afterEach(() => {\n dateNowSpy.mockRestore();\n });\n\n it('assigns a timestamp-based class to NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n const wrapper = getByTestId('node-view-wrapper');\n\n expect(wrapper.className).toMatch(/^math-node-\\d+$/);\n });\n\n it('assigns a different class to each MathNodeView instance', () => {\n const { getAllByTestId } = render(\n <>\n <MathNodeView {...defaultProps} />\n <MathNodeView {...defaultProps} node={{ attrs: { latex: 'y^2' } }} />\n </>,\n );\n\n const wrappers = getAllByTestId('node-view-wrapper');\n expect(wrappers[0].className).toBe('math-node-1000');\n expect(wrappers[1].className).toBe('math-node-1001');\n });\n\n it('closes toolbar when clicking a different math node', async () => {\n const updateAttributes = jest.fn();\n const editorA = createMockEditor();\n const editorB = createMockEditor();\n\n const { getAllByTestId, queryAllByTestId } = render(\n <>\n <MathNodeView {...defaultProps} editor={editorA} updateAttributes={updateAttributes} selected={false} />\n <MathNodeView {...defaultProps} editor={editorB} node={{ attrs: { latex: 'y^2' } }} selected={false} />\n </>,\n );\n\n fireEvent.click(getAllByTestId('math-preview')[0]);\n\n await waitFor(() => {\n expect(queryAllByTestId('math-toolbar')).toHaveLength(1);\n });\n\n const secondPreview = getAllByTestId('math-preview')[1];\n fireEvent.click(secondPreview);\n\n await waitFor(() => {\n expect(queryAllByTestId('math-toolbar')).toHaveLength(1);\n expect(updateAttributes).toHaveBeenCalledWith({ latex: 'x^2' });\n expect(editorA._toolbarOpened).toBe(false);\n expect(getAllByTestId('math-input')[0]).toHaveValue('y^2');\n });\n });\n });\n\n describe('selection-based toolbar guard', () => {\n it('opens toolbar when selected transitions to true and the editor has a NodeSelection on math', async () => {\n const { queryByTestId, rerender } = render(<MathNodeView {...defaultProps} selected={false} />);\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n\n rerender(<MathNodeView {...defaultProps} selected={true} />);\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n });\n\n it('does not open toolbar when selected briefly becomes true but editor selection has no node (Cmd+A / drag case)', async () => {\n const editor = {\n ...defaultProps.editor,\n state: {\n ...defaultProps.editor.state,\n selection: { from: 0, to: 100 }, // no .node — TextSelection / AllSelection shape\n },\n };\n\n const { queryByTestId, rerender } = render(\n <MathNodeView {...defaultProps} editor={editor} selected={false} />,\n );\n rerender(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n await act(async () => {});\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n\n it('does not open toolbar when selected briefly becomes true but NodeSelection targets a non-math node', async () => {\n const editor = {\n ...defaultProps.editor,\n state: {\n ...defaultProps.editor.state,\n selection: { from: 0, to: 1, node: { type: { name: 'image' } } },\n },\n };\n\n const { queryByTestId, rerender } = render(\n <MathNodeView {...defaultProps} editor={editor} selected={false} />,\n );\n rerender(<MathNodeView {...defaultProps} editor={editor} selected={true} />);\n\n await act(async () => {});\n expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();\n });\n });\n\n it('does not close toolbar when clicking equation editor dropdown', async () => {\n const { queryByTestId } = render(<MathNodeView {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n // Simulate MUI Select's portal dropdown container.\n const dropdown = document.createElement('div');\n dropdown.id = 'equation-editor-select-listbox';\n document.body.appendChild(dropdown);\n\n fireEvent.click(dropdown);\n\n await waitFor(() => {\n expect(queryByTestId('math-toolbar')).toBeInTheDocument();\n });\n\n document.body.removeChild(dropdown);\n });\n\n it('renders with empty latex', () => {\n const nodeWithEmptyLatex = { attrs: { latex: '' } };\n const { getByTestId } = render(<MathNodeView {...defaultProps} node={nodeWithEmptyLatex} />);\n expect(getByTestId('math-preview')).toBeInTheDocument();\n });\n\n it('has correct styling on NodeViewWrapper', () => {\n const { getByTestId } = render(<MathNodeView {...defaultProps} />);\n const wrapper = getByTestId('node-view-wrapper');\n expect(wrapper).toHaveStyle({ display: 'inline-flex', cursor: 'pointer' });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _media = _interopRequireDefault(require("../media"));
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
// Create a mockable insertDialog function
|
|
11
|
+
var mockInsertDialog = jest.fn();
|
|
12
|
+
|
|
13
|
+
// Mock react-dom BEFORE any imports that depend on it
|
|
14
|
+
jest.mock('react-dom', function () {
|
|
15
|
+
return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
|
|
16
|
+
render: jest.fn()
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Mock the insertDialog function in the media module
|
|
21
|
+
jest.mock('../media', function () {
|
|
22
|
+
var actual = jest.requireActual('../media');
|
|
23
|
+
return _objectSpread(_objectSpread({
|
|
24
|
+
__esModule: true
|
|
25
|
+
}, actual), {}, {
|
|
26
|
+
"default": actual["default"],
|
|
27
|
+
// Preserve the default export
|
|
28
|
+
insertDialog: function insertDialog() {
|
|
29
|
+
return mockInsertDialog.apply(void 0, arguments);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
jest.mock('@tiptap/core', function () {
|
|
34
|
+
return {
|
|
35
|
+
Node: {
|
|
36
|
+
create: jest.fn(function (config) {
|
|
37
|
+
return config;
|
|
38
|
+
})
|
|
39
|
+
},
|
|
40
|
+
mergeAttributes: jest.fn(function () {
|
|
41
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
42
|
+
args[_key] = arguments[_key];
|
|
43
|
+
}
|
|
44
|
+
return Object.assign.apply(Object, [{}].concat(args));
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
jest.mock('@tiptap/react', function () {
|
|
49
|
+
return {
|
|
50
|
+
NodeViewWrapper: function NodeViewWrapper(_ref) {
|
|
51
|
+
var children = _ref.children;
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
53
|
+
"data-testid": "node-view-wrapper"
|
|
54
|
+
}, children);
|
|
55
|
+
},
|
|
56
|
+
ReactNodeViewRenderer: jest.fn(function (component) {
|
|
57
|
+
return component;
|
|
58
|
+
})
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
jest.mock('../../components/media/MediaDialog', function () {
|
|
62
|
+
return {
|
|
63
|
+
__esModule: true,
|
|
64
|
+
"default": jest.fn(function () {
|
|
65
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
66
|
+
"data-testid": "media-dialog"
|
|
67
|
+
});
|
|
68
|
+
})
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
jest.mock('../../components/media/MediaToolbar', function () {
|
|
72
|
+
return {
|
|
73
|
+
__esModule: true,
|
|
74
|
+
"default": jest.fn(function (_ref2) {
|
|
75
|
+
var onEdit = _ref2.onEdit,
|
|
76
|
+
onRemove = _ref2.onRemove;
|
|
77
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
78
|
+
"data-testid": "media-toolbar"
|
|
79
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
80
|
+
onClick: onEdit,
|
|
81
|
+
"data-testid": "edit-button"
|
|
82
|
+
}, "Edit Settings"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
83
|
+
onClick: onRemove,
|
|
84
|
+
"data-testid": "remove-button"
|
|
85
|
+
}, "Remove"));
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
describe('MediaNodeView Component', function () {
|
|
90
|
+
var mockEditor;
|
|
91
|
+
var mockUpdateAttributes;
|
|
92
|
+
var mockDeleteNode;
|
|
93
|
+
beforeEach(function () {
|
|
94
|
+
jest.clearAllMocks();
|
|
95
|
+
mockInsertDialog.mockClear();
|
|
96
|
+
|
|
97
|
+
// Clean up any existing dialogs in the DOM
|
|
98
|
+
document.body.innerHTML = '';
|
|
99
|
+
mockEditor = {
|
|
100
|
+
chain: jest.fn(function () {
|
|
101
|
+
return {
|
|
102
|
+
focus: jest.fn(function () {
|
|
103
|
+
return {
|
|
104
|
+
run: jest.fn()
|
|
105
|
+
};
|
|
106
|
+
})
|
|
107
|
+
};
|
|
108
|
+
})
|
|
109
|
+
};
|
|
110
|
+
mockUpdateAttributes = jest.fn();
|
|
111
|
+
mockDeleteNode = jest.fn();
|
|
112
|
+
});
|
|
113
|
+
afterEach(function () {
|
|
114
|
+
// Clean up DOM after each test
|
|
115
|
+
document.body.innerHTML = '';
|
|
116
|
+
});
|
|
117
|
+
describe('dialog auto-opening behavior - verifies the fix', function () {
|
|
118
|
+
it('should NOT open dialog on mount when audio has existing src', function () {
|
|
119
|
+
var node = {
|
|
120
|
+
attrs: {
|
|
121
|
+
type: 'audio',
|
|
122
|
+
tag: 'audio',
|
|
123
|
+
src: 'https://example.com/audio.mp3',
|
|
124
|
+
width: null,
|
|
125
|
+
height: null
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// This should render without opening any dialogs
|
|
130
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
131
|
+
editor: mockEditor,
|
|
132
|
+
node: node,
|
|
133
|
+
updateAttributes: mockUpdateAttributes,
|
|
134
|
+
deleteNode: mockDeleteNode,
|
|
135
|
+
options: {}
|
|
136
|
+
})),
|
|
137
|
+
container = _render.container;
|
|
138
|
+
|
|
139
|
+
// Verify the component rendered successfully
|
|
140
|
+
expect(container.querySelector('audio')).toBeTruthy();
|
|
141
|
+
// Verify mockInsertDialog was not called (dialog didn't open)
|
|
142
|
+
expect(mockInsertDialog).not.toHaveBeenCalled();
|
|
143
|
+
// Verify deleteNode was not called (media was not removed)
|
|
144
|
+
expect(mockDeleteNode).not.toHaveBeenCalled();
|
|
145
|
+
});
|
|
146
|
+
it('should NOT open dialog on mount when video has existing src', function () {
|
|
147
|
+
var node = {
|
|
148
|
+
attrs: {
|
|
149
|
+
type: 'video',
|
|
150
|
+
tag: 'iframe',
|
|
151
|
+
src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',
|
|
152
|
+
width: '640',
|
|
153
|
+
height: '480'
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// This should render without opening any dialogs
|
|
158
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
159
|
+
editor: mockEditor,
|
|
160
|
+
node: node,
|
|
161
|
+
updateAttributes: mockUpdateAttributes,
|
|
162
|
+
deleteNode: mockDeleteNode,
|
|
163
|
+
options: {}
|
|
164
|
+
})),
|
|
165
|
+
container = _render2.container;
|
|
166
|
+
|
|
167
|
+
// Verify the component rendered successfully
|
|
168
|
+
expect(container.querySelector('iframe')).toBeTruthy();
|
|
169
|
+
// Verify mockInsertDialog was not called (dialog didn't open)
|
|
170
|
+
expect(mockInsertDialog).not.toHaveBeenCalled();
|
|
171
|
+
// Verify deleteNode was not called (media was not removed)
|
|
172
|
+
expect(mockDeleteNode).not.toHaveBeenCalled();
|
|
173
|
+
});
|
|
174
|
+
it('should render existing media with empty string src without opening dialog', function () {
|
|
175
|
+
var node = {
|
|
176
|
+
attrs: {
|
|
177
|
+
type: 'audio',
|
|
178
|
+
tag: 'audio',
|
|
179
|
+
src: '',
|
|
180
|
+
// Empty string (falsy but not null)
|
|
181
|
+
width: null,
|
|
182
|
+
height: null
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
186
|
+
editor: mockEditor,
|
|
187
|
+
node: node,
|
|
188
|
+
updateAttributes: mockUpdateAttributes,
|
|
189
|
+
deleteNode: mockDeleteNode,
|
|
190
|
+
options: {}
|
|
191
|
+
})),
|
|
192
|
+
container = _render3.container;
|
|
193
|
+
|
|
194
|
+
// Empty string is falsy, so dialog WOULD open with current implementation
|
|
195
|
+
// This documents current behavior
|
|
196
|
+
expect(container).toBeTruthy();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe('toolbar interaction', function () {
|
|
200
|
+
it('should render edit and remove buttons', function () {
|
|
201
|
+
var node = {
|
|
202
|
+
attrs: {
|
|
203
|
+
type: 'audio',
|
|
204
|
+
tag: 'audio',
|
|
205
|
+
src: 'https://example.com/audio.mp3'
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
209
|
+
editor: mockEditor,
|
|
210
|
+
node: node,
|
|
211
|
+
updateAttributes: mockUpdateAttributes,
|
|
212
|
+
deleteNode: mockDeleteNode,
|
|
213
|
+
options: {}
|
|
214
|
+
})),
|
|
215
|
+
getByTestId = _render4.getByTestId;
|
|
216
|
+
expect(getByTestId('edit-button')).toBeTruthy();
|
|
217
|
+
expect(getByTestId('remove-button')).toBeTruthy();
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('rendering', function () {
|
|
221
|
+
it('should render audio element when tag is audio', function () {
|
|
222
|
+
var node = {
|
|
223
|
+
attrs: {
|
|
224
|
+
type: 'audio',
|
|
225
|
+
tag: 'audio',
|
|
226
|
+
src: 'https://example.com/audio.mp3'
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
230
|
+
editor: mockEditor,
|
|
231
|
+
node: node,
|
|
232
|
+
updateAttributes: mockUpdateAttributes,
|
|
233
|
+
deleteNode: mockDeleteNode,
|
|
234
|
+
options: {}
|
|
235
|
+
})),
|
|
236
|
+
container = _render5.container;
|
|
237
|
+
var audio = container.querySelector('audio');
|
|
238
|
+
expect(audio).toBeTruthy();
|
|
239
|
+
var source = audio.querySelector('source');
|
|
240
|
+
expect(source.getAttribute('src')).toBe('https://example.com/audio.mp3');
|
|
241
|
+
});
|
|
242
|
+
it('should render iframe when tag is iframe', function () {
|
|
243
|
+
var node = {
|
|
244
|
+
attrs: {
|
|
245
|
+
type: 'video',
|
|
246
|
+
tag: 'iframe',
|
|
247
|
+
src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',
|
|
248
|
+
width: '640',
|
|
249
|
+
height: '480'
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
253
|
+
editor: mockEditor,
|
|
254
|
+
node: node,
|
|
255
|
+
updateAttributes: mockUpdateAttributes,
|
|
256
|
+
deleteNode: mockDeleteNode,
|
|
257
|
+
options: {}
|
|
258
|
+
})),
|
|
259
|
+
container = _render6.container;
|
|
260
|
+
var iframe = container.querySelector('iframe');
|
|
261
|
+
expect(iframe).toBeTruthy();
|
|
262
|
+
expect(iframe.getAttribute('src')).toBe('https://www.youtube.com/embed/dQw4w9WgXcQ');
|
|
263
|
+
expect(iframe.getAttribute('width')).toBe('640');
|
|
264
|
+
expect(iframe.getAttribute('height')).toBe('480');
|
|
265
|
+
});
|
|
266
|
+
it('should render MediaToolbar', function () {
|
|
267
|
+
var node = {
|
|
268
|
+
attrs: {
|
|
269
|
+
type: 'audio',
|
|
270
|
+
tag: 'audio',
|
|
271
|
+
src: 'https://example.com/audio.mp3'
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
275
|
+
editor: mockEditor,
|
|
276
|
+
node: node,
|
|
277
|
+
updateAttributes: mockUpdateAttributes,
|
|
278
|
+
deleteNode: mockDeleteNode,
|
|
279
|
+
options: {}
|
|
280
|
+
})),
|
|
281
|
+
getByTestId = _render7.getByTestId;
|
|
282
|
+
expect(getByTestId('media-toolbar')).toBeTruthy();
|
|
283
|
+
expect(getByTestId('edit-button')).toBeTruthy();
|
|
284
|
+
expect(getByTestId('remove-button')).toBeTruthy();
|
|
285
|
+
});
|
|
286
|
+
it('should call deleteNode when remove button is clicked', function () {
|
|
287
|
+
var node = {
|
|
288
|
+
attrs: {
|
|
289
|
+
type: 'audio',
|
|
290
|
+
tag: 'audio',
|
|
291
|
+
src: 'https://example.com/audio.mp3'
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_media["default"], {
|
|
295
|
+
editor: mockEditor,
|
|
296
|
+
node: node,
|
|
297
|
+
updateAttributes: mockUpdateAttributes,
|
|
298
|
+
deleteNode: mockDeleteNode,
|
|
299
|
+
options: {}
|
|
300
|
+
})),
|
|
301
|
+
getByTestId = _render8.getByTestId;
|
|
302
|
+
_react2.fireEvent.click(getByTestId('remove-button'));
|
|
303
|
+
expect(mockDeleteNode).toHaveBeenCalled();
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
//# sourceMappingURL=media-node-view.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-node-view.test.js","names":["_react","_interopRequireDefault","require","_react2","_media","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","mockInsertDialog","jest","fn","mock","requireActual","render","actual","__esModule","insertDialog","Node","create","config","mergeAttributes","_len","args","Array","_key","assign","concat","NodeViewWrapper","_ref","children","createElement","ReactNodeViewRenderer","component","_ref2","onEdit","onRemove","onClick","describe","mockEditor","mockUpdateAttributes","mockDeleteNode","beforeEach","clearAllMocks","mockClear","document","body","innerHTML","chain","focus","run","afterEach","it","node","attrs","type","tag","src","width","height","_render","editor","updateAttributes","deleteNode","options","container","expect","querySelector","toBeTruthy","not","toHaveBeenCalled","_render2","_render3","_render4","getByTestId","_render5","audio","source","getAttribute","toBe","_render6","iframe","_render7","_render8","fireEvent","click"],"sources":["../../../src/extensions/__tests__/media-node-view.test.jsx"],"sourcesContent":["// Create a mockable insertDialog function\nconst mockInsertDialog = jest.fn();\n\n// Mock react-dom BEFORE any imports that depend on it\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n render: jest.fn(),\n}));\n\n// Mock the insertDialog function in the media module\njest.mock('../media', () => {\n const actual = jest.requireActual('../media');\n return {\n __esModule: true,\n ...actual,\n default: actual.default, // Preserve the default export\n insertDialog: (...args) => mockInsertDialog(...args),\n };\n});\n\nimport React from 'react';\nimport { render, fireEvent } from '@testing-library/react';\nimport MediaNodeView from '../media';\n\njest.mock('@tiptap/core', () => ({\n Node: { create: jest.fn((config) => config) },\n mergeAttributes: jest.fn((...args) => Object.assign({}, ...args)),\n}));\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children }) => <div data-testid=\"node-view-wrapper\">{children}</div>,\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\njest.mock('../../components/media/MediaDialog', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"media-dialog\" />),\n}));\n\njest.mock('../../components/media/MediaToolbar', () => ({\n __esModule: true,\n default: jest.fn(({ onEdit, onRemove }) => (\n <div data-testid=\"media-toolbar\">\n <button onClick={onEdit} data-testid=\"edit-button\">\n Edit Settings\n </button>\n <button onClick={onRemove} data-testid=\"remove-button\">\n Remove\n </button>\n </div>\n )),\n}));\n\ndescribe('MediaNodeView Component', () => {\n let mockEditor;\n let mockUpdateAttributes;\n let mockDeleteNode;\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockInsertDialog.mockClear();\n\n // Clean up any existing dialogs in the DOM\n document.body.innerHTML = '';\n\n mockEditor = {\n chain: jest.fn(() => ({\n focus: jest.fn(() => ({\n run: jest.fn(),\n })),\n })),\n };\n\n mockUpdateAttributes = jest.fn();\n mockDeleteNode = jest.fn();\n });\n\n afterEach(() => {\n // Clean up DOM after each test\n document.body.innerHTML = '';\n });\n\n describe('dialog auto-opening behavior - verifies the fix', () => {\n it('should NOT open dialog on mount when audio has existing src', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n width: null,\n height: null,\n },\n };\n\n // This should render without opening any dialogs\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Verify the component rendered successfully\n expect(container.querySelector('audio')).toBeTruthy();\n // Verify mockInsertDialog was not called (dialog didn't open)\n expect(mockInsertDialog).not.toHaveBeenCalled();\n // Verify deleteNode was not called (media was not removed)\n expect(mockDeleteNode).not.toHaveBeenCalled();\n });\n\n it('should NOT open dialog on mount when video has existing src', () => {\n const node = {\n attrs: {\n type: 'video',\n tag: 'iframe',\n src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',\n width: '640',\n height: '480',\n },\n };\n\n // This should render without opening any dialogs\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Verify the component rendered successfully\n expect(container.querySelector('iframe')).toBeTruthy();\n // Verify mockInsertDialog was not called (dialog didn't open)\n expect(mockInsertDialog).not.toHaveBeenCalled();\n // Verify deleteNode was not called (media was not removed)\n expect(mockDeleteNode).not.toHaveBeenCalled();\n });\n\n it('should render existing media with empty string src without opening dialog', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: '', // Empty string (falsy but not null)\n width: null,\n height: null,\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n // Empty string is falsy, so dialog WOULD open with current implementation\n // This documents current behavior\n expect(container).toBeTruthy();\n });\n });\n\n describe('toolbar interaction', () => {\n it('should render edit and remove buttons', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n expect(getByTestId('edit-button')).toBeTruthy();\n expect(getByTestId('remove-button')).toBeTruthy();\n });\n });\n\n describe('rendering', () => {\n it('should render audio element when tag is audio', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n const audio = container.querySelector('audio');\n expect(audio).toBeTruthy();\n const source = audio.querySelector('source');\n expect(source.getAttribute('src')).toBe('https://example.com/audio.mp3');\n });\n\n it('should render iframe when tag is iframe', () => {\n const node = {\n attrs: {\n type: 'video',\n tag: 'iframe',\n src: 'https://www.youtube.com/embed/dQw4w9WgXcQ',\n width: '640',\n height: '480',\n },\n };\n\n const { container } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n const iframe = container.querySelector('iframe');\n expect(iframe).toBeTruthy();\n expect(iframe.getAttribute('src')).toBe('https://www.youtube.com/embed/dQw4w9WgXcQ');\n expect(iframe.getAttribute('width')).toBe('640');\n expect(iframe.getAttribute('height')).toBe('480');\n });\n\n it('should render MediaToolbar', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n expect(getByTestId('media-toolbar')).toBeTruthy();\n expect(getByTestId('edit-button')).toBeTruthy();\n expect(getByTestId('remove-button')).toBeTruthy();\n });\n\n it('should call deleteNode when remove button is clicked', () => {\n const node = {\n attrs: {\n type: 'audio',\n tag: 'audio',\n src: 'https://example.com/audio.mp3',\n },\n };\n\n const { getByTestId } = render(\n <MediaNodeView\n editor={mockEditor}\n node={node}\n updateAttributes={mockUpdateAttributes}\n deleteNode={mockDeleteNode}\n options={{}}\n />,\n );\n\n fireEvent.click(getByTestId('remove-button'));\n\n expect(mockDeleteNode).toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|