Skip to content

Commit

Permalink
black, isort pre-commit
Browse files Browse the repository at this point in the history
  • Loading branch information
lmignon committed Oct 17, 2019
1 parent 9e933c9 commit 3d4ca4d
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 59 deletions.
2 changes: 1 addition & 1 deletion .isort.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ line_length=88
known_odoo=odoo
known_odoo_addons=odoo.addons
sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
known_third_party=jsondiff,setuptools,werkzeug
known_third_party=graphene,graphql_server,jsondiff,setuptools,werkzeug
2 changes: 1 addition & 1 deletion graphql_base/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
from functools import partial

from graphql_server import (
HttpQueryError,
default_format_error,
encode_execution_results,
json_encode,
load_json_body,
run_http_query,
HttpQueryError,
)

from odoo import http
Expand Down
1 change: 1 addition & 0 deletions graphql_demo/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

from odoo import http

from odoo.addons.graphql_base import GraphQLControllerMixin

from ..schema import schema
Expand Down
21 changes: 11 additions & 10 deletions graphql_demo/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from odoo import _
from odoo.exceptions import UserError

from odoo.addons.graphql_base import OdooObjectType


Expand All @@ -29,9 +30,11 @@ class Partner(OdooObjectType):
is_company = graphene.Boolean(required=True)
contacts = graphene.List(graphene.NonNull(lambda: Partner), required=True)

@staticmethod
def resolve_country(root, info):
return root.country_id or None

@staticmethod
def resolve_contacts(root, info):
return root.child_ids

Expand All @@ -53,19 +56,20 @@ class Query(graphene.ObjectType):

error_example = graphene.String()

def resolve_all_partners(
root, info, companies_only=False, limit=None, offset=None
):
@staticmethod
def resolve_all_partners(root, info, companies_only=False, limit=None, offset=None):
domain = []
if companies_only:
domain.append(("is_company", "=", True))
return info.context["env"]["res.partner"].search(
domain, limit=limit, offset=offset
)

@staticmethod
def resolve_reverse(root, info, word):
return word[::-1]

@staticmethod
def resolve_error_example(root, info):
raise UserError(_("UserError example"))

Expand All @@ -79,22 +83,19 @@ class Arguments:

Output = Partner

def mutate(
self, info, name, email, is_company=False, raise_after_create=False
):
@staticmethod
def mutate(self, info, name, email, is_company=False, raise_after_create=False):
env = info.context["env"]
partner = env["res.partner"].create(
{"name": name, "email": email, "is_company": is_company}
)
if raise_after_create:
raise UserError("as requested")
raise UserError(_("as requested"))
return partner


class Mutation(graphene.ObjectType):
create_partner = CreatePartner.Field(
description="Documentation of CreatePartner"
)
create_partner = CreatePartner.Field(description="Documentation of CreatePartner")


schema = graphene.Schema(query=Query, mutation=Mutation)
41 changes: 10 additions & 31 deletions graphql_demo/tests/test_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

import json

from werkzeug.urls import url_encode

from odoo.tests import HttpCase
Expand All @@ -11,18 +12,14 @@

class TestController(HttpCase):
def url_open_json(self, url, json):
return self.opener.post(
"http://%s:%s%s" % (HOST, PORT, url), json=json
)
return self.opener.post("http://{}:{}{}".format(HOST, PORT, url), json=json)

def _check_all_partners(self, all_partners, companies_only=False):
domain = []
if companies_only:
domain.append(("is_company", "=", True))
expected_names = set(
self.env["res.partner"].search(domain).mapped("name")
)
actual_names = set(r["name"] for r in all_partners)
expected_names = set(self.env["res.partner"].search(domain).mapped("name"))
actual_names = {r["name"] for r in all_partners}
self.assertEqual(actual_names, expected_names)

def test_get(self):
Expand All @@ -48,9 +45,7 @@ def test_get_with_variables(self):
r = self.url_open("/graphql/demo?" + url_encode(data))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers["Content-Type"], "application/json")
self._check_all_partners(
r.json()["data"]["allPartners"], companies_only=True
)
self._check_all_partners(r.json()["data"]["allPartners"], companies_only=True)

def test_post_form(self):
self.authenticate("admin", "admin")
Expand All @@ -75,9 +70,7 @@ def test_post_form_with_variables(self):
r = self.url_open("/graphql/demo", data=data)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers["Content-Type"], "application/json")
self._check_all_partners(
r.json()["data"]["allPartners"], companies_only=True
)
self._check_all_partners(r.json()["data"]["allPartners"], companies_only=True)

def test_post_json_with_variables(self):
self.authenticate("admin", "admin")
Expand All @@ -93,9 +86,7 @@ def test_post_json_with_variables(self):
r = self.url_open_json("/graphql/demo", data)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers["Content-Type"], "application/json")
self._check_all_partners(
r.json()["data"]["allPartners"], companies_only=True
)
self._check_all_partners(r.json()["data"]["allPartners"], companies_only=True)

def test_post_form_mutation(self):
self.authenticate("admin", "admin")
Expand All @@ -112,16 +103,9 @@ def test_post_form_mutation(self):
r = self.url_open("/graphql/demo", data=data)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers["Content-Type"], "application/json")
self.assertEqual("Le Héro, Toto", r.json()["data"]["createPartner"]["name"])
self.assertEqual(
"Le Héro, Toto", r.json()["data"]["createPartner"]["name"]
)
self.assertEqual(
len(
self.env["res.partner"].search(
[("email", "=", "[email protected]")]
)
),
1,
len(self.env["res.partner"].search([("email", "=", "[email protected]")])), 1
)

def test_get_mutation_not_allowed(self):
Expand Down Expand Up @@ -168,10 +152,5 @@ def test_post_form_mutation_rollback(self):
self.assertIn("as requested", r.json()["errors"][0]["message"])
# a rollback must have occured
self.assertEqual(
len(
self.env["res.partner"].search(
[("email", "=", "[email protected]")]
)
),
0,
len(self.env["res.partner"].search([("email", "=", "[email protected]")])), 0
)
24 changes: 11 additions & 13 deletions graphql_demo/tests/test_graphene.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import logging

from graphene.test import Client

from odoo.tests import TransactionCase

from ..schema import schema
Expand All @@ -25,30 +26,27 @@ def execute(self, query):
raise RuntimeError("GraphQL query returned no data")
if res.get("errors"):
raise RuntimeError(
"GraphQL query returned error: %s" % (repr(res["errors"]),)
"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 = set(
r["name"]
for r in self.execute(" {allPartners{ name } }")["allPartners"]
)
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")
self.env["res.partner"].search([("is_company", "=", True)]).mapped("name")
)
actual_names = set(
actual_names = {
r["name"]
for r in self.execute(
" {allPartners(companiesOnly: true){ name } }"
)["allPartners"]
)
for r in self.execute(" {allPartners(companiesOnly: true){ name } }")[
"allPartners"
]
}
self.assertEqual(actual_names, expected_names)

def test_error(self):
Expand Down
3 changes: 0 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,5 @@ cerberus
pyquerystring
parse-accept-language
jsondiff
<<<<<<< HEAD
graphene
graphql-server-core
=======
>>>>>>> e8248af... black, pre-commit

0 comments on commit 3d4ca4d

Please sign in to comment.