|
1 | 1 | # Copyright 2019 ACSONE SA/NV |
2 | 2 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
3 | 3 |
|
4 | | -import odoo.tests.common as common |
5 | 4 | import json |
| 5 | +from dateutil.relativedelta import relativedelta |
| 6 | + |
| 7 | +from odoo import fields |
| 8 | +import odoo.tests.common as common |
6 | 9 |
|
7 | 10 | data_csv = {'data': """{"format": "csv", "model": "res.partner", |
8 | 11 | "fields": [{"name": "id", "label": "External ID"}, |
@@ -43,18 +46,43 @@ def test_export_csv(self): |
43 | 46 | """ Check that the export generate an attachment and email""" |
44 | 47 | params = json.loads(data_csv.get('data')) |
45 | 48 | mails = self.env['mail.mail'].search([]) |
| 49 | + attachments = self.env['ir.attachment'].search([]) |
46 | 50 | self.delay_export_obj.export(params) |
47 | 51 | new_mail = self.env['mail.mail'].search([]) - mails |
| 52 | + new_attachment = self.env['ir.attachment'].search([]) - attachments |
48 | 53 | self.assertEqual(len(new_mail), 1) |
49 | | - self.assertEqual(new_mail.attachment_ids[0].datas_fname, |
| 54 | + self.assertEqual(new_attachment.datas_fname, |
50 | 55 | "res.partner.csv") |
| 56 | + self.assertTrue(new_attachment.to_delete) |
51 | 57 |
|
52 | 58 | def test_export_xls(self): |
53 | 59 | """ Check that the export generate an attachment and email""" |
54 | 60 | params = json.loads(data_xls.get('data')) |
55 | 61 | mails = self.env['mail.mail'].search([]) |
| 62 | + attachments = self.env['ir.attachment'].search([]) |
56 | 63 | self.delay_export_obj.export(params) |
57 | 64 | new_mail = self.env['mail.mail'].search([]) - mails |
| 65 | + new_attachment = self.env['ir.attachment'].search([]) - attachments |
58 | 66 | self.assertEqual(len(new_mail), 1) |
59 | | - self.assertEqual(new_mail.attachment_ids[0].datas_fname, |
| 67 | + self.assertEqual(new_attachment.datas_fname, |
60 | 68 | "res.partner.xls") |
| 69 | + self.assertTrue(new_attachment.to_delete) |
| 70 | + |
| 71 | + def test_cron_delete(self): |
| 72 | + """ Check that cron delete attachment after TTL""" |
| 73 | + params = json.loads(data_csv.get('data')) |
| 74 | + attachments = self.env['ir.attachment'].search([]) |
| 75 | + self.delay_export_obj.export(params) |
| 76 | + new_attachment = self.env['ir.attachment'].search([]) - attachments |
| 77 | + time_to_live = self.env. \ |
| 78 | + ref('base_export_async.attachment_time_to_live').value |
| 79 | + date_today = fields.Date.from_string(fields.Date.today()) |
| 80 | + date_to_delete = fields.Date.to_string( |
| 81 | + date_today + relativedelta(days=-int(time_to_live))) |
| 82 | + # Update create_date with today - TTL |
| 83 | + new_attachment.write({ |
| 84 | + 'create_date': date_to_delete |
| 85 | + }) |
| 86 | + self.env['ir.attachment'].sudo().cron_delete() |
| 87 | + # The attachment must be deleted |
| 88 | + self.assertFalse(new_attachment.exists()) |
0 commit comments