implement a simplest schema test

master
Peter Babič 5 years ago
parent ffb09ba73b
commit b88925f065
Signed by: peter.babic
GPG Key ID: 4BB075BC1884BA40
  1. 4
      jest.config.js
  2. 4774
      package-lock.json
  3. 7
      package.json
  4. 2
      src/User.ts
  5. 22
      src/User/UserResolver.spec.ts
  6. 10
      src/User/UserResolver.ts
  7. 6
      src/app.ts
  8. 18
      src/callSchema.ts
  9. 7
      src/createSchema.ts

@ -0,0 +1,4 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};

4774
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -4,7 +4,8 @@
"description": "",
"main": "src/app.js",
"scripts": {
"dev": "ts-node-dev --respawn src/app.ts"
"dev": "ts-node-dev --respawn src/app.ts",
"test": "jest"
},
"keywords": [],
"author": "",
@ -17,6 +18,10 @@
},
"devDependencies": {
"@types/graphql": "^14.2.0",
"@types/jest": "^24.0.13",
"class-transformer": "^0.2.3",
"jest": "^24.8.0",
"ts-jest": "^24.0.2",
"ts-node-dev": "^1.0.0-pre.39",
"typescript": "^3.5.1"
}

@ -1,4 +1,4 @@
import { ObjectType, Field } from "type-graphql"
import { Field, ObjectType } from "type-graphql";
@ObjectType()
export class User {

@ -0,0 +1,22 @@
import { callSchema } from "../callSchema";
const usersQuery = `
query {
users {
id
}
}`
describe("user resolver", () => {
it("should return an empty array when no users are in sample", async () => {
const response = await callSchema({
source: usersQuery,
})
expect(response).toMatchObject({
data: {
users: [],
},
})
})
})

@ -1,13 +1,13 @@
import "reflect-metadata"
import { Resolver, Query } from "type-graphql"
import { User } from "../User"
import "reflect-metadata";
import { Query, Resolver } from "type-graphql";
import { User } from "../User";
@Resolver()
export class UserResolver {
private recipesCollection: User[] = []
private usersCollection: User[] = []
@Query(returns => [User])
async users() {
return await this.recipesCollection
return await this.usersCollection
}
}

@ -1,6 +1,6 @@
import { ApolloServer } from "apollo-server"
import { buildSchema } from "type-graphql"
import { UserResolver } from "./User/UserResolver"
import { ApolloServer } from "apollo-server";
import { buildSchema } from "type-graphql";
import { UserResolver } from "./User/UserResolver";
const PORT = process.env.PORT || 4000

@ -0,0 +1,18 @@
import { graphql, GraphQLSchema } from "graphql"
import { createSchema } from "./createSchema"
interface Options {
source: string
}
let schema: GraphQLSchema
export const callSchema = async ({ source }: Options) => {
if (!schema) {
schema = await createSchema()
}
return graphql({
schema,
source,
})
}

@ -0,0 +1,7 @@
import { buildSchema } from "type-graphql";
import { UserResolver } from "./User/UserResolver";
export const createSchema = () =>
buildSchema({
resolvers: [UserResolver],
})
Loading…
Cancel
Save