Passed
Push — trunk ( 1e6832...69518a )
by Christian
12:33 queued 13s
created

sw-cms-block-config.spec.ts ➔ createWrapper   A

Complexity

Conditions 1

Size

Total Lines 38
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 30
dl 0
loc 38
rs 9.16
c 0
b 0
f 0
1
/**
2
 * @package content
3
 */
4
import { createLocalVue, shallowMount } from '@vue/test-utils';
5
import 'src/module/sw-cms/mixin/sw-cms-state.mixin';
6
import swCmsBlockConfig from './index';
7
import 'src/app/component/form/sw-colorpicker';
8
import 'src/app/component/form/field-base/sw-contextual-field';
9
import 'src/app/component/form/field-base/sw-block-field';
10
import 'src/app/component/form/field-base/sw-base-field';
11
import 'src/app/component/form/sw-text-field';
12
13
const { Component, State } = Shopware;
14
15
Component.register('sw-cms-block-config', swCmsBlockConfig);
16
17
const block = {
18
    name: 'Block name',
19
    backgroundColor: '',
20
    backgroundMedia: {},
21
    backgroundMediaId: 'mediaId',
22
    backgroundMediaMode: ''
23
};
24
25
jest.useFakeTimers();
26
27
async function createWrapper() {
28
    const localVue = createLocalVue();
29
    return shallowMount(await Component.build('sw-cms-block-config'), {
30
        localVue,
31
        propsData: {
32
            block
33
        },
34
        provide: {
35
            validationService: {},
36
            cmsService: {
37
                getCmsBlockRegistry: () => {
38
                    return Promise.resolve();
39
                },
40
            },
41
            repositoryFactory: {
42
                create: () => ({
43
                    create: () => {
44
                        return Promise.resolve();
45
                    },
46
                })
47
            }
48
        },
49
        stubs: {
50
            'sw-base-field': await Component.build('sw-base-field'),
51
            'sw-colorpicker': await Component.build('sw-colorpicker'),
52
            'sw-contextual-field': await Component.build('sw-contextual-field'),
53
            'sw-block-field': await Component.build('sw-block-field'),
54
            'sw-field-error': true,
55
            'sw-icon': true,
56
            'sw-text-field': {
57
                template: '<input class="sw-text-field" :value="value" @input="$emit(\'input\', $event.target.value)" />',
58
                props: ['value']
59
            },
60
            'sw-media-compact-upload-v2': true,
61
            'sw-upload-listener': true,
62
            'sw-select-field': true,
63
            'sw-help-text': true,
64
        }
65
    });
66
}
67
68
describe('module/sw-cms/component/sw-cms-block-config', () => {
69
    beforeEach(() => {
70
        if (State.get('cmsPageState')) {
71
            State.unregisterModule('cmsPageState');
72
        }
73
74
        State.registerModule('cmsPageState', {
75
            namespaced: true,
76
        });
77
    });
78
79
    it('should be a Vue.js component', async () => {
80
        const wrapper = await createWrapper();
81
        expect(wrapper.vm).toBeTruthy();
82
    });
83
84
    it('should able to config block name', async () => {
85
        const wrapper = await createWrapper();
86
        const blockNameField = await wrapper.find('.sw-text-field');
87
88
        expect(wrapper.vm.block.name).toBe(block.name);
89
        await blockNameField.setValue('test');
90
        await blockNameField.trigger('input');
91
92
        jest.runAllTimers();
93
        expect(wrapper.vm.block.name).toBe('test');
94
    });
95
96
    it('should able to remove all media', async () => {
97
        const wrapper = await createWrapper();
98
        expect(wrapper.vm.block.backgroundMediaId).toBe(block.backgroundMediaId);
99
        await wrapper.vm.removeMedia();
100
        expect(wrapper.vm.block.backgroundMediaId).toBe(null);
101
    });
102
});
103