Skip to content

Commit 31f634d

Browse files
committed
Added unit test
1 parent 762c926 commit 31f634d

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

__tests__/JSchema.test.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,62 @@ describe('JSchema', () => {
220220
expect(inputs.length).eq(3);
221221
});
222222

223+
it('Object with additional array propery', async () => {
224+
const result = renderSchema({
225+
title: 'Object with additionalProperties',
226+
type: 'object',
227+
properties: {
228+
testProp: {
229+
title: 'testProp',
230+
type: 'object',
231+
additionalProperties: {
232+
type: 'array',
233+
items: {
234+
$ref: '#/definitions/Ref'
235+
}
236+
}
237+
}
238+
},
239+
definitions: {
240+
Ref: {
241+
title: 'argument',
242+
type: 'object',
243+
properties: {
244+
required_string: {
245+
title: 'Required String',
246+
type: 'string'
247+
},
248+
optional_number: {
249+
title: 'Optional Number',
250+
type: 'integer'
251+
}
252+
},
253+
required: ['required_string']
254+
}
255+
}
256+
});
257+
const input = result.getByRole('textbox');
258+
await fireEvent.input(input, { target: { value: 'my-key' } });
259+
const addPropertyBtn = result.getByRole('button', { name: 'Add property' });
260+
await fireEvent.click(addPropertyBtn);
261+
expect(result.queryByText('my-key')).not.null;
262+
const accordionBtn1 = result.getByRole('button', { name: 'my-key' });
263+
await fireEvent.click(accordionBtn1);
264+
const addArgumentBtn = result.getByRole('button', { name: 'Add argument to list' });
265+
await fireEvent.click(addArgumentBtn);
266+
const accordionBtn2 = result.getByRole('button', { name: 'argument' });
267+
await fireEvent.click(accordionBtn2);
268+
expect(result.queryByText('Required String')).not.null;
269+
checkBold(result.getByText('Required String'), true);
270+
checkBold(result.getByText('Optional Number'), false);
271+
const removeArgumentBtn = result.getByRole('button', { name: 'Remove' });
272+
await fireEvent.click(removeArgumentBtn);
273+
expect(result.queryByText('Required String')).null;
274+
const removePropertyBtn = result.getByRole('button', { name: 'Remove Property Block' });
275+
await fireEvent.click(removePropertyBtn);
276+
expect(result.queryByText('my-key')).null;
277+
});
278+
223279
it('Required nested objects', async () => {
224280
const result = renderSchema({
225281
title: 'Args',

0 commit comments

Comments
 (0)