/*
* This file is part of ORY Editor.
*
* ORY Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ORY Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ORY Editor. If not, see .
*
* @license LGPL-3.0
* @copyright 2016-2018 Aeneas Rekkas
* @author Aeneas Rekkas
*
*/
import { mount, render } from 'enzyme';
import * as React from 'react';
import { HTMLRenderer } from '../index';
import slate from 'ory-editor-plugins-slate';
import { LayoutPluginProps } from 'ory-editor-core/lib/service/plugin/classes';
import { Plugins } from 'ory-editor-core/src/service/plugin/classes';
import { ContentPluginProps } from 'ory-editor-core/lib/service/plugin/classes';
import { EditableType } from 'ory-editor-core/lib/types/editable';
const Layout = ({ children, state: { className } }) => (
{children}
);
const plugins: Plugins = {
content: [(slate() as unknown) as ContentPluginProps],
layout: [
({
name: 'layout',
version: '0.0.1',
Component: Layout,
} as unknown) as LayoutPluginProps,
],
};
describe('HTMLRenderer', () => {
// describe('single content cell', () => {
// const state = {
// id: '1',
// cells: [{
// id: '2',
// content: {
// plugin: {
// name: 'ory/editor/core/default'
// },
// state: {
// value: 'Lorem ipsum dolor sit amet.'
// }
// }
// }]
// }
//
// it('should render "lorem ipsum"', () => {
// const wrapper = mount()
// expect(wrapper.text()).toContain('Lorem ipsum')
// })
// })
//
// describe('layout > content cell', () => {
// const state = {
// id: '1',
// cells: [{
// id: '2',
// layout: {
// plugin: {
// name: 'layout'
// },
// state: {
// className: 'layout-state'
// }
// },
// rows: [{
// cells: [{
// content: {
// plugin: {
// name: 'ory/editor/core/default'
// },
// state: {
// value: 'Lorem ipsum dolor sit amet.'
// }
// }
// }]
// }]
// }]
// }
//
// const wrapper = mount()
// it('should contain "lorem ipsum"', () => {
// expect(wrapper.text()).toContain('Lorem ipsum')
// })
// it('should render the layout cell cell', () => {
// expect(wrapper.find('.layout-state')).toHaveLength(1)
// })
// })
//
// describe('two content cells', () => {
// const state = {
// id: '1',
// cells: [{
// content: {
// plugin: {
// name: 'ory/editor/core/default'
// },
// state: {
// value: 'Lorem ipsum.'
// }
// }
// }, {
// content: {
// plugin: {
// name: 'ory/editor/core/default'
// },
// state: {
// value: 'dolor sit amet.'
// }
// }
// }]
// }
//
// const wrapper = mount()
// it('should contain "lorem ipsum." and "dolor sit amet."', () => {
// expect(wrapper.text()).toContain('Lorem ipsum.')
// expect(wrapper.text()).toContain('dolor sit amet.')
// })
// it('should set the correct sizes although no sizes were given', () => {
// expect(wrapper.find('.ory-cell-sm-6')).toHaveLength(2)
// })
// })
describe('rendering html content from slate', () => {
[
{
id: '1',
cells: [
{
id: '4c0f5ab5-f331-4d69-8850-7de0df917cc2',
size: 12,
content: {
plugin: {
name: 'ory/editor/core/content/slate',
version: '0.0.1',
},
state: {
serialized: {
nodes: [
{
kind: 'block',
type: 'PARAGRAPH/PARAGRAPH',
nodes: [
{
kind: 'text',
text: 'Asdfg',
},
],
data: {
align: 'center',
},
},
],
},
},
},
},
],
},
].forEach((c, k) => {
describe(`case ${k}`, () => {
const wrapper = render();
it('should pass', () => {
expect(wrapper.html()).toEqual(
// tslint:disable-next-line:max-line-length
''
);
});
});
});
});
describe('two inlining content cells', () => {
const state: EditableType = {
id: '1',
cells: [
{
id: '1_1',
rows: [
{
id: '1_1_1',
cells: [
{
id: '1_1_1_1',
content: {
plugin: {
name: 'ory/editor/core/default',
version: '0.0.1',
},
state: { value: 'Lorem ipsum.' },
},
inline: 'left',
},
{
id: '1_1_1_2',
content: {
plugin: {
name: 'ory/editor/core/default',
version: '0.0.1',
},
state: { value: 'dolor sit amet.' },
},
},
],
},
],
},
],
};
const wrapper = mount();
it('should contain "lorem ipsum." and "dolor sit amet."', () => {
expect(wrapper.text()).toContain('Lorem ipsum.');
expect(wrapper.text()).toContain('dolor sit amet.');
});
it('should set up inlining correctly for ory-cell-sm-6', () => {
expect(wrapper.find('.ory-cell-sm-6')).toHaveLength(1);
});
it('should set up inlining correctly for ory-cell-sm-12', () => {
expect(wrapper.find('.ory-cell-sm-12')).toHaveLength(2);
});
it('should set up inlining correctly for ory-cell-has-inline-neighbour', () => {
expect(wrapper.find('.ory-cell-has-inline-neighbour')).toHaveLength(1);
});
it('should set up inlining correctly for ory-row-has-floating-children', () => {
expect(wrapper.find('.ory-row-has-floating-children')).toHaveLength(1);
});
});
});