Files
enterprise-addons/quality_control/tests/test_quality_spreadsheet_controller.py
T

96 lines
3.9 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from freezegun import freeze_time
from odoo import Command
from odoo.tests.common import HttpCase, new_test_user
from .test_common import TestQualityCommon
from odoo.addons.spreadsheet_edition.tests.spreadsheet_test_case import (
SpreadsheetTestCase,
)
class TestQualitySpreadsheet(TestQualityCommon, SpreadsheetTestCase, HttpCase):
def test_create_spreadsheet_template(self):
spreadsheet = self.env['quality.spreadsheet.template'].create({
'check_cell': 'A1',
'name': 'my spreadsheet quality check template',
})
point = self.env['quality.point'].create({
'name': 'QP1',
'test_type_id': self.env.ref('quality_control.test_type_spreadsheet').id,
'spreadsheet_template_id': spreadsheet.id,
'picking_type_ids': [Command.link(self.picking_type_id)],
})
self.assertEqual(point.spreadsheet_check_cell, 'A1')
user = new_test_user(self.env, login='raoul', groups='quality.group_quality_user')
self.authenticate(user.login, user.password)
response = self.url_open('/spreadsheet/data/quality.spreadsheet.template/%s' % spreadsheet.id)
data = response.json()
self.assertEqual(data['quality_check_cell'], 'A1')
picking = self.env['stock.picking'].create({
'picking_type_id': self.picking_type_id,
'partner_id': self.partner_id,
'location_id': self.location_id,
'location_dest_id': self.location_dest_id,
})
self.env['stock.move'].create({
'product_id': self.product.id,
'product_uom_qty': 1,
'product_uom': self.product.uom_id.id,
'picking_id': picking.id,
'location_id': self.location_id,
'location_dest_id': self.location_dest_id
})
picking.action_confirm()
self.assertEqual(len(picking.check_ids), 1)
check = picking.check_ids
self.assertFalse(check.spreadsheet_id, 'the spreadsheet is lazily created')
action = check.action_open_spreadsheet()
spreadsheet = check.spreadsheet_id
self.assertEqual(action['params']['check_id'], check.id)
self.assertEqual(action['params']['spreadsheet_id'], spreadsheet.id)
response = self.url_open('/spreadsheet/data/quality.check.spreadsheet/%s' % spreadsheet.id)
data = response.json()
self.assertEqual(data['quality_check_cell'], 'A1')
check.unlink()
self.assertFalse(spreadsheet.exists())
def test_delete_history_after_inactivity(self):
with freeze_time('2018-01-01'):
spreadsheet = self.env['quality.check.spreadsheet'].create({
'name': 'My spreadsheet',
'check_cell': 'A1',
})
spreadsheet.dispatch_spreadsheet_message(
self.new_revision_data(spreadsheet)
)
snapshot = {'revisionId': 'next-revision'}
self.snapshot(
spreadsheet, spreadsheet.current_revision_uuid, 'next-revision', snapshot
)
revisions = spreadsheet.with_context(
active_test=False
).spreadsheet_revision_ids
# write_date is not mocked when archiving, so we need to set it manually
revisions.write_date = '2018-01-01'
# the same day, the history is still there
self.env['quality.check.spreadsheet']._gc_spreadsheet_history()
self.assertTrue(
spreadsheet.with_context(active_test=False).spreadsheet_revision_ids
)
# the next day, the history is still there
with freeze_time('2018-01-02'):
self.env['quality.check.spreadsheet']._gc_spreadsheet_history()
self.assertFalse(
spreadsheet.with_context(active_test=False).spreadsheet_revision_ids
)