96 lines
3.9 KiB
Python
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
|
|
)
|