From 1356e8506642c1259f827661b671eb5190c2e668 Mon Sep 17 00:00:00 2001
From: Daniel Palomar <danypr92@gmail.com>
Date: Wed, 20 Apr 2022 11:30:19 +0200
Subject: [PATCH] Add message to check_sponsor method in Partner resource

---
 .../resources/partner.py                      |  4 +--
 ...est_check_sponsor_ko_maximum_exceeded.yaml | 35 +++++++++++++++++++
 ...sts.test_check_sponsor_ko_wrong_code.yaml} | 12 +++----
 .../PartnerTests.test_check_sponsor_ok.yaml   |  2 +-
 tests/resources/test_partner.py               | 19 +++++++---
 5 files changed, 58 insertions(+), 14 deletions(-)
 create mode 100644 tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_maximum_exceeded.yaml
 rename tests/resources/cassettes/test_partner/{PartnerTests.test_check_sponsor_ko.yaml => PartnerTests.test_check_sponsor_ko_wrong_code.yaml} (65%)

diff --git a/odoo_somconnexio_python_client/resources/partner.py b/odoo_somconnexio_python_client/resources/partner.py
index 57c62c5..331590d 100644
--- a/odoo_somconnexio_python_client/resources/partner.py
+++ b/odoo_somconnexio_python_client/resources/partner.py
@@ -95,9 +95,7 @@ class Partner:
         )
         if not response_data:
             raise ResourceNotFound(resource=cls.__name__, filter=params)
-        if response_data["result"] == "allowed":
-            return True
-        return False
+        return response_data["result"] == "allowed", response_data["message"]
 
     @classmethod
     def _get(cls, id=None, params={}):
diff --git a/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_maximum_exceeded.yaml b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_maximum_exceeded.yaml
new file mode 100644
index 0000000..29a931e
--- /dev/null
+++ b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_maximum_exceeded.yaml
@@ -0,0 +1,35 @@
+interactions:
+- request:
+    body: null
+    headers:
+      API-KEY:
+      - DUMMY
+      Accept:
+      - application/json
+      Accept-Encoding:
+      - gzip, deflate
+      Connection:
+      - keep-alive
+      User-Agent:
+      - python-requests/2.27.1
+    method: GET
+    uri: http://odoo-sc.local:8069/api/partner/check_sponsor?vat=ES62308540E&sponsor_code=ry12u
+  response:
+    body:
+      string: '{"result": "not_allowed", "message": "maximum number of sponsees exceeded"}'
+    headers:
+      Content-Length:
+      - '38'
+      Content-Type:
+      - application/json
+      Date:
+      - Wed, 20 Apr 2022 08:50:41 GMT
+      Server:
+      - Werkzeug/0.11.15 Python/3.7.7
+      Set-Cookie:
+      - session_id=e4b4f7d9ae6e1ae1fcb67f6840bc96a8eed715f4; Expires=Tue, 19-Jul-2022
+        08:50:41 GMT; Max-Age=7776000; HttpOnly; Path=/
+    status:
+      code: 200
+      message: OK
+version: 1
diff --git a/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko.yaml b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_wrong_code.yaml
similarity index 65%
rename from tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko.yaml
rename to tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_wrong_code.yaml
index 0d22c28..c4da2ee 100644
--- a/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko.yaml
+++ b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ko_wrong_code.yaml
@@ -13,22 +13,22 @@ interactions:
       User-Agent:
       - python-requests/2.27.1
     method: GET
-    uri: http://odoo-sc.local:8069/api/partner/check_sponsor?vat=ES11673039X&sponsor_code=e75rc
+    uri: http://odoo-sc.local:8069/api/partner/check_sponsor?vat=ES11673039X&sponsor_code=abc12
   response:
     body:
-      string: '{"result": "not_allowed"}'
+      string: '{"result": "not_allowed", "message": "invalid code or vat number"}'
     headers:
       Content-Length:
-      - '25'
+      - '66'
       Content-Type:
       - application/json
       Date:
-      - Mon, 11 Apr 2022 16:07:55 GMT
+      - Wed, 20 Apr 2022 08:50:41 GMT
       Server:
       - Werkzeug/0.11.15 Python/3.7.7
       Set-Cookie:
-      - session_id=20c68ab430c8537aa79eb887f400d898a3c9aafc; Expires=Sun, 10-Jul-2022
-        16:07:55 GMT; Max-Age=7776000; HttpOnly; Path=/
+      - session_id=30eb767887dce773eaebbd493ba4d36cb7b150d7; Expires=Tue, 19-Jul-2022
+        08:50:41 GMT; Max-Age=7776000; HttpOnly; Path=/
     status:
       code: 200
       message: OK
diff --git a/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ok.yaml b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ok.yaml
index f4a5036..ac6d695 100644
--- a/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ok.yaml
+++ b/tests/resources/cassettes/test_partner/PartnerTests.test_check_sponsor_ok.yaml
@@ -16,7 +16,7 @@ interactions:
     uri: http://odoo-sc.local:8069/api/partner/check_sponsor?vat=ES76230724F&sponsor_code=cac3c
   response:
     body:
-      string: '{"result": "allowed"}'
+      string: '{"result": "allowed", "message": "ok"}'
     headers:
       Content-Length:
       - '21'
diff --git a/tests/resources/test_partner.py b/tests/resources/test_partner.py
index ca7b20d..99dfe47 100644
--- a/tests/resources/test_partner.py
+++ b/tests/resources/test_partner.py
@@ -42,14 +42,25 @@ class PartnerTests(unittest.TestCase):
     def test_check_sponsor_ok(self):
         sponsor_code = "cac3c"
         vat = "ES76230724F"
-        result = Partner.check_sponsor(vat, sponsor_code)
+        result, message = Partner.check_sponsor(vat, sponsor_code)
 
         assert result
+        assert message == "ok"
 
     @pytest.mark.vcr()
-    def test_check_sponsor_ko(self):
-        sponsor_code = "e75rc"
+    def test_check_sponsor_ko_maximum_exceeded(self):
+        sponsor_code = "ry12u"
+        vat = "ES62308540E"
+        result, message = Partner.check_sponsor(vat, sponsor_code)
+
+        assert not result
+        assert message == "maximum number of sponsees exceeded"
+
+    @pytest.mark.vcr()
+    def test_check_sponsor_ko_wrong_code(self):
+        sponsor_code = "abc12"
         vat = "ES11673039X"
-        result = Partner.check_sponsor(vat, sponsor_code)
+        result, message = Partner.check_sponsor(vat, sponsor_code)
 
         assert not result
+        assert message == "invalid code or vat number"
-- 
GitLab