Ghost/ghost/admin/tests/acceptance/editor/lexical-test.js

72 lines
2.6 KiB
JavaScript
Raw Normal View History

import loginAsRole from '../../helpers/login-as-role';
import {BLANK_DOC} from 'koenig-editor/components/koenig-editor';
import {currentURL} from '@ember/test-helpers';
import {expect} from 'chai';
import {setupApplicationTest} from 'ember-mocha';
import {setupMirage} from 'ember-cli-mirage/test-support';
import {visit} from '../../helpers/visit';
describe('Acceptance: Lexical editor', function () {
let hooks = setupApplicationTest();
setupMirage(hooks);
beforeEach(async function () {
this.server.loadFixtures();
// ensure required config is in place for external lexical editor to load
const config = this.server.schema.configs.find(1);
config.attrs.editor = {url: 'https://cdn.pkg/editor.js'};
config.save();
// stub loaded external module to avoid loading of external dep
window['@tryghost/koenig-lexical'] = {
KoenigComposer: () => null,
KoenigEditor: () => null
};
});
it('redirects to signin when not authenticated', async function () {
await visit('/lexical-editor/post/');
expect(currentURL(), 'currentURL').to.equal('/signin');
});
it('redirects to posts screen if editor.url config is missing', async function () {
const config = this.server.schema.configs.find(1);
config.attrs.editor = undefined;
config.save();
await loginAsRole('Administrator', this.server);
await visit('/lexical-editor/post/');
expect(currentURL(), 'currentURL').to.equal('/posts');
});
it('loads when editor.url is present', async function () {
await loginAsRole('Administrator', this.server);
await visit('/lexical-editor/post/');
expect(currentURL(), 'currentURL').to.equal('/lexical-editor/post/');
});
it('redirects mobiledoc editor to lexical editor when post.lexical is present', async function () {
const post = this.server.create('post', {
lexical: JSON.stringify({})
});
await loginAsRole('Administrator', this.server);
await visit(`/editor/post/${post.id}`);
expect(currentURL()).to.equal(`/lexical-editor/post/${post.id}`);
});
it('redirects lexical editor to mobiledoc editor when post.mobiledoc is present', async function () {
const post = this.server.create('post', {
mobiledoc: JSON.stringify(BLANK_DOC)
});
await loginAsRole('Administrator', this.server);
await visit(`/lexical-editor/post/${post.id}`);
expect(currentURL()).to.equal(`/editor/post/${post.id}`);
});
});