-
Notifications
You must be signed in to change notification settings - Fork 3
/
one-of.spec.ts
54 lines (43 loc) · 1.91 KB
/
one-of.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { createTestDocument } from './common'
import * as idx from '../indexed-type'
test('one of discriminator', async() => {
const result = await createTestDocument('one-of/one-of-discriminator.yml')
const models = idx.values(result.models)
const model1 = models[0]
const model4 = models[3]
expect(model1.name).toEqual('Cat')
expect(idx.size(model1.implements!)).toBe(1)
expect(model4.name).toEqual('MyResponseType')
expect(model4.discriminator!.name).toEqual('petType')
expect(model4.discriminator!.references.length).toEqual(3)
expect(model4.children).toBeUndefined()
expect(model4.isInterface).toBe(true)
})
test('one of no discriminator', async() => {
const result = await createTestDocument('one-of/one-of-no-discriminator.yml')
const models = idx.values(result.models)
const combinedModel = models[3]
expect(combinedModel.name).toEqual('MyResponseType')
expect(combinedModel.isInterface).toBeFalsy()
const combinedModelProperties = idx.values(combinedModel.properties!)
expect(combinedModelProperties![0].name).toEqual('name')
expect(combinedModelProperties![1].name).toEqual('bark')
expect(combinedModelProperties![2].name).toEqual('lovesRocks')
const model1 = models[0]
expect(model1.isInterface).toBe(true)
})
test('one of discriminator missing property', async() => {
await expect(createTestDocument('one-of/one-of-discriminator-missing-property.yml'))
.rejects.toThrow('Discriminator property "petType" for "MyResponseType" missing from "Cat"')
})
test('one of subclasses discriminator', async() => {
const result = await createTestDocument('one-of/one-of-subclasses-discriminator.yml')
const models = idx.values(result.models)
const model1 = models[0]
const model4 = models[3]
expect(model1.name).toEqual('Cat')
expect(model4.name).toEqual('Pet')
expect(idx.size(model4.children!)).toEqual(3)
expect(model4.discriminator!.references.length).toEqual(3)
expect(model4.isInterface).toBeFalsy()
})