def test_constructor(self, name, age, archived, child_field): document = model.Document(name, age, archived, child_field) self.assertIsNotNone(document.id) self.assertEqual(document.name, name) self.assertEqual(document.age, age) self.assertEqual(document.archived, archived) self.assertEqual(document.child_field, child_field)
def test_remove_child_field(self): document = self.document_repo._save( model.Document(name="Anakin Skywalker", age=99, child_field=[ model.ChildField(name="Luke Skywalker", date=model.Date(month=8, year=2018)) ])) self.document_repo.set_data([document]) REMOVE_CHILD_FIELD_MUTATION = """ mutation { removeChildField(removeChildField:{ documentId: "%s" childFieldId: "%s" }) { __typename ... on Document { id name age childField{ name date{ month year } } } ... on Errors{ errors{ field messages } } } } """ % (document.id, document.child_field[0].id) result = self.execute(REMOVE_CHILD_FIELD_MUTATION) self.assertEqual(result.errors, None) data = to_dict(result.data)['removeChildField'] print(data) child_fields = data['childField'] child_fields_ids = [a['id'] for a in child_fields] self.assertTrue(document.child_field[0].id not in child_fields_ids)
async def create(self, name: str, age: Optional[int] = None, archived: Optional[bool] = None, child_field: Optional[List] = None) -> model.Document: if (await self.find_by_name(name)) is not None: raise RepoError({'name': ['already exists']}) result = model.Document( name=name, age=age, archived=archived, child_field=child_field or [], ) self.data.append(result) return result
async def create(self, name: str, age: Optional[int] = None, archived: Optional[bool] = None, child_field: Optional[List] = None) -> model.Document: document = model.Document(name=name, age=age, archived=archived, child_field=child_field or []) try: res = await self.collection.insert_one(document.to_bson()) except pymongo.errors.DuplicateKeyError: raise RepoError({'name': ['already exists']}) result = await self.find_by_id(str(res.inserted_id)) self.emit("DocumentCreated", result) return result
def test_get_all_documents(self): #set up test data document = self.document_repo._save( model.Document(name="Anakin Skywalker", age=99, child_field=[ model.ChildField(name="Luke Skywalker", date=model.Date(month=8, year=2018)) ])) documents = [document] # self.document_repo.set_data(documents) result = self.execute(self.DOCUMENTS_QUERY) self.assertEqual(result.errors, None) self.assertEqual( to_dict(result.data), { 'documents': [{ 'id': d.id, 'name': d.name, 'age': d.age, 'childField': [{ 'name': "Luke Skywalker", 'date': { 'month': 8, 'year': 2018 } }] } for d in documents] })
def test_edit_child_field(self): document = self.document_repo._save( model.Document(name="Anakin Skywalker", age=99, child_field=[ model.ChildField(name="Luke Skywalker", date=model.Date(month=8, year=2018)) ])) self.document_repo.set_data([document]) EDIT_CHILD_FIELD_MUTATION = """ mutation { editChildField(editChildField:{ documentId: "%s" childField:{ id: "%s" name: "Yoda" date: { month: 5, year: 2010 } } }) { __typename ... on Document { id name age childField{ name date{ month year } } } ... on Errors{ errors{ field messages } } } } """ % (document.id, document.child_field[0].id) result = self.execute(EDIT_CHILD_FIELD_MUTATION) self.assertEqual(result.errors, None) self.assertEqual( to_dict(result.data), { 'editChildField': { '__typename': 'Document', 'id': document.id, 'name': document.name, 'age': document.age, 'childField': [{ 'name': 'Yoda', 'date': { 'month': 5, 'year': 2010 } }] } })