# Copyright 2016 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo.tests import common
from odoo import exceptions
from ..hooks import pre_init_hook


class TestMassMailingUnique(common.SavepointCase):
    @classmethod
    def setUpClass(cls):
        super(TestMassMailingUnique, cls).setUpClass()
        cls.list = cls.env['mail.mass_mailing.list'].create({
            'name': 'Test list',
        })
        cls.contact1 = cls.env['mail.mass_mailing.contact'].create({
            'name': 'Contact 1',
            'email': 'email1@test.com',
            'list_ids': [(6, 0, [cls.list.id])]
        })

    def test_init_hook_list(self):
        # Disable temporarily the constraint
        self.env.cr.execute("""
            ALTER TABLE mail_mass_mailing_list
            DROP CONSTRAINT mail_mass_mailing_list_unique_name
            """)
        self.env['mail.mass_mailing.list'].create({
            'name': 'Test list',
        })
        with self.assertRaises(exceptions.ValidationError):
            pre_init_hook(self.env.cr)

    def test_init_hook_contact(self):
        with self.assertRaises(exceptions.ValidationError):
            self.env['mail.mass_mailing.contact'].create({
                'name': 'Contact 2',
                'email': 'email1@test.com',
                'list_ids': [(6, 0, [self.list.id])]
            })
