From 5ded9f60be95e2b815f5a14a70ff1c5c24e1567d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 20 Sep 2021 12:02:17 +0200 Subject: [PATCH] createUser as Mutation --- backend/src/graphql/resolvers/UserResolver.ts | 4 ++-- frontend/src/graphql/mutations.js | 18 ++++++++++++++++++ frontend/src/graphql/queries.js | 18 ------------------ frontend/src/views/Pages/Register.spec.js | 11 ++++++----- frontend/src/views/Pages/Register.vue | 6 +++--- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/backend/src/graphql/resolvers/UserResolver.ts b/backend/src/graphql/resolvers/UserResolver.ts index 93172875c..06b10daec 100644 --- a/backend/src/graphql/resolvers/UserResolver.ts +++ b/backend/src/graphql/resolvers/UserResolver.ts @@ -66,8 +66,8 @@ export class UserResolver { return 'success' } - @Query(() => String) - async create( + @Mutation(() => String) + async createUser( @Args() { email, firstName, lastName, password, language }: CreateUserArgs, ): Promise { const payload = { diff --git a/frontend/src/graphql/mutations.js b/frontend/src/graphql/mutations.js index ca8c5ad1c..ed951a498 100644 --- a/frontend/src/graphql/mutations.js +++ b/frontend/src/graphql/mutations.js @@ -43,3 +43,21 @@ export const updateUserInfos = gql` } } ` + +export const resgisterUser = gql` + mutation( + $firstName: String! + $lastName: String! + $email: String! + $password: String! + $language: String! + ) { + createUser( + email: $email + firstName: $firstName + lastName: $lastName + password: $password + language: $language + ) + } +` diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 6d4ffd783..4214f8e01 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -62,24 +62,6 @@ export const transactionsQuery = gql` } ` -export const resgisterUserQuery = gql` - query( - $firstName: String! - $lastName: String! - $email: String! - $password: String! - $language: String! - ) { - create( - email: $email - firstName: $firstName - lastName: $lastName - password: $password - language: $language - ) - } -` - export const sendCoins = gql` query($email: String!, $amount: Float!, $memo: String!) { sendCoins(email: $email, amount: $amount, memo: $memo) diff --git a/frontend/src/views/Pages/Register.spec.js b/frontend/src/views/Pages/Register.spec.js index a0de965d5..68c633258 100644 --- a/frontend/src/views/Pages/Register.spec.js +++ b/frontend/src/views/Pages/Register.spec.js @@ -5,7 +5,7 @@ import Register from './Register' const localVue = global.localVue -const resgisterUserQueryMock = jest.fn() +const resgisterUserMutationMock = jest.fn() const routerPushMock = jest.fn() describe('Register', () => { @@ -20,10 +20,11 @@ describe('Register', () => { push: routerPushMock, }, $apollo: { - query: resgisterUserQueryMock, + mutate: resgisterUserMutationMock, }, $store: { state: { + email: 'peter@lustig.de', language: null, }, }, @@ -192,7 +193,7 @@ describe('Register', () => { describe('server sends back error', () => { beforeEach(async () => { - resgisterUserQueryMock.mockRejectedValue({ message: 'Ouch!' }) + resgisterUserMutationMock.mockRejectedValue({ message: 'Ouch!' }) await wrapper.find('form').trigger('submit') await flushPromises() }) @@ -217,7 +218,7 @@ describe('Register', () => { describe('server sends back success', () => { beforeEach(() => { - resgisterUserQueryMock.mockResolvedValue({ + resgisterUserMutationMock.mockResolvedValue({ data: { create: 'success', }, @@ -227,7 +228,7 @@ describe('Register', () => { it('routes to "/thx/register"', async () => { await wrapper.find('form').trigger('submit') await flushPromises() - expect(resgisterUserQueryMock).toBeCalledWith( + expect(resgisterUserMutationMock).toBeCalledWith( expect.objectContaining({ variables: { email: 'max.mustermann@gradido.net', diff --git a/frontend/src/views/Pages/Register.vue b/frontend/src/views/Pages/Register.vue index 8c70f94e6..a77600077 100755 --- a/frontend/src/views/Pages/Register.vue +++ b/frontend/src/views/Pages/Register.vue @@ -141,7 +141,7 @@ import InputEmail from '../../components/Inputs/InputEmail.vue' import InputPasswordConfirmation from '../../components/Inputs/InputPasswordConfirmation.vue' import LanguageSwitchSelect from '../../components/LanguageSwitchSelect.vue' -import { resgisterUserQuery } from '../../graphql/queries' +import { resgisterUser } from '../../graphql/mutations' export default { components: { InputPasswordConfirmation, InputEmail, LanguageSwitchSelect }, @@ -190,8 +190,8 @@ export default { }, async onSubmit() { this.$apollo - .query({ - query: resgisterUserQuery, + .mutate({ + mutation: resgisterUser, variables: { email: this.form.email, firstName: this.form.firstname,