Skip to content

Commit

Permalink
Create tests for naming schemes
Browse files Browse the repository at this point in the history
  • Loading branch information
comigor committed Feb 29, 2020
1 parent d75ed25 commit 548a722
Show file tree
Hide file tree
Showing 5 changed files with 144 additions and 253 deletions.
7 changes: 4 additions & 3 deletions test/helpers.dart
Expand Up @@ -59,7 +59,7 @@ Future testGenerator({
Future testNaming({
@required String query,
@required String schema,
@required LibraryDefinition libraryDefinition,
@required List<String> expectedNames,
Map<String, dynamic> builderOptionsMap = const {},
}) async {
assert((schema) != null);
Expand All @@ -77,8 +77,9 @@ Future testNaming({
}));

anotherBuilder.onBuild = expectAsync1((definition) {
if (IS_DEBUG) print(definition);
expect(definition, libraryDefinition);
final names = definition.queries.first.classes.map((e) => e.name).toSet();
if (IS_DEBUG) print(names);
expect(names, equals(expectedNames));
}, count: 1);

return await testBuilder(
Expand Down
62 changes: 62 additions & 0 deletions test/query_generator/naming/common.dart
@@ -0,0 +1,62 @@
const schema = r'''
enum Enum {
e1
e2
}
input Input {
i: String
e: Enum
s: SubInput
}
input SubInput {
s: String
}
type Thing {
id: String
e: Enum
nextThing: Thing
nextThingOnFragment: Thing
}
type Query {
thing(input: Input!): Thing
}
''';

const query = r'''
query big_query($input: Input!) {
thing(input: $input) {
e
...parts
nextThing {
id
}
aliasOnNextThing: nextThing {
id
}
}
aliasOnThing: thing(input: $input) {
e
...parts
nextThing {
id
}
aliasOnNextThing: nextThing {
id
}
}
}
fragment parts on Thing {
id
nextThingOnFragment {
id
}
aliasOnNextThingOnFragment: nextThingOnFragment {
id
}
}
''';
145 changes: 20 additions & 125 deletions test/query_generator/naming/pathed_with_class_names_test.dart
@@ -1,7 +1,7 @@
import 'package:artemis/generator/data.dart';
import 'package:test/test.dart';

import '../../helpers.dart';
import 'common.dart';

void main() {
group('On naming', () {
Expand All @@ -10,132 +10,27 @@ void main() {
() async => testNaming(
query: query,
schema: schema,
libraryDefinition: libraryDefinition,
expectedNames: expectedNames,
builderOptionsMap: {
'naming_scheme': 'pathedWithClassNames',
},
),
);
});
}

const schema = r'''
type Pokemon {
number: String
evolutions: [Pokemon]
}
type Query {
pokemons(first: Int!): [Pokemon]
pokemon(id: String, name: String): Pokemon
}
''';

const query = r'''
query big_query($quantity: Int!) {
charmander: pokemon(name: "Charmander") {
number
}
pokemons(first: $quantity) {
number
evolutions {
...pokemonParts
}
next: evolutions {
...pokemonParts
}
}
}
fragment pokemonParts on Pokemon {
number
}
''';

final LibraryDefinition libraryDefinition =
LibraryDefinition(basename: r'query', queries: [
QueryDefinition(
queryName: r'big_query',
queryType: r'BigQuery$Query',
classes: [
ClassDefinition(
name: r'BigQuery$Query$Charmander',
properties: [
ClassProperty(
type: r'String',
name: r'number',
isOverride: false,
isNonNull: false,
isResolveType: false)
],
factoryPossibilities: {},
typeNameField: r'__typename',
isInput: false),
ClassDefinition(
name: r'BigQuery$Query$Pokemon$Pokemon',
mixins: [r'BigQuery$PokemonPartsMixin'],
factoryPossibilities: {},
typeNameField: r'__typename',
isInput: false),
ClassDefinition(
name: r'BigQuery$Query$Pokemon$Next',
mixins: [r'BigQuery$PokemonPartsMixin'],
factoryPossibilities: {},
typeNameField: r'__typename',
isInput: false),
ClassDefinition(
name: r'BigQuery$Query$Pokemon',
properties: [
ClassProperty(
type: r'String',
name: r'number',
isOverride: false,
isNonNull: false,
isResolveType: false),
ClassProperty(
type: r'List<BigQuery$Query$Pokemon$Pokemon>',
name: r'evolutions',
isOverride: false,
isNonNull: false,
isResolveType: false),
ClassProperty(
type: r'List<BigQuery$Query$Pokemon$Next>',
name: r'next',
isOverride: false,
isNonNull: false,
isResolveType: false)
],
factoryPossibilities: {},
typeNameField: r'__typename',
isInput: false),
ClassDefinition(
name: r'BigQuery$Query',
properties: [
ClassProperty(
type: r'BigQuery$Query$Charmander',
name: r'charmander',
isOverride: false,
isNonNull: false,
isResolveType: false),
ClassProperty(
type: r'List<BigQuery$Query$Pokemon>',
name: r'pokemons',
isOverride: false,
isNonNull: false,
isResolveType: false)
],
factoryPossibilities: {},
typeNameField: r'__typename',
isInput: false),
FragmentClassDefinition(
name: r'BigQuery$PokemonPartsMixin',
properties: [
ClassProperty(
type: r'String',
name: r'number',
isOverride: false,
isNonNull: false,
isResolveType: false)
])
],
inputs: [QueryInput(type: r'int', name: r'quantity', isNonNull: true)],
generateHelpers: false,
suffix: r'Query')
]);
const expectedNames = [
r'Enum',
r'Input',
r'SubInput',
r'BigQuery$Query',
r'BigQuery$Query$Thing',
r'BigQuery$Query$Thing$Thing',
r'BigQuery$Query$Thing$AliasOnNextThing',
r'BigQuery$Query$AliasOnThing',
r'BigQuery$Query$AliasOnThing$Thing',
r'BigQuery$Query$AliasOnThing$AliasOnNextThing',
r'BigQuery$PartsMixin',
r'BigQuery$PartsMixin$Thing',
r'BigQuery$PartsMixin$AliasOnNextThingOnFragment',
];

0 comments on commit 548a722

Please sign in to comment.