/**
* @prettier
*/
import React from "react"
import { shallow } from "enzyme"
import { fromJS, List } from "immutable"
import Response from "core/components/response"
import ModelExample from "core/plugins/json-schema-5/components/model-example"
import {
inferSchema,
memoizedSampleFromSchema,
memoizedCreateXMLExample,
} from "core/plugins/json-schema-5-samples/fn/index"
import makeGetSampleSchema from "core/plugins/json-schema-5-samples/fn/get-sample-schema"
import makeGetJsonSampleSchema from "core/plugins/json-schema-5-samples/fn/get-json-sample-schema"
import makeGetYamlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema"
import makeGetXmlSampleSchema from "core/plugins/json-schema-5-samples/fn/get-xml-sample-schema"
describe("", function () {
const dummyComponent = () => null
const components = {
headers: dummyComponent,
highlightCode: dummyComponent,
modelExample: ModelExample,
Markdown: dummyComponent,
operationLink: dummyComponent,
contentType: dummyComponent,
}
const getSystem = () => ({
getComponent: (c) => components[c],
getConfigs: () => {
return {}
},
specSelectors: {
isOAS3() {
return false
},
},
fn: {
inferSchema,
memoizedSampleFromSchema,
memoizedCreateXMLExample,
getJsonSampleSchema: makeGetJsonSampleSchema(getSystem),
getYamlSampleSchema: makeGetYamlSampleSchema(getSystem),
getXmlSampleSchema: makeGetXmlSampleSchema(getSystem),
getSampleSchema: makeGetSampleSchema(getSystem),
},
})
const props = {
...getSystem(),
contentType: "application/json",
className: "for-test",
specPath: List(),
response: fromJS({
schema: {
type: "object",
properties: {
// Note reverse order: c, b, a
c: {
type: "integer",
},
b: {
type: "boolean",
},
a: {
type: "string",
},
},
},
}),
code: "200",
}
it("renders the model-example schema properties in order", function () {
const wrapper = shallow()
const renderedModelExample = wrapper.find(ModelExample)
expect(renderedModelExample.length).toEqual(1)
// Assert the schema's properties have maintained their order
const modelExampleSchemaProperties = renderedModelExample
.props()
.schema.toJS().properties
expect(Object.keys(modelExampleSchemaProperties)).toEqual(["c", "b", "a"])
})
})