# Copyright 2015 Camptocamp SA # Copyright 2016 Therp BV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from flectra import fields from flectra.exceptions import ValidationError from .test_partner_relation_common import TestPartnerRelationCommon class TestPartnerSearch(TestPartnerRelationCommon): def test_search_relation_type(self): """Test searching on relation type.""" relation = self._create_company2person_relation() partners = self.partner_model.search([ ('search_relation_type_id', '=', relation.type_selection_id.id) ]) self.assertTrue(self.partner_02_company in partners) partners = self.partner_model.search([ ('search_relation_type_id', '!=', relation.type_selection_id.id) ]) self.assertTrue(self.partner_01_person in partners) partners = self.partner_model.search([ ('search_relation_type_id', '=', self.type_company2person.name) ]) self.assertTrue(self.partner_01_person in partners) self.assertTrue(self.partner_02_company in partners) partners = self.partner_model.search([ ('search_relation_type_id', '=', 'unknown relation') ]) self.assertFalse(partners) # Check error with invalid search operator: with self.assertRaises(ValidationError): partners = self.partner_model.search([ ('search_relation_type_id', 'child_of', 'some parent') ]) def test_search_relation_partner(self): """Test searching on related partner.""" self._create_company2person_relation() partners = self.partner_model.search([ ('search_relation_partner_id', '=', self.partner_02_company.id), ]) self.assertTrue(self.partner_01_person in partners) def test_search_relation_date(self): """Test searching on relations valid on a certain date.""" self._create_company2person_relation() partners = self.partner_model.search([ ('search_relation_date', '=', fields.Date.today()), ]) self.assertTrue(self.partner_01_person in partners) self.assertTrue(self.partner_02_company in partners) def test_search_any_partner(self): """Test searching for partner left or right.""" self._create_company2person_relation() both_relations = self.relation_all_model.search([ ('any_partner_id', '=', self.partner_02_company.id), ]) self.assertEqual(len(both_relations), 2) def test_search_partner_category(self): """Test searching for partners related to partners having category.""" relation_ngo_volunteer = self.relation_all_model.create({ 'this_partner_id': self.partner_03_ngo.id, 'type_selection_id': self.selection_ngo2volunteer.id, 'other_partner_id': self.partner_04_volunteer.id, }) self.assertTrue(relation_ngo_volunteer) partners = self.partner_model.search([ ('search_relation_partner_category_id', '=', self.category_02_volunteer.id) ]) self.assertTrue(self.partner_03_ngo in partners)