Skip to content
Snippets Groups Projects
Commit 799a11da authored by Daniel Palomar's avatar Daniel Palomar
Browse files

Merge branch 'feat/check_sponsor-partner-resource' into 'master'

Add check_sponsor method to Partner resource

See merge request coopdevs/odoo-somconnexio-python-client!32
parents 8b0d4f95 1356e850
No related branches found
No related tags found
1 merge request!32Add check_sponsor method to Partner resource
Pipeline #4842 passed
......@@ -74,6 +74,29 @@ class Partner:
}
)
@classmethod
def check_sponsor(cls, vat, sponsor_code):
"""
Check if partner can sponsor new partners.
:return: True or False
"""
if not vat or not sponsor_code:
return False
url = "{}/{}".format(cls._url_path, "check_sponsor")
params = {
"vat": vat,
"sponsor_code": sponsor_code,
}
response_data = Client().get(
url,
params=params,
)
if not response_data:
raise ResourceNotFound(resource=cls.__name__, filter=params)
return response_data["result"] == "allowed", response_data["message"]
@classmethod
def _get(cls, id=None, params={}):
if id:
......@@ -82,7 +105,7 @@ class Partner:
url = cls._url_path
response_data = Client().get(
"{}".format(url),
url,
params=params,
)
if not response_data:
......
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
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=ES11673039X&sponsor_code=abc12
response:
body:
string: '{"result": "not_allowed", "message": "invalid code or vat number"}'
headers:
Content-Length:
- '66'
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=30eb767887dce773eaebbd493ba4d36cb7b150d7; Expires=Tue, 19-Jul-2022
08:50:41 GMT; Max-Age=7776000; HttpOnly; Path=/
status:
code: 200
message: OK
version: 1
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=ES76230724F&sponsor_code=cac3c
response:
body:
string: '{"result": "allowed", "message": "ok"}'
headers:
Content-Length:
- '21'
Content-Type:
- application/json
Date:
- Mon, 11 Apr 2022 16:07:55 GMT
Server:
- Werkzeug/0.11.15 Python/3.7.7
Set-Cookie:
- session_id=1cf629199c168586de6a62c105eed137795dc5f8; Expires=Sun, 10-Jul-2022
16:07:55 GMT; Max-Age=7776000; HttpOnly; Path=/
status:
code: 200
message: OK
version: 1
......@@ -24,16 +24,43 @@ class PartnerTests(unittest.TestCase):
def test_search_by_vat(self):
partner = Partner.search_by_vat(vat="55642302N")
assert partner.ref, "1234"
assert partner.vat, "55642302N"
assert partner.name, "Felip Dara"
assert partner.ref == "1234"
assert partner.vat == "ES55642302N"
assert partner.name == "Felip Dara"
@pytest.mark.vcr()
def test_get_with_ref(self):
ref = "1234"
partner = Partner.get(ref)
assert partner.ref, "1234"
assert partner.vat, "55642302N"
assert partner.name, "Felip Dara"
assert partner.member, True
assert partner.ref == "1234"
assert partner.vat == "ES55642302N"
assert partner.name == "Felip Dara"
assert partner.member
@pytest.mark.vcr()
def test_check_sponsor_ok(self):
sponsor_code = "cac3c"
vat = "ES76230724F"
result, message = Partner.check_sponsor(vat, sponsor_code)
assert result
assert message == "ok"
@pytest.mark.vcr()
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, message = Partner.check_sponsor(vat, sponsor_code)
assert not result
assert message == "invalid code or vat number"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment