Skip to content

Commit 3296852

Browse files
committed
[TEST] Check that cron delete attachment after TTL
1 parent 5867a83 commit 3296852

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

base_export_async/tests/test_base_export_async.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# Copyright 2019 ACSONE SA/NV
22
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
33

4-
import odoo.tests.common as common
54
import json
5+
from dateutil.relativedelta import relativedelta
6+
7+
from odoo import fields
8+
import odoo.tests.common as common
69

710
data_csv = {'data': """{"format": "csv", "model": "res.partner",
811
"fields": [{"name": "id", "label": "External ID"},
@@ -43,18 +46,43 @@ def test_export_csv(self):
4346
""" Check that the export generate an attachment and email"""
4447
params = json.loads(data_csv.get('data'))
4548
mails = self.env['mail.mail'].search([])
49+
attachments = self.env['ir.attachment'].search([])
4650
self.delay_export_obj.export(params)
4751
new_mail = self.env['mail.mail'].search([]) - mails
52+
new_attachment = self.env['ir.attachment'].search([]) - attachments
4853
self.assertEqual(len(new_mail), 1)
49-
self.assertEqual(new_mail.attachment_ids[0].datas_fname,
54+
self.assertEqual(new_attachment.datas_fname,
5055
"res.partner.csv")
56+
self.assertTrue(new_attachment.to_delete)
5157

5258
def test_export_xls(self):
5359
""" Check that the export generate an attachment and email"""
5460
params = json.loads(data_xls.get('data'))
5561
mails = self.env['mail.mail'].search([])
62+
attachments = self.env['ir.attachment'].search([])
5663
self.delay_export_obj.export(params)
5764
new_mail = self.env['mail.mail'].search([]) - mails
65+
new_attachment = self.env['ir.attachment'].search([]) - attachments
5866
self.assertEqual(len(new_mail), 1)
59-
self.assertEqual(new_mail.attachment_ids[0].datas_fname,
67+
self.assertEqual(new_attachment.datas_fname,
6068
"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

Comments
 (0)