2020-11-28 03:22:48 +08:00
|
|
|
import { generateSchema, interfaceType, objectType } from '../../src/core'
|
|
|
|
|
|
|
|
|
|
describe('interfaceType', () => {
|
|
|
|
|
it('deduplicates interfaces implementing interfaces', async () => {
|
|
|
|
|
const { schemaTypes } = await generateSchema.withArtifacts(
|
|
|
|
|
{
|
|
|
|
|
types: [
|
|
|
|
|
interfaceType({
|
|
|
|
|
name: 'Node',
|
|
|
|
|
resolveType() {
|
|
|
|
|
return null
|
|
|
|
|
},
|
|
|
|
|
definition(t) {
|
|
|
|
|
t.id('id')
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
interfaceType({
|
|
|
|
|
name: 'Node2',
|
|
|
|
|
resolveType() {
|
|
|
|
|
return null
|
|
|
|
|
},
|
|
|
|
|
definition(t) {
|
|
|
|
|
t.implements('Node')
|
|
|
|
|
t.id('id2')
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
objectType({
|
|
|
|
|
name: 'Foo',
|
|
|
|
|
isTypeOf() {
|
|
|
|
|
return true
|
|
|
|
|
},
|
|
|
|
|
definition(t) {
|
|
|
|
|
t.implements('Node2', 'Node')
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
],
|
|
|
|
|
outputs: false,
|
|
|
|
|
},
|
|
|
|
|
null
|
|
|
|
|
)
|
2022-02-18 01:47:40 +08:00
|
|
|
expect(schemaTypes.trim()).toMatchSnapshot()
|
2020-11-28 03:22:48 +08:00
|
|
|
})
|
|
|
|
|
})
|