From 4bf9a49f713eb77d61640ee28cec83504a1f5d79 Mon Sep 17 00:00:00 2001 From: Mark <mark@openappstack.net> Date: Tue, 10 Sep 2019 17:25:36 +0200 Subject: [PATCH] Add create application API function --- database/schema.py | 14 ++++++++++++++ test/test_graphql.py | 27 +++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/database/schema.py b/database/schema.py index 5b27140..c4df8d2 100644 --- a/database/schema.py +++ b/database/schema.py @@ -37,6 +37,19 @@ class Application(SQLAlchemyObjectType): interfaces = (relay.Node, ) +class CreateApplication(graphene.Mutation): + class Arguments: + name = graphene.String(required=True) + + application = graphene.Field(Application) + + def mutate(self, info, name): + application = ApplicationModel(name=name) + user_datastore.db.session().add(application) + user_datastore.commit() + return CreateApplication(application=application) + + class Role(SQLAlchemyObjectType): class Meta: model = RoleModel @@ -86,6 +99,7 @@ class Query(graphene.ObjectType): class Mutation(graphene.ObjectType): create_user = UserMutation.Field() create_role = CreateRole.Field() + create_application = CreateApplication.Field() add_role_to_user = AddRoleToUser.Field() diff --git a/test/test_graphql.py b/test/test_graphql.py index f402dda..c847f6e 100644 --- a/test/test_graphql.py +++ b/test/test_graphql.py @@ -5,7 +5,7 @@ from app import app from flask_testing import LiveServerTestCase from json import loads from database.database import db_session -from database.models import User, Role +from database.models import User, Role, Application class GraphQlTests(LiveServerTestCase): @@ -30,7 +30,11 @@ class GraphQlTests(LiveServerTestCase): role.users = [] db_session.delete(role) db_session.commit() - + application = db_session.query(Application).filter_by(name="testapp").first() + if application is not None: + application.users = [] + db_session.delete(application) + db_session.commit() def test_query_create_and_get_user(self): username = "graphqluser" @@ -140,3 +144,22 @@ class GraphQlTests(LiveServerTestCase): description}}}}}} '''.format(name, description).strip() return loads(self.client.execute(querystring)) + + def test_create_application(self): + application_name = "testapp" + result = self._create_application(application_name) + self.assertIn("data", result) + self.assertIn("createApplication", result["data"]) + self.assertIn("application", result["data"]["createApplication"]) + application = result["data"]["createApplication"]["application"] + self.assertEqual(application["name"], application_name) + + def _create_application(self, name): + querystring = ''' + mutation{{ + createApplication( + name: "{0}"){{ + application{{ + name}}}}}} + '''.format(name).strip() + return loads(self.client.execute(querystring)) -- GitLab