devextreme-vue
Version:
DevExtreme Vue UI and Visualization Components
116 lines (114 loc) • 4.45 kB
JavaScript
/*!
* devextreme-vue
* Version: 25.1.6
* Build date: Mon Oct 13 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-vue
*/
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const test_utils_1 = require("@vue/test-utils");
const vue_1 = require("vue");
const text_box_1 = __importDefault(require("../../text-box"));
jest.setTimeout(1000);
beforeEach(() => {
jest.clearAllMocks();
});
describe('two-way binding', () => {
it('v-model works correctly', async () => {
expect.assertions(1);
const vm = (0, vue_1.defineComponent)({
template: `<dx-text-box id="component1" v-model="testValue"></dx-text-box>
<dx-text-box id="component2" v-model="testValue"></dx-text-box>
`,
components: {
DxTextBox: text_box_1.default,
},
data() {
return {
testValue: 'value',
};
},
});
const wrapper = (0, test_utils_1.mount)(vm);
const component = wrapper.getComponent('#component2').vm;
component.$_config.updateValue = jest.fn();
wrapper.getComponent('#component1').vm.$emit('update:modelValue', 'newValue');
await (0, vue_1.nextTick)(() => {
expect(component.$_config.updateValue).toBeCalled();
});
});
it('v-model with argument works correctly', async () => {
expect.assertions(1);
const vm = (0, vue_1.defineComponent)({
template: `<dx-text-box id="component1" v-model:value="testValue"></dx-text-box>
<dx-text-box id="component2" v-model:value="testValue"></dx-text-box>
`,
components: {
DxTextBox: text_box_1.default,
},
props: {
testValue: String,
},
});
const wrapper = (0, test_utils_1.mount)(vm);
const component = wrapper.getComponent('#component2').vm;
component.$_config.updateValue = jest.fn();
await wrapper.setProps({ testValue: 'test' });
await (0, vue_1.nextTick)(() => {
expect(component.$_config.updateValue).toBeCalled();
});
});
it('dxClass should be set when class attr ', async () => {
expect.assertions(1);
const vm = (0, vue_1.defineComponent)({
template: `<dx-text-box id="component" :class="customClass"></dx-text-box>
`,
components: {
DxTextBox: text_box_1.default,
},
props: {
customClass: {
type: String,
default: 'custom1',
},
},
});
const wrapper = (0, test_utils_1.mount)(vm);
const component = wrapper.getComponent('#component');
await wrapper.setProps({ customClass: 'custom2' });
await (0, vue_1.nextTick)(() => {
expect(component.element.classList.toString()).toBe('custom2 dx-show-invalid-badge dx-textbox dx-texteditor dx-editor-outlined dx-texteditor-empty dx-widget');
});
});
it('dxClass should be set when class attr is undefined', async () => {
expect.assertions(1);
const vm = (0, vue_1.defineComponent)({
template: `<dx-text-box id="component" :class="{custom: customClass}"></dx-text-box>
`,
components: {
DxTextBox: text_box_1.default,
},
props: {
customClass: {
type: String,
default: true,
},
},
});
const wrapper = (0, test_utils_1.mount)(vm);
const component = wrapper.getComponent('#component');
await wrapper.setProps({ customClass: false });
await (0, vue_1.nextTick)(() => {
expect(component.element.classList.toString()).toBe('dx-show-invalid-badge dx-textbox dx-texteditor dx-editor-outlined dx-texteditor-empty dx-widget');
});
});
});