241 lines
4.8 KiB
JavaScript
241 lines
4.8 KiB
JavaScript
import { shallowMount, createLocalVue } from '@vue/test-utils'
|
|
import ContentBlock from '@/components/ContentBlock'
|
|
import Vuex from 'vuex'
|
|
|
|
const localVue = createLocalVue()
|
|
|
|
localVue.use(Vuex)
|
|
|
|
describe('ContentBlock.vue', () => {
|
|
|
|
let actions;
|
|
let store;
|
|
let getters;
|
|
|
|
beforeEach(() => {
|
|
actions = {};
|
|
getters = {
|
|
editModule: jest.fn()
|
|
};
|
|
|
|
store = new Vuex.Store({
|
|
state: {},
|
|
getters,
|
|
actions: {}
|
|
})
|
|
})
|
|
|
|
it('should update index if content list has minimal length', () => {
|
|
const props = {
|
|
contentBlock: {id: 'asbd', type: 'content', contents: []},
|
|
parent: null
|
|
};
|
|
const wrapper = shallowMount(ContentBlock, {
|
|
propsData: props,
|
|
store,
|
|
localVue
|
|
});
|
|
|
|
let contentList = [1,2,3,4];
|
|
let index = 0;
|
|
let updatedIndex = wrapper.vm.updateStartingIndex(index, contentList);
|
|
expect(updatedIndex).toEqual(contentList.length + index);
|
|
});
|
|
|
|
it('should not update index if content list has not minimal length', () => {
|
|
const props = {
|
|
contentBlock: {id: 'asbd', type: 'content', contents: []},
|
|
parent: null
|
|
};
|
|
const wrapper = shallowMount(ContentBlock, {
|
|
propsData: props,
|
|
store,
|
|
localVue
|
|
});
|
|
|
|
let contentList = [];
|
|
let index = 2;
|
|
let updatedIndex = wrapper.vm.updateStartingIndex(index, contentList);
|
|
expect(updatedIndex).toEqual(index);
|
|
});
|
|
|
|
|
|
it('should use continuos item numbering', () => {
|
|
|
|
const contents = [
|
|
{
|
|
type: 'text_block'
|
|
},
|
|
{
|
|
type: 'content_list_item',
|
|
id: 1,
|
|
contents: []
|
|
},
|
|
{
|
|
type: 'text_block'
|
|
},
|
|
{
|
|
type: 'content_list_item',
|
|
id: 2,
|
|
contents: []
|
|
},
|
|
{
|
|
type: 'content_list_item',
|
|
id: 3,
|
|
contents: []
|
|
},
|
|
{
|
|
type: 'text_block'
|
|
},
|
|
{
|
|
type: 'content_list_item',
|
|
id: 4,
|
|
contents: []
|
|
},
|
|
];
|
|
|
|
|
|
const props = {
|
|
contentBlock: {
|
|
id: 'asbd',
|
|
type: 'content',
|
|
contents
|
|
},
|
|
parent: null
|
|
};
|
|
const wrapper = shallowMount(ContentBlock, {
|
|
propsData: props,
|
|
store,
|
|
localVue
|
|
});
|
|
|
|
/*
|
|
expected output
|
|
[ { type: 'text_block' },
|
|
{ type: 'content_list',
|
|
contents: [ [Object] ],
|
|
id: 1,
|
|
startingIndex: 0 },
|
|
{ type: 'text_block' },
|
|
{ type: 'content_list',
|
|
contents: [ [Object], [Object] ],
|
|
id: 2,
|
|
startingIndex: 1 },
|
|
{ type: 'text_block' },
|
|
{ type: 'content_list',
|
|
contents: [ [Object] ],
|
|
id: 4,
|
|
startingIndex: 3 } ]
|
|
*/
|
|
|
|
const updatedContents = wrapper.vm.contentBlocksWithContentLists.contents;
|
|
|
|
// start at 0
|
|
expect(updatedContents[1].startingIndex).toEqual(0);
|
|
// 2nd content list
|
|
expect(updatedContents[3].startingIndex).toEqual(1);
|
|
// 3rd content list
|
|
expect(updatedContents[5].startingIndex).toEqual(3);
|
|
});
|
|
|
|
it('should remove single content items', () => {
|
|
|
|
const contents = [
|
|
{
|
|
type: 'text_block'
|
|
},
|
|
{
|
|
type: 'content_list',
|
|
id: 1,
|
|
contents: [
|
|
{
|
|
type: 'content_list_item',
|
|
value: [
|
|
{
|
|
type: 'text_block'
|
|
}
|
|
]
|
|
}]
|
|
},
|
|
{
|
|
type: 'text_block'
|
|
}
|
|
];
|
|
|
|
const props = {
|
|
contentBlock: {
|
|
id: 'asbd',
|
|
type: 'content',
|
|
contents: []
|
|
},
|
|
parent: null
|
|
};
|
|
const wrapper = shallowMount(ContentBlock, {
|
|
propsData: props,
|
|
store,
|
|
localVue
|
|
});
|
|
|
|
const contents2 = wrapper.vm.removeSingleContentListItem(contents, 1);
|
|
|
|
const expectList = [
|
|
{ type: 'text_block' },
|
|
{ type: 'text_block' },
|
|
{ type: 'text_block' }
|
|
];
|
|
// start at 0
|
|
expect(contents2).toEqual(expectList);
|
|
});
|
|
|
|
it('should not remove multiple content items', () => {
|
|
|
|
const contents = [
|
|
{
|
|
type: 'text_block'
|
|
},
|
|
{
|
|
type: 'content_list',
|
|
id: 1,
|
|
contents: [
|
|
{
|
|
type: 'content_list_item',
|
|
value: [
|
|
{
|
|
type: 'text_block'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
type: 'content_list_item',
|
|
value: [
|
|
{
|
|
type: 'text_block'
|
|
}
|
|
]
|
|
}]
|
|
},
|
|
{
|
|
type: 'text_block'
|
|
}
|
|
];
|
|
|
|
const props = {
|
|
contentBlock: {
|
|
id: 'asbd',
|
|
type: 'content',
|
|
contents: []
|
|
},
|
|
parent: null
|
|
};
|
|
const wrapper = shallowMount(ContentBlock, {
|
|
propsData: props,
|
|
store,
|
|
localVue
|
|
});
|
|
|
|
const contents3 = wrapper.vm.removeSingleContentListItem(contents, 1);
|
|
expect(contents3).toEqual(contents);
|
|
});
|
|
|
|
})
|