/* eslint-disable import/no-internal-modules */
/* tslint:disable:no-implicit-dependencies */
import { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';
import * as React from 'react';
import { filterPropsDeep } from '../../utils/test-utils';
import { ObjectSchema, Schema } from '../';
import { OpenAPIParser, SchemaModel } from '../../services';
import { RedocNormalizedOptions } from '../../services/RedocNormalizedOptions';
import * as simpleDiscriminatorFixture from './fixtures/simple-discriminator.json';
const options = new RedocNormalizedOptions({});
describe('Components', () => {
describe('SchemaView', () => {
describe('discriminator', () => {
it('should correctly render SchemaView', () => {
const parser = new OpenAPIParser(simpleDiscriminatorFixture, undefined, options);
const schema = new SchemaModel(
parser,
{ $ref: '#/components/schemas/Pet' },
'#/components/schemas/Pet',
options,
);
const schemaViewElement = shallow().getElement();
expect(schemaViewElement).toMatchSnapshot();
expect(schemaViewElement.props.discriminator).toBeDefined();
expect(schemaViewElement.props.discriminator.parentSchema).toBeDefined();
expect(schemaViewElement.props.discriminator.fieldName).toEqual('type');
});
it('should correctly render discriminator dropdown', () => {
const parser = new OpenAPIParser(simpleDiscriminatorFixture, undefined, options);
const schema = new SchemaModel(
parser,
{ $ref: '#/components/schemas/Pet' },
'#/components/schemas/Pet',
options,
);
const schemaView = shallow(
,
);
expect(filterPropsDeep(toJson(schemaView), ['field.schema.options'])).toMatchSnapshot();
});
});
});
});