Skip to content

Commit

Permalink
Tests cleaned up (#723)
Browse files Browse the repository at this point in the history
* make scaffold test to work in strict mode by default

* feat: move boiler code uot for typeTypeResolvers specs

* eslint fixes

* feat: move boiler code out for mutation specs

* feat: move boiler code out for query specs

Co-authored-by: Jan Michael VIncent Trinidad <janmvtrinidad@gmail.com>
  • Loading branch information
lgandecki and jmvtrinidad authored Jan 21, 2021
1 parent 2fdfdad commit f023cdf
Show file tree
Hide file tree
Showing 12 changed files with 363 additions and 77 deletions.
7 changes: 0 additions & 7 deletions .editorconfig

This file was deleted.

7 changes: 6 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
{
"extends": ["airbnb-base"],
"plugins": [
'jest',
'prettier'
],
"extends": ["airbnb-base", 'prettier'],
"rules": {
"prettier/prettier": "error",
"no-console": "off",
"global-require": "off",
"no-plusplus": "off"
Expand Down
6 changes: 6 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
trailingComma: "all",
singleQuote: true,
printWidth: 120,
tabWidth: 2
};
185 changes: 148 additions & 37 deletions generateModule.js

Large diffs are not rendered by default.

168 changes: 165 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,16 @@
"@typescript-eslint/parser": "^2.29.0",
"eslint": "^5.5.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-config-prettier": "^7.2.0",
"eslint-import-resolver-typescript": "^2.3.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jest": "^24.1.3",
"eslint-plugin-prettier": "^3.3.1",
"jest": "^26.0.1",
"prettier": "^2.0.5",
"prettier": "^2.2.1",
"semantic-release": "^17.1.1",
"testdouble": "^3.15.0",
"testdouble-jest": "^2.0.0",
"semantic-release": "^17.1.1"
"testdouble-jest": "^2.0.0"
},
"jest": {
"testPathIgnorePatterns": [
Expand Down
8 changes: 2 additions & 6 deletions templates/mutation.spec.handlebars
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
import td from "testdouble";
import { GqlContext, {{#if hasArguments}}Mutation{{toUpperCase mutationName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{mutationName}}Mutation } from "./{{mutationName}}Mutation";

const test{{mutationName}} = ({{#if hasArguments}}variables: Mutation{{toUpperCase mutationName}}Args, {{/if}}context: GqlContext) => {{mutationName}}Mutation({}, {{#if hasArguments}}variables{{else}} {} {{/if}}, context, null)
import { GqlContext, {{#if hasArguments}}Mutation{{toUpperCase mutationName}}Args,{{/if}} test{{toUpperCase mutationName}} } from "{{generatedPrefix}}/graphql/helpers/{{mutationName}}MutationSpecWrapper"


test("{{mutationName}}", async () => {

const context = td.object<GqlContext>();

// td.when(context.{{moduleName}}Repository.findOne()).thenResolve()

{{#if hasArguments}}
const variables: Mutation{{toUpperCase mutationName}}Args = {}
{{/if}}

const result = await test{{mutationName}}({{#if hasArguments}}variables,{{/if}} context);
const result = await test{{toUpperCase mutationName}}({{#if hasArguments}}variables,{{/if}} context);

});
7 changes: 7 additions & 0 deletions templates/mutationSpecWrapper.handlebars
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { GraphQLResolveInfo } from 'graphql'
import { GqlContext, {{#if hasArguments}}Mutation{{toUpperCase mutationName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{mutationName}}Mutation } from "{{appPrefix}}/{{graphqlFileRootPath}}mutations/{{mutationName}}Mutation";

export const test{{toUpperCase mutationName}} = ({{#if hasArguments}}variables: Mutation{{toUpperCase mutationName}}Args, {{/if}}context: GqlContext) => {{mutationName}}Mutation?.({}, {{#if hasArguments}}variables{{else}} {} {{/if}}, context, {} as GraphQLResolveInfo)

export type {GqlContext, {{#if hasArguments}}Mutation{{toUpperCase mutationName}}Args{{/if}} }
9 changes: 2 additions & 7 deletions templates/query.spec.handlebars
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
import td from "testdouble";
import { GqlContext, {{#if hasArguments}}Query{{toUpperCase queryName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{queryName}}Query } from "./{{queryName}}Query";


const test{{queryName}} = ({{#if hasArguments}}variables: Query{{toUpperCase queryName}}Args,{{/if}} context: GqlContext) => {{queryName}}Query({}, {{#if hasArguments}}variables{{else}} {} {{/if}}, context, null)

import { GqlContext, {{#if hasArguments}}Query{{toUpperCase queryName}}Args,{{/if}} test{{toUpperCase queryName}} } from "{{generatedPrefix}}/graphql/helpers/{{queryName}}QuerySpecWrapper"

test("{{queryName}}", async () => {

Expand All @@ -16,6 +11,6 @@ test("{{queryName}}", async () => {
const variables: Query{{toUpperCase queryName}}Args = {}
{{/if}}

const result = await test{{queryName}}({{#if hasArguments}}variables,{{/if}} context);
const result = await test{{toUpperCase queryName}}({{#if hasArguments}}variables,{{/if}} context);

});
9 changes: 9 additions & 0 deletions templates/querySpecWrapper.handlebars
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { GraphQLResolveInfo } from 'graphql'
import { GqlContext, {{#if hasArguments}}Query{{toUpperCase queryName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{queryName}}Query } from "{{appPrefix}}/{{graphqlFileRootPath}}queries/{{queryName}}Query";


export const test{{toUpperCase queryName}} = ({{#if hasArguments}}variables: Query{{toUpperCase queryName}}Args,{{/if}} context: GqlContext) => {{queryName}}Query?.({}, {{#if hasArguments}}variables{{else}} {} {{/if}}, context, {} as GraphQLResolveInfo)


export type {GqlContext, {{#if hasArguments}}Query{{toUpperCase queryName}}Args{{/if}} }
16 changes: 3 additions & 13 deletions templates/typeTypeResolvers.spec.handlebars
Original file line number Diff line number Diff line change
@@ -1,22 +1,12 @@
import td from "testdouble";

import { GqlContext, ResolversParentTypes, {{#if hasArguments}}{{typeName}}{{capitalizedFieldName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{typeName}}{{capitalizedFieldName}} } from "./{{typeName}}{{capitalizedFieldName}}";

{{#if resolveReferenceType}}type ParentType = Parameters<typeof {{typeName}}{{capitalizedFieldName}}>[0];{{/if}}

const test{{typeName}}{{capitalizedFieldName}} = (parent: {{#if resolveReferenceType}}ParentType{{else}}ResolversParentTypes["{{typeName}}"]{{/if}}, {{#if hasArguments}}variables: {{typeName}}{{capitalizedFieldName}}Args,{{/if}} context: GqlContext) => {{typeName}}{{capitalizedFieldName}}(parent, {{#unless resolveReferenceType}}{{#if hasArguments}}variables{{else}} {} {{/if}},{{/unless}} context, null)

import { GqlContext, ResolversParentTypes, test{{typeName}}{{capitalizedFieldName}} } from "{{generatedPrefix}}/graphql/helpers/{{typeName}}{{capitalizedFieldName}}SpecWrapper"

test("{{typeName}}{{capitalizedFieldName}}", async () => {

const context = td.object<GqlContext>();

// td.when(context.{{moduleName}}Repository.findOne()).thenResolve()

const parent{{#if resolveReferenceType}} = {} as ParentType {{else}}: ResolversParentTypes["{{typeName}}"] = {}{{/if}}
const parent{{#if resolveReferenceType}} = {} as ParentType {{else}} = {} as ResolversParentTypes["{{typeName}}"]{{/if}}
{{#if hasArguments}}
const variables: {{typeName}}{{capitalizedFieldName}}Args = {}
const variables = {} as {{typeName}}{{capitalizedFieldName}}Args
{{/if}}

const result = await test{{typeName}}{{capitalizedFieldName}}(parent, {{#if hasArguments}}variables,{{/if}} context);
Expand Down
9 changes: 9 additions & 0 deletions templates/typeTypeResolversSpecWrapper.handlebars
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { GraphQLResolveInfo } from 'graphql'
import type { GqlContext, ResolversParentTypes, {{#if hasArguments}}{{typeName}}{{capitalizedFieldName}}Args{{/if}} } from "{{generatedPrefix}}/graphql/types";
import { {{typeName}}{{capitalizedFieldName}} } from "{{appPrefix}}/{{graphqlFileRootPath}}types/{{typeName}}{{capitalizedFieldName}}";

{{#if resolveReferenceType}}type ParentType = Parameters<typeof {{typeName}}{{capitalizedFieldName}}>[0];{{/if}}

export const test{{typeName}}{{capitalizedFieldName}} = (parent: {{#if resolveReferenceType}}ParentType{{else}}ResolversParentTypes["{{typeName}}"]{{/if}}, {{#if hasArguments}}variables: {{typeName}}{{capitalizedFieldName}}Args,{{/if}} context: GqlContext) => {{typeName}}{{capitalizedFieldName}}?.({...parent, __typename: '{{typeName}}'}, {{#unless resolveReferenceType}}{{#if hasArguments}}variables{{else}} {} {{/if}},{{/unless}} context, {} as GraphQLResolveInfo)

export type {GqlContext, ResolversParentTypes}

0 comments on commit f023cdf

Please sign in to comment.