diff --git a/shopinvader/services/address.py b/shopinvader/services/address.py index 32f1ceb9b9..96b530f659 100644 --- a/shopinvader/services/address.py +++ b/shopinvader/services/address.py @@ -71,6 +71,9 @@ def _store_cache_needed(self, partner): return partner.address_type == "profile" # Validator + def _get_allowed_type(self): + return ["contact", "invoice", "delivery", "other", "private"] + def _validator_search(self): validator = self._default_validator_search() validator.pop("domain", {}) @@ -78,8 +81,12 @@ def _validator_search(self): def _validator_create(self): res = { - "type": {"type": "string", "default": "other"}, "name": {"type": "string", "required": True}, + "type": { + "type": "string", + "allowed": self._get_allowed_type(), + "default": "contact", + }, "street": {"type": "string", "required": True, "empty": False}, "street2": {"type": "string", "nullable": True}, "zip": {"type": "string", "required": True, "empty": False}, diff --git a/shopinvader/tests/test_address.py b/shopinvader/tests/test_address.py index c4374c7a94..ae041a8635 100644 --- a/shopinvader/tests/test_address.py +++ b/shopinvader/tests/test_address.py @@ -2,7 +2,7 @@ # @author Sébastien BEAU # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.exceptions import AccessError +from odoo.exceptions import AccessError, UserError from .common import CommonCase @@ -67,7 +67,7 @@ def test_create_address(self): # no email, verify defaults params = dict(self.address_params, parent_id=self.partner.id) # type defaults to `other` - expected = dict(params, type="other") + expected = dict(params) self._test_create_address(params, expected) # pass email and type params = dict(params, email="purple@test.oca", type="invoice") @@ -79,6 +79,31 @@ def _test_update_address(self, address_id, params, expected): address = self.env["res.partner"].browse(address_id) self.check_data(address, expected) + def test_add_address_invoice(self): + # Create an invoice address with wrong type + # Check raise + # Create an invoice address with invoice type + # Check data + self.address_params.update({"type": "wrong"}) + address_ids = [ + address["id"] for address in self.address_service.search()["data"] + ] + with self.assertRaises(UserError): + self.address_service.dispatch( + "create", params=self.address_params + )["data"] + self.address_params.update({"type": "invoice"}) + address_list = self.address_service.dispatch( + "create", params=self.address_params + )["data"] + for address in address_list: + if address["id"] not in address_ids: + created_address = address + self.assertIsNotNone(created_address) + address = self.env["res.partner"].browse(created_address["id"]) + self.assertEqual(address.parent_id, self.partner) + self.check_data(address, self.address_params) + def test_update_address(self): params = dict(self.address_params, parent_id=self.partner.id) expected = dict(params) @@ -104,6 +129,18 @@ def test_read_address_address(self): expected_ids = {self.address.id, self.address_2.id} self.assertEqual(ids, expected_ids) + def test_read_address_invoice(self): + # Create an invoice address + # Search it + self.address_params.update({"type": "invoice"}) + self.address_service.dispatch("create", params=self.address_params)[ + "data" + ] + res = self.address_service.dispatch( + "search", params={"scope": {"type": "invoice"}} + )["data"] + self.assertEqual(len(res), 1) + def test_read_address_all(self): res = self.address_service.dispatch("search", params={})["data"] self.assertEqual(len(res), 3)