From 6d67809beed9f8ccc6f04eb4f92a2aad23630676 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Sat, 4 Apr 2020 23:26:50 +0100 Subject: [PATCH] Totally fucking smashed it --- package.json | 1 + src/convert.ts | 17 +++++++++++------ test.sh | 5 ++++- yarn.lock | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index bb37cc5..96503c2 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "babel-jest": "^25.2.6", "graphql": "^14.6.0", "jest": "^25.2.4", + "ts-node": "^8.8.1", "typescript": "^3.8.3" }, "peerDependencies": { diff --git a/src/convert.ts b/src/convert.ts index 2acd708..1a1e8b7 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -30,7 +30,8 @@ type FieldReturn = { const withNamedFieldType = (namedTypeNode: NamedTypeNode): FieldReturn => { const name = namedTypeNode.name.value as TypeName; - return { output: getArbitraryName(name), deps: [name] }; + const output = `${getArbitraryName(name)}()` as Generated; + return { output, deps: [name] }; }; const withFieldType = (typeNode: TypeNode): FieldReturn => { @@ -86,7 +87,7 @@ const withAstNode = (name: TypeName, node: TypeDefinitionNode): Output => { return { kind: "Scalar", name, - output: `fc.anything()` as Generated, + output: `fc.string()` as Generated, deps: [] }; case "EnumTypeDefinition": @@ -101,7 +102,7 @@ const withAstNode = (name: TypeName, node: TypeDefinitionNode): Output => { return { kind: "InputObject", name, - output: "fc.anything()" as Generated, + output: "fc.string()" as Generated, deps: [] }; case "InterfaceTypeDefinition": @@ -153,7 +154,7 @@ const withPrimitive = (node: GraphQLNamedType): Generated | null => { }; const getArbitraryName = (typeName: TypeName): Generated => - `arbitrary${typeName}` as Generated; + `getArbitrary${typeName}` as Generated; const getNamedTypes = (schema: GraphQLSchema): GraphQLNamedType[] => { const typesMap = schema.getTypeMap(); @@ -192,14 +193,18 @@ const removeKind = (k: Kind) => (a: Output) => a.kind !== k; const render = (val: Output) => { const { name, output } = val; - return `export const ${getArbitraryName(name)} = ${output}`; + return `export const ${getArbitraryName( + name + )} = (): fc.Arbitrary => ${output}`; }; export const getSchemaDeclarations = (schema: GraphQLSchema): string => - sortASTs(getNamedTypes(schema).map(withNamedType).filter(notNull)) + sortASTs2(getNamedTypes(schema).map(withNamedType).filter(notNull)) .map(render) .join("\n\n"); +const sortASTs2 = (a: A): A => a; + const filterSplit = ( as: A[], f: (a: A) => boolean diff --git a/test.sh b/test.sh index aec9573..407f51d 100755 --- a/test.sh +++ b/test.sh @@ -4,7 +4,7 @@ set -euxo pipefail # remove old output so it doesn't get typechecked -rm ./output/output.ts || true +echo "export const a = 1" | tee ./output/output.ts # run tests yarn test @@ -17,3 +17,6 @@ yarn graphql-codegen --config ./test/codegen.yml # typecheck result yarn tsc --noEmit ./output/output.ts + +# output some shit +yarn ts-node ./output/test-output.ts diff --git a/yarn.lock b/yarn.lock index 4bbed5d..1030c13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5935,7 +5935,7 @@ ts-log@2.1.4: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.4.tgz#063c5ad1cbab5d49d258d18015963489fb6fb59a" integrity sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ== -ts-node@^8: +ts-node@^8, ts-node@^8.8.1: version "8.8.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg==