Skip to content

Commit 6df69d2

Browse files
committed
Add regression test for rules with factory function
1 parent eda559c commit 6df69d2

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

tests/unit/query-builder.spec.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@ import QueryBuilder from '@/QueryBuilder.vue';
44
import App from '../components/App.vue';
55
import QueryBuilderGroup from '@/QueryBuilderGroup.vue';
66
import QueryBuilderRule from '@/QueryBuilderRule.vue';
7+
import { QueryBuilderConfig } from '@/types';
8+
9+
interface QueryBuilderTemplate {
10+
value: any,
11+
config: QueryBuilderConfig,
12+
}
713

814
describe('Test basic functionality of QueryBuilder.vue', () => {
9-
const getTemplate = () => ({
15+
const getTemplate = (): QueryBuilderTemplate => ({
1016
value: null,
1117
config: {
1218
operators: [
@@ -114,6 +120,41 @@ describe('Test basic functionality of QueryBuilder.vue', () => {
114120
});
115121
});
116122

123+
it('makes use of an initial value\'s factory function', () => {
124+
const initialValue = jest.fn(() => 'Hello World');
125+
126+
const data = getTemplate();
127+
data.config.rules = [
128+
{
129+
identifier: 'txt',
130+
name: 'Text Selection',
131+
component: Component,
132+
initialValue,
133+
},
134+
];
135+
136+
const app = mount(App, {
137+
data() {
138+
return data;
139+
},
140+
});
141+
const wrapper = app.find(QueryBuilder);
142+
143+
// Assert rules are available
144+
const rules = wrapper.find('.query-builder-group__group-control select').findAll('option');
145+
const addRuleBtn = wrapper.find('.query-builder-group__rule-adding-button');
146+
147+
// Assert update has propagated with default value
148+
rules.at(1).setSelected();
149+
addRuleBtn.trigger('click');
150+
expect(wrapper.emittedByOrder()).toHaveLength(1);
151+
expect(wrapper.emittedByOrder()[0]).toStrictEqual({
152+
name: 'input',
153+
args: [{ operatorIdentifier: 'and', children: [{ identifier: 'txt', value: 'Hello World' }] }],
154+
});
155+
expect(initialValue).toHaveBeenCalled();
156+
});
157+
117158
it('deletes a rule', () => {
118159
const data = () => ({
119160
query: {

0 commit comments

Comments
 (0)