211 lines
5.4 KiB
JavaScript
Raw Normal View History

2019-08-13 15:09:36 +02:00
import { fromJS } from 'immutable';
import {
createLayout,
formatLayout,
getFieldType,
getInputSize,
getRowSize,
unformatLayout,
} from '../layout';
describe('Content Manager | utils | layout', () => {
describe('createLayout', () => {
it('should return an array of object with keys rowId and rowContent', () => {
const data = [
[{ name: 'test', size: 4 }, { name: 'test1', size: 4 }],
[{ name: 'test2', size: 12 }],
[{ name: 'test3', size: 6 }, { name: 'test4', size: 1 }],
];
const expected = [
{
rowId: 0,
rowContent: [{ name: 'test', size: 4 }, { name: 'test1', size: 4 }],
},
{ rowId: 1, rowContent: [{ name: 'test2', size: 12 }] },
{
rowId: 2,
rowContent: [{ name: 'test3', size: 6 }, { name: 'test4', size: 1 }],
},
];
expect(createLayout(data)).toEqual(expected);
});
});
describe('formatLayout', () => {
it('Should complete each row so the size is 12', () => {
const data = [
{
rowId: 0,
rowContent: [{ name: 'test', size: 4 }, { name: 'test1', size: 4 }],
},
{ rowId: 1, rowContent: [{ name: 'test2', size: 12 }] },
{
rowId: 2,
rowContent: [{ name: 'test3', size: 6 }, { name: 'test4', size: 1 }],
},
];
const expected = [
{
rowId: 0,
rowContent: [
{ name: 'test', size: 4 },
{ name: 'test1', size: 4 },
{ name: '_TEMP_', size: 4 },
],
},
{ rowId: 1, rowContent: [{ name: 'test2', size: 12 }] },
{
rowId: 2,
rowContent: [
{ name: 'test3', size: 6 },
{ name: 'test4', size: 1 },
{ name: '_TEMP_', size: 5 },
],
},
];
expect(formatLayout(data)).toEqual(expected);
});
it('should complete each row regardless the added _TEMP_ elements', () => {
const expected = [
{
rowId: 0,
rowContent: [
{ name: 'test', size: 4 },
{ name: 'test1', size: 4 },
{ name: '_TEMP_', size: 4 },
],
},
{ rowId: 1, rowContent: [{ name: 'test2', size: 12 }] },
{
rowId: 2,
rowContent: [
{ name: 'test3', size: 6 },
{ name: 'test4', size: 1 },
{ name: '_TEMP_', size: 5 },
],
},
{
rowId: 3,
rowContent: [{ name: 'test5', size: 6 }, { name: 'test6', size: 6 }],
},
];
expect(formatLayout(expected)).toEqual(expected);
});
});
describe('getFieldType', () => {
it('Should return the type of a field', () => {
const state = fromJS({
mData: {},
modifiedData: {
schema: {
uid: 'test',
attributes: {
bool: { type: 'boolean' },
ingredients: {
2019-10-28 11:31:37 +01:00
type: 'component',
component: 'ingredients',
2019-08-13 15:09:36 +02:00
repeatable: true,
min: 1,
max: 10,
},
linkedTags: {
attribute: 'tag',
collection: 'tag',
column: 'id',
isVirtual: true,
relationType: 'manyWay',
targetModel: 'tag',
type: 'relation',
},
updated_at: { type: 'timestampUpdate' },
},
},
},
});
expect(getFieldType(state, 'linkedTags')).toBe('relation');
});
});
describe('getInputSize', () => {
it('Should return 6 if the type is unknown, undefined or text', () => {
expect(getInputSize(undefined)).toBe(6);
expect(getInputSize('unkown')).toBe(6);
expect(getInputSize('text')).toBe(6);
});
2019-10-28 11:31:37 +01:00
it('Should return 12 if the type is either json, component or richtext', () => {
2019-08-13 15:09:36 +02:00
expect(getInputSize('json')).toBe(12);
expect(getInputSize('richtext')).toBe(12);
2019-10-28 11:31:37 +01:00
expect(getInputSize('component')).toBe(12);
2019-08-13 15:09:36 +02:00
});
it('Should return 4 if the type is boolean', () => {
expect(getInputSize('boolean')).toBe(4);
});
});
describe('getRowSize', () => {
it('should return the sum of the size of all the elements of an array of object', () => {
const row = [
{ name: 'test', size: 1 },
{ name: 'test1', size: 2 },
{ name: 'test2', size: 3 },
{ name: 'test3', size: 4 },
{ name: 'test4', size: 5 },
];
expect(getRowSize(row)).toBe(15);
});
});
describe('unformatLayout', () => {
it('Should return an array containing the displayed fields', () => {
const data = [
{
rowId: 0,
rowContent: [
{
name: 'name',
size: 6,
},
{
name: 'test',
size: 4,
},
{
name: '_TEMP_',
size: 2,
},
],
},
{
rowId: 1,
rowContent: [
{
name: 'name1',
size: 4,
},
{
name: '_TEMP_',
size: 8,
},
],
},
];
const expected = [
[{ name: 'name', size: 6 }, { name: 'test', size: 4 }],
[{ name: 'name1', size: 4 }],
];
expect(unformatLayout(data)).toEqual(expected);
});
});
});