83 lines
3.1 KiB
JavaScript
83 lines
3.1 KiB
JavaScript
import baseMixin from '@/mixins/base-mixin';
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import widgetFields from '@/constants/cms-widget-fields.js';
|
|
|
|
describe('base-mixin', () => {
|
|
it('should set and get cms content', () => {
|
|
const expected = 'test';
|
|
const wrapper = shallowMount(baseMixin, {
|
|
propsData: {
|
|
cmsContentByWidget: {}
|
|
}
|
|
});
|
|
const cmsContent = { testWidget: { fieldName: expected } };
|
|
|
|
wrapper.componentVM.setCmsContent(cmsContent);
|
|
const actual = wrapper.componentVM.getCmsContent('testWidget', 'fieldName');
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('should return formatted class name for cmswidget', () => {
|
|
const localThis = { cmsWidgetName: 'testWidget' };
|
|
expect(baseMixin.computed.cssClassNameForCmsWidget.call(localThis)).toBe('widget-name-testWidget');
|
|
});
|
|
|
|
it('getInputQuestionWidgetAnswersNullSafe returns an empty array when the input question widget has no answers', () => {
|
|
// Arrange
|
|
const widgetName = 'inputQuestionWidget';
|
|
const wrapper = shallowMount(baseMixin, {
|
|
propsData: {
|
|
cmsContentByWidget: {}
|
|
}
|
|
});
|
|
const cmsContent = {
|
|
[widgetName]: {
|
|
[widgetFields.INPUT_QUESTION_WIDGET.QUESTION_TEXT]: 'Choose an option',
|
|
[widgetFields.INPUT_QUESTION_WIDGET.ANSWERS]: []
|
|
}
|
|
};
|
|
wrapper.componentVM.setCmsContent(cmsContent);
|
|
|
|
// Act
|
|
const answers = wrapper.componentVM.getInputQuestionWidgetAnswersNullSafe(widgetName);
|
|
|
|
// Assert
|
|
expect(answers).not.toBeNull(); // Check that answers is not null
|
|
expect(Array.isArray(answers)).toBeTruthy(); // Check that answers is an array
|
|
expect(answers).toHaveLength(0); // Check that answers is empty
|
|
});
|
|
|
|
it('getInputQuestionWidgetAnswersNullSafe returns a non-empty array when the input question widget has answers', () => {
|
|
// Arrange
|
|
const widgetName = 'inputQuestionWidget';
|
|
const wrapper = shallowMount(baseMixin, {
|
|
propsData: {
|
|
cmsContentByWidget: {}
|
|
}
|
|
});
|
|
const cmsContent = {
|
|
[widgetName]: {
|
|
[widgetFields.INPUT_QUESTION_WIDGET.QUESTION_TEXT]: 'Choose an option',
|
|
[widgetFields.INPUT_QUESTION_WIDGET.ANSWERS]: [
|
|
{
|
|
Name: 'NameA',
|
|
Text: 'TextA'
|
|
},
|
|
{
|
|
Name: 'NameB',
|
|
Text: 'TextB'
|
|
}
|
|
]
|
|
}
|
|
};
|
|
wrapper.componentVM.setCmsContent(cmsContent);
|
|
|
|
// Act
|
|
const answers = wrapper.componentVM.getInputQuestionWidgetAnswersNullSafe(widgetName);
|
|
|
|
// Assert
|
|
expect(answers).not.toBeNull(); // Check that answers is not null
|
|
expect(Array.isArray(answers)).toBeTruthy(); // Check that answers is an array
|
|
expect(answers).not.toHaveLength(0); // Check that answers is not empty
|
|
});
|
|
});
|