godo.js/tests/godo.test.js

65 lines
2.0 KiB
JavaScript

import {expect} from 'vitest'
import { domTest } from './helpers.mjs'
import '../src-js/godo.js'
domTest('content is moved from linked source', ({appendToDom}) => {
// invalid-tag to check initial content is parsed before being assigned to
// the input value
const dom = appendToDom(`
<div>
<form>
<textarea hidden id="marshmallow">
<invalid-tag>Initial Content</invalid-tag>
</textarea>
</form>
<godo-editor linked-source="marshmallow">
</godo-editor>
</div>
`)
const godoContent = dom.querySelector('godo-editor .godo--editor')
expect(godoContent.innerHTML).toBe('<p>Initial Content</p>')
})
domTest('godo content is updated from source on update-event', ({appendToDom}) => {
// invalid-tag to check initial content is parsed before being assigned to
// the text area value
const dom = appendToDom(`
<div>
<form>
<textarea hidden id="marshmallow">
</textarea>
</form>
<godo-editor update-event="update-me" linked-source="marshmallow" >
</godo-editor>
</div>
`)
const godoContent = dom.querySelector('godo-editor .godo--editor')
const marshmallow = dom.querySelector('#marshmallow')
marshmallow.value = '<invalid-tag>Content changed</invalid-tag>'
marshmallow.dispatchEvent(new Event('update-me'))
expect(godoContent.innerHTML).toBe('<p>Content changed</p>')
})
domTest('linked source value is updated on form submit', ({appendToDom}) => {
const dom = appendToDom(`
<div>
<form>
<textarea hidden id="marshmallow"></textarea>
</form>
<godo-editor update-event="update-me" linked-source="marshmallow">
</godo-editor>
</div>
`)
const godo = dom.querySelector('godo-editor')
const marshmallow = dom.querySelector('#marshmallow')
godo.view.dispatch(godo.state.tr.insertText('Changed content'))
expect(marshmallow.value).toBe('')
marshmallow.form.dispatchEvent(new Event('submit'))
expect(marshmallow.value).toBe('<p>Changed content</p>')
})