mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 11:31:59 +02:00
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
# Copyright 2018 ACSONE SA/NV
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
|
|
|
import logging
|
|
|
|
from graphene.test import Client
|
|
|
|
from odoo.tests import TransactionCase
|
|
|
|
from ..schema import schema
|
|
|
|
|
|
class TestGraphene(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestGraphene, cls).setUpClass()
|
|
cls.client = Client(schema)
|
|
# disable logging for the graphql executor because we are testing
|
|
# errors and OCA's test runner considers the two errors being logged
|
|
# as fatal
|
|
logging.getLogger("graphql.execution").setLevel(logging.CRITICAL)
|
|
|
|
def execute(self, query):
|
|
res = self.client.execute(query, context={"env": self.env})
|
|
if not res:
|
|
raise RuntimeError("GraphQL query returned no data")
|
|
if res.get("errors"):
|
|
raise RuntimeError(
|
|
"GraphQL query returned error: {}".format(repr(res["errors"]))
|
|
)
|
|
return res.get("data")
|
|
|
|
def test_query_all_partners(self):
|
|
expected_names = set(self.env["res.partner"].search([]).mapped("name"))
|
|
actual_names = {
|
|
r["name"] for r in self.execute(" {allPartners{ name } }")["allPartners"]
|
|
}
|
|
self.assertEqual(actual_names, expected_names)
|
|
|
|
def test_query_all_partners_companies_only(self):
|
|
expected_names = set(
|
|
self.env["res.partner"].search([("is_company", "=", True)]).mapped("name")
|
|
)
|
|
actual_names = {
|
|
r["name"]
|
|
for r in self.execute(" {allPartners(companiesOnly: true){ name } }")[
|
|
"allPartners"
|
|
]
|
|
}
|
|
self.assertEqual(actual_names, expected_names)
|
|
|
|
def test_error(self):
|
|
r = self.client.execute("{errorExample}", context={"env": self.env})
|
|
self.assertIn("UserError example", r["errors"][0]["message"])
|
|
|
|
def test_mutation(self):
|
|
mutation = """\
|
|
mutation{
|
|
createPartner(
|
|
name: "toto",
|
|
email: "toto@acsone.eu",
|
|
) {
|
|
name
|
|
}
|
|
}
|
|
"""
|
|
self.client.execute(mutation, context={"env": self.env})
|
|
self.assertEqual(
|
|
len(self.env["res.partner"].search([("name", "=", "toto")])), 1
|
|
)
|