|
2 | 2 | # Copyright 2025 Guavana - Leonardo J. Caballero G.
|
3 | 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
4 | 4 |
|
| 5 | +from unittest.mock import MagicMock, patch |
| 6 | + |
5 | 7 | from odoo.tests.common import TransactionCase
|
6 |
| -from unittest.mock import patch, MagicMock |
7 |
| -from datetime import datetime, timedelta |
8 | 8 |
|
9 |
| -class TestVoxelMixin(TransactionCase): |
10 | 9 |
|
| 10 | +class TestVoxelMixin(TransactionCase): |
11 | 11 | def setUp(self):
|
12 | 12 | super(TestVoxelMixin, self).setUp()
|
13 |
| - self.company = self.env['res.company'].create({ |
14 |
| - 'name': 'Test Company', |
15 |
| - 'voxel_enabled': True, |
16 |
| - }) |
17 |
| - self.mixin = self.env['voxel.mixin'].create({ |
18 |
| - 'voxel_state': 'not_sent', |
19 |
| - # 'company_id': self.company.id, |
20 |
| - }) |
| 13 | + self.company = self.env["res.company"].create( |
| 14 | + { |
| 15 | + "name": "Test Company", |
| 16 | + "voxel_enabled": True, |
| 17 | + } |
| 18 | + ) |
| 19 | + self.mixin = self.env["voxel.mixin"].create( |
| 20 | + { |
| 21 | + "voxel_state": "not_sent", |
| 22 | + # 'company_id': self.company.id, |
| 23 | + } |
| 24 | + ) |
21 | 25 |
|
22 |
| - @patch('odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.put') |
| 26 | + @patch("odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.put") |
23 | 27 | def test_send_voxel_report_success(self, mock_put):
|
24 | 28 | mock_put.return_value.status_code = 200
|
25 |
| - self.mixin._send_voxel_report('Outbox', 'test.xml', b'<xml></xml>') |
26 |
| - self.assertEqual(self.mixin.voxel_state, 'sent', "Voxel state should be 'sent'") |
| 29 | + self.mixin._send_voxel_report("Outbox", "test.xml", b"<xml></xml>") |
| 30 | + self.assertEqual(self.mixin.voxel_state, "sent", "Voxel state should be 'sent'") |
27 | 31 |
|
28 |
| - @patch('odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.put') |
| 32 | + @patch("odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.put") |
29 | 33 | def test_send_voxel_report_failure(self, mock_put):
|
30 | 34 | mock_put.return_value.status_code = 500
|
31 |
| - with self.assertRaises(Exception): |
32 |
| - self.mixin._send_voxel_report('Outbox', 'test.xml', b'<xml></xml>') |
33 |
| - self.assertEqual(self.mixin.voxel_state, 'sent_errors', "Voxel state should be 'sent_errors'") |
| 35 | + with self.assertRaises(Exception) as context: |
| 36 | + self.mixin._send_voxel_report("Outbox", "test.xml", b"<xml></xml>") |
| 37 | + self.assertTrue("specific error message" in str(context.exception)) |
| 38 | + self.assertEqual( |
| 39 | + self.mixin.voxel_state, "sent_errors", "Voxel state should be 'sent_errors'" |
| 40 | + ) |
34 | 41 |
|
35 |
| - @patch('odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.get') |
| 42 | + @patch("odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.get") |
36 | 43 | def test_list_voxel_document_filenames(self, mock_get):
|
37 | 44 | mock_get.return_value.status_code = 200
|
38 |
| - mock_get.return_value.content = b'test1.xml\ntest2.xml\n' |
39 |
| - filenames = self.mixin._list_voxel_document_filenames('Outbox', self.company) |
40 |
| - self.assertEqual(filenames, ['test1.xml', 'test2.xml'], "Filenames should match the expected list") |
| 45 | + mock_get.return_value.content = b"test1.xml\ntest2.xml\n" |
| 46 | + filenames = self.mixin._list_voxel_document_filenames("Outbox", self.company) |
| 47 | + self.assertEqual( |
| 48 | + filenames, |
| 49 | + ["test1.xml", "test2.xml"], |
| 50 | + "Filenames should match the expected list", |
| 51 | + ) |
41 | 52 |
|
42 |
| - @patch('odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.get') |
| 53 | + @patch("odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.get") |
43 | 54 | def test_read_voxel_document(self, mock_get):
|
44 | 55 | mock_get.return_value.status_code = 200
|
45 |
| - mock_get.return_value.content = b'<xml></xml>' |
46 |
| - content = self.mixin._read_voxel_document('Inbox', self.company, 'test.xml') |
47 |
| - self.assertEqual(content, '<xml></xml>', "Content should match the expected XML") |
| 56 | + mock_get.return_value.content = b"<xml></xml>" |
| 57 | + content = self.mixin._read_voxel_document("Inbox", self.company, "test.xml") |
| 58 | + self.assertEqual( |
| 59 | + content, "<xml></xml>", "Content should match the expected XML" |
| 60 | + ) |
48 | 61 |
|
49 |
| - @patch('odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.delete') |
| 62 | + @patch("odoo.addons.edi_voxel_oca.models.voxel_mixin.requests.delete") |
50 | 63 | def test_delete_voxel_document(self, mock_delete):
|
51 | 64 | mock_delete.return_value.status_code = 200
|
52 |
| - self.mixin._delete_voxel_document('Inbox', 'test.xml', self.company) |
| 65 | + self.mixin._delete_voxel_document("Inbox", "test.xml", self.company) |
53 | 66 | mock_delete.assert_called_once()
|
54 | 67 |
|
55 | 68 | def test_get_voxel_filename(self):
|
56 |
| - self.mixin.get_document_type = MagicMock(return_value='INV') |
| 69 | + self.mixin.get_document_type = MagicMock(return_value="INV") |
57 | 70 | filename = self.mixin._get_voxel_filename()
|
58 |
| - self.assertTrue(filename.startswith('INV_'), "Filename should start with 'INV_'") |
59 |
| - self.assertTrue(filename.endswith('.xml'), "Filename should end with '.xml'") |
| 71 | + self.assertTrue( |
| 72 | + filename.startswith("INV_"), "Filename should start with 'INV_'" |
| 73 | + ) |
| 74 | + self.assertTrue(filename.endswith(".xml"), "Filename should end with '.xml'") |
60 | 75 |
|
61 | 76 | def test_cancel_voxel_jobs(self):
|
62 |
| - job = self.env['queue.job'].create({ |
63 |
| - 'name': 'Test Job', |
64 |
| - 'state': 'pending', |
65 |
| - }) |
| 77 | + job = self.env["queue.job"].create( |
| 78 | + { |
| 79 | + "name": "Test Job", |
| 80 | + "state": "pending", |
| 81 | + } |
| 82 | + ) |
66 | 83 | self.mixin.voxel_job_ids = [(4, job.id)]
|
67 | 84 | self.mixin._cancel_voxel_jobs()
|
68 |
| - self.assertEqual(self.mixin.voxel_state, 'cancelled', "Voxel state should be 'cancelled'") |
| 85 | + self.assertEqual( |
| 86 | + self.mixin.voxel_state, "cancelled", "Voxel state should be 'cancelled'" |
| 87 | + ) |
69 | 88 | self.assertFalse(job.exists(), "Job should be unlinked")
|
0 commit comments