|
|
# Copyright 2020 Coop IT Easy SCRLfs (<http://www.coopiteasy.be>) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase
class TestResPartner(TransactionCase): def setUp(self): super().setUp() self.eater1 = self.env.ref("beesdoo_base.eater1") self.eater2 = self.env.ref("beesdoo_base.eater2") self.eater3 = self.env.ref("beesdoo_base.eater3") self.eater4 = self.env.ref("beesdoo_base.eater4")
def test_max_eater_assignment_share_a(self): """
Test adding eater to a cooperator and raise when max is reached. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") coop1.write({"child_eater_ids": [(4, self.eater1.id)]}) self.assertEqual(len(coop1.child_eater_ids), 1) coop1.write({"child_eater_ids": [(4, self.eater2.id)]}) self.assertEqual(len(coop1.child_eater_ids), 2) coop1.write({"child_eater_ids": [(4, self.eater3.id)]}) self.assertEqual(len(coop1.child_eater_ids), 3) with self.assertRaises(ValidationError) as econtext: coop1.write({"child_eater_ids": [(4, self.eater4.id)]}) self.assertIn("can only set", str(econtext.exception)) # Reset coop1.write({"child_eater_ids": [(5, None, None)]}) self.assertEqual(len(coop1.child_eater_ids), 0) # Test by editing parent_eater_id self.eater1.write({"parent_eater_id": coop1.id}) self.assertEqual(len(coop1.child_eater_ids), 1) self.eater2.write({"parent_eater_id": coop1.id}) self.assertEqual(len(coop1.child_eater_ids), 2) self.eater3.write({"parent_eater_id": coop1.id}) self.assertEqual(len(coop1.child_eater_ids), 3) with self.assertRaises(ValidationError) as econtext: self.eater4.write({"parent_eater_id": coop1.id}) self.assertIn("can only set", str(econtext.exception))
def test_max_eater_assignment_share_b(self): """
Test adding eater to a cooperator and raise when max is reached. """
coop2 = self.env.ref("beesdoo_base.res_partner_cooperator_2_demo") coop2.write({"child_eater_ids": [(4, self.eater1.id)]}) self.assertEqual(len(coop2.child_eater_ids), 1) coop2.write({"child_eater_ids": [(4, self.eater2.id)]}) self.assertEqual(len(coop2.child_eater_ids), 2) with self.assertRaises(ValidationError) as econtext: coop2.write({"child_eater_ids": [(4, self.eater3.id)]}) self.assertIn("can only set", str(econtext.exception)) # Reset coop2.write({"child_eater_ids": [(5, None, None)]}) self.assertEqual(len(coop2.child_eater_ids), 0) # Test by editing parent_eater_id self.eater1.write({"parent_eater_id": coop2.id}) self.assertEqual(len(coop2.child_eater_ids), 1) self.eater2.write({"parent_eater_id": coop2.id}) self.assertEqual(len(coop2.child_eater_ids), 2) with self.assertRaises(ValidationError) as econtext: self.eater3.write({"parent_eater_id": coop2.id}) self.assertIn("can only set", str(econtext.exception))
def test_unlimited_eater_assignment_share_c(self): """
Test that share_c can have an unlimited number of eater. """
coop3 = self.env.ref("beesdoo_base.res_partner_cooperator_3_demo") coop3.write({"child_eater_ids": [(4, self.eater1.id)]}) self.assertEqual(len(coop3.child_eater_ids), 1) coop3.write({"child_eater_ids": [(4, self.eater2.id)]}) self.assertEqual(len(coop3.child_eater_ids), 2) coop3.write({"child_eater_ids": [(4, self.eater3.id)]}) self.assertEqual(len(coop3.child_eater_ids), 3) coop3.write({"child_eater_ids": [(4, self.eater4.id)]}) self.assertEqual(len(coop3.child_eater_ids), 4)
def test_share_with_no_eater_assignment_allowed(self): """
Test that share that doesn't allow eater assignment. """
share_c = self.env.ref("beesdoo_easy_my_coop.share_c") share_c.max_nb_eater_allowed = 0 coop3 = self.env.ref("beesdoo_base.res_partner_cooperator_3_demo") with self.assertRaises(ValidationError) as econtext: coop3.write({"child_eater_ids": [(4, self.eater3.id)]}) self.assertIn("can only set", str(econtext.exception)) with self.assertRaises(ValidationError) as econtext: self.eater1.write({"parent_eater_id": coop3.id}) self.assertIn("can only set", str(econtext.exception))
def test_multiple_eater_assignement_share_a(self): """
Test adding multiple eater in one write. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") coop1.write( { "child_eater_ids": [ (4, self.eater1.id), (4, self.eater2.id), (4, self.eater3.id), ] } ) self.assertEqual(len(coop1.child_eater_ids), 3)
def test_parent_assignement_to_eater(self): """
Test adding a parent to multiple eater in one write from the eater. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") eaters = self.eater1 eaters |= self.eater2 eaters |= self.eater3 eaters.write({"parent_eater_id": coop1.id}) self.assertEqual(len(coop1.child_eater_ids), 3)
def test_is_worker_share_a(self): """
Test that a cooperator is a worker based on his share type. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") # Run computed field coop1._compute_is_worker() self.assertEqual(coop1.is_worker, True)
def test_is_worker_share_b(self): """
Test that a cooperator is a worker based on his share type. """
coop2 = self.env.ref("beesdoo_base.res_partner_cooperator_2_demo") # Run computed field coop2._compute_is_worker() self.assertEqual(coop2.is_worker, False)
def test_search_worker(self): """
Test that the search function returns worker based on the 'is_worker' field. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") coop2 = self.env.ref("beesdoo_base.res_partner_cooperator_2_demo") # Run computed field coop1._compute_is_worker() coop2._compute_is_worker() workers = self.env["res.partner"].search([("is_worker", "=", True)]) self.assertIn(coop1, workers) self.assertNotIn(coop2, workers) workers = self.env["res.partner"].search([("is_worker", "=", False)]) self.assertNotIn(coop1, workers) self.assertIn(coop2, workers)
def test_compute_can_shop_share_a(self): """
Test that a cooperator can shop based on his share type. """
coop1 = self.env.ref("beesdoo_base.res_partner_cooperator_1_demo") # Run computed field coop1._compute_can_shop() self.assertEqual(coop1.can_shop, True) # Now unsubscribe the coop coop1.cooperative_status_ids.status = "resigning" self.assertEqual(coop1.cooperative_status_ids.can_shop, False) self.assertEqual(coop1.can_shop, False)
def test_compute_can_shop_share_c(self): """
Test that a cooperator can shop based on his share type. """
coop3 = self.env.ref("beesdoo_base.res_partner_cooperator_3_demo") # Run computed field coop3._compute_can_shop() self.assertEqual(coop3.can_shop, False)
|