4e69153e3e
git-subtree-dir: packages/graphql git-subtree-mainline:ac29392d7f
git-subtree-split:33e2f86ba7
67 lines
1.6 KiB
Dart
67 lines
1.6 KiB
Dart
import 'package:graphql_schema/graphql_schema.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
group('interface', () {
|
|
var a = objectType(
|
|
'A',
|
|
isInterface: true,
|
|
fields: [
|
|
field('text', graphQLString.nonNullable()),
|
|
],
|
|
);
|
|
|
|
var b = objectType(
|
|
'B',
|
|
isInterface: true,
|
|
interfaces: [a],
|
|
fields: [
|
|
field('text', graphQLString.nonNullable()),
|
|
],
|
|
);
|
|
|
|
var c = objectType(
|
|
'C',
|
|
isInterface: true,
|
|
interfaces: [b],
|
|
fields: [
|
|
field('text', graphQLString.nonNullable()),
|
|
],
|
|
);
|
|
|
|
test('child implements parent', () {
|
|
expect(b.isImplementationOf(a), true);
|
|
expect(c.isImplementationOf(b), true);
|
|
});
|
|
|
|
test('parent does not implement child', () {
|
|
expect(a.isImplementationOf(b), false);
|
|
});
|
|
|
|
test('child interfaces contains parent', () {
|
|
expect(b.interfaces, contains(a));
|
|
expect(c.interfaces, contains(b));
|
|
});
|
|
|
|
test('parent possibleTypes contains child', () {
|
|
expect(a.possibleTypes, contains(b));
|
|
expect(b.possibleTypes, contains(c));
|
|
});
|
|
|
|
test('grandchild implements grandparent', () {
|
|
expect(c.isImplementationOf(a), true);
|
|
});
|
|
|
|
test('grandparent does not implement grandchild', () {
|
|
expect(a.isImplementationOf(c), false);
|
|
});
|
|
|
|
test('grandchild interfaces contains grandparent', () {
|
|
expect(c.interfaces, contains(a));
|
|
});
|
|
|
|
test('grandparent possibleTypes contains grandchild', () {
|
|
expect(a.possibleTypes, contains(c));
|
|
});
|
|
});
|
|
}
|