Files
manufacture/mrp_project/tests/test_mrp_project.py
Pedro M. Baeza 85b3ed0962 [ADD] mrp_project
================
MRP Project Link
================

This module links projects and tasks to *manufacturing orders* (MO) and
*work orders* (WO).

Usage
=====

In a manufacturing order (MO), you can select a project to be attached to it.
If none is selected, a project is automatically created when the MO is
confirmed.

When the MO starts, a task is created and assigned to the order.
2015-12-04 15:12:29 +01:00

78 lines
3.0 KiB
Python

# -*- coding: utf-8 -*-
# (c) 2015 Pedro M. Baeza - Serv. Tecnol. Avanzados
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
import time
import openerp.tests.common as common
from openerp import fields
class TestMrpProject(common.TransactionCase):
def setUp(self):
super(TestMrpProject, self).setUp()
self.product = self.env['product.product'].create({'name': 'Test'})
self.bom = self.env['mrp.bom'].create(
{
'product_id': self.product.id,
'product_tmpl_id': self.product.product_tmpl_id.id,
})
self.production = self.env['mrp.production'].create(
{
'product_id': self.product.id,
'product_uom': self.env.ref('product.product_uom_unit').id,
'bom_id': self.bom.id,
})
self.task = self.env['project.task'].create({
'name': "Test",
'user_id': self.env.uid,
})
def test_project_full(self):
self.assertFalse(self.production.project_id)
self.production.signal_workflow('button_confirm')
self.assertTrue(self.production.project_id)
self.assertEqual(self.production.project_id.production_count, 1)
self.production.force_production()
# start the MO (and this starts the first WO)
self.assertFalse(self.production.project_id.task_ids)
self.production.signal_workflow('button_produce')
self.assertEqual(len(self.production.project_id.task_ids), 1)
# Remove production to see if the project is removed
project = self.production.project_id
self.production.signal_workflow('button_cancel')
self.production.unlink()
self.assertFalse(project.exists())
def test_preservation_project_with_works(self):
self.production.signal_workflow('button_confirm')
self.production.force_production()
self.production.signal_workflow('button_produce')
work = self.env['project.task.work'].create(
{'task_id': self.production.project_id.task_ids[0].id,
'name': 'Test work',
'user_id': self.env.user.id,
'hours': 1.0})
# Remove production to see if the project is removed
project = self.production.project_id
self.production.signal_workflow('button_cancel')
self.production.unlink()
self.assertTrue(project.exists())
self.assertTrue(work.exists())
def test_task_name(self):
self.assertEqual(
self.task.with_context(name_show_user=True).name_get()[0][1],
"[%s] Test" % self.env.user.name)
def test_onchange_task(self):
res = self.env['project.task.work'].onchange_task_id(self.task.id)
self.assertEqual(res['value']['user_id'], self.task.user_id.id)
def test_button_end_work(self):
work = self.env['project.task.work'].create(
{'task_id': self.task.id,
'date': fields.Datetime.now()})
time.sleep(1)
work.button_end_work()
self.assertNotEqual(work.hours, 0.0)