diff --git a/golem_resource_pack/tests/__init__.py b/golem_resource_pack/tests/__init__.py new file mode 100644 index 0000000..cbb2d37 --- /dev/null +++ b/golem_resource_pack/tests/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import test_golem_resource_pack diff --git a/golem_resource_pack/tests/test_golem_resource_pack.py b/golem_resource_pack/tests/test_golem_resource_pack.py new file mode 100644 index 0000000..e824749 --- /dev/null +++ b/golem_resource_pack/tests/test_golem_resource_pack.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Pack testing """ + +import logging +from odoo.tests.common import TransactionCase +from odoo.exceptions import ValidationError +_LOGGER = logging.getLogger(__name__) + + +class TestGolemResourcePack(TransactionCase): + """ GOLEM Resource Reservation testing """ + + def setUp(self, *args, **kwargs): + """ Bootstrap Resource Reservation """ + super(TestGolemResourcePack, self).setUp(*args, **kwargs) + + self.resource = self.env['golem.resource'].create({ + 'name': 'Resource', + 'avaibility_start': '2018-01-01', + 'avaibility_stop': '2020-01-01', + 'availibility_24_7': True + }) + self.resource_val = self.env['golem.resource'].create({ + 'name': 'Resource to validate', + 'avaibility_start': '2018-01-01', + 'avaibility_stop': '2020-01-01', + 'validation_required': True, + 'availibility_24_7': True + }) + + self.partner = self.env['res.partner'].create({'firstname': 'John', + 'lastname': 'DOE', + 'is_company': False}) + + reservation_obj = self.env['golem.resource.reservation'] + self.reservation_1 = reservation_obj.create({ + 'resource_id': self.resource.id, + 'date_start': '2018-02-05 11:00:00', + 'date_stop': '2018-02-05 12:00:00', + 'partner_id': self.partner.id + }) + self.reservation_2 = reservation_obj.create({ + 'resource_id': self.resource.id, + 'date_start': '2018-02-06 11:00:00', + 'date_stop': '2018-02-06 12:00:00', + 'partner_id': self.partner.id + }) + self.reservation_3 = reservation_obj.create({ + 'resource_id': self.resource_val.id, + 'date_start': '2018-02-05 11:00:00', # is monday + 'date_stop': '2018-02-05 12:00:00', + 'partner_id': self.partner.id + }) + self.pack_obj = self.env['golem.resource.pack'] + self.pack_data = { + 'partner_id': self.partner.id + } + + + def test_pack_basic(self): + """ Test pack bases """ + pack = self.pack_obj.create(self.pack_data) + self.assertFalse(pack.reservation_ids) + self.assertFalse(self.reservation_1.pack_id) + pack.reservation_ids = [(4, self.reservation_1.id, 0), + (4, self.reservation_2.id, 0)] + self.assertEqual(pack.reservation_ids[0].state, "draft") + self.assertEqual(self.reservation_1.pack_id.id, pack.id) + self.assertEqual(pack.state, "draft") + self.assertEqual(pack.reservation_count, 2) + #confirm pack ==> all validated + pack.state_confirm()#no validation required + self.assertEqual(pack.reservation_ids[0].state, "validated") + self.assertEqual(pack.state, "validated") + #pack draft ==> all draft + pack.state_draft() + self.assertEqual(pack.reservation_ids[0].state, "draft") + self.assertEqual(pack.state, "draft") + # confirm pack and draft reservation ==> pack draft + pack.state_confirm() + pack.reservation_ids[0].state_draft() + self.assertEqual(pack.reservation_ids[0].state, "draft") + self.assertEqual(pack.state, "draft") + #confirm reservation ==> pack validated + pack.reservation_ids[0].state_confirm() + self.assertEqual(pack.reservation_ids[0].state, "validated") + self.assertEqual(pack.state, "validated") + pack.reservation_ids=[(5,0,0)] + self.assertFalse(pack.reservation_ids) + self.assertEqual(pack.reservation_count, 0) + + + def test_pack_validation(self): + """ Test pack validation """ + pack = self.pack_obj.create(self.pack_data) + self.assertFalse(pack.reservation_ids) + self.assertFalse(self.reservation_1.pack_id) + pack.reservation_ids = [(4, self.reservation_1.id, 0), + (4, self.reservation_3.id, 0)] + self.assertEqual(pack.reservation_ids[0].state, "draft") + self.assertEqual(self.reservation_1.pack_id.id, pack.id) + self.assertEqual(pack.state, "draft") + pack.state_confirm()#validation required + self.assertEqual(pack.state, "confirmed") + pack.state_validated() + self.assertEqual(pack.state, "validated") + self.assertEqual(pack.reservation_ids[0].state, "validated") + self.assertEqual(pack.reservation_ids[1].state, "validated") + + def test_pack_rejection(self): + """ test pack rejection """ + pack = self.pack_obj.create(self.pack_data) + self.assertFalse(pack.reservation_ids) + self.assertFalse(self.reservation_1.pack_id) + pack.reservation_ids = [(4, self.reservation_1.id, 0), + (4, self.reservation_3.id, 0)] + self.assertEqual(pack.reservation_ids[0].state, "draft") + self.assertEqual(self.reservation_1.pack_id.id, pack.id) + self.assertEqual(pack.state, "draft") + pack.state_confirm()#validation required + rej_wizard = self.env['golem.pack.rejection.wizard'].create({ + 'pack_id': pack.id, + 'reason' : 'reason1' + }) + rej_wizard.reject() + self.assertEqual(pack.state, "rejected") + self.assertEqual(self.reservation_3.state, "rejected") + self.assertEqual(pack.rejection_reason, 'reason1')