mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
[11.0][ADD] Add tests to extend coverage
This commit is contained in:
committed by
Jordi Ballester Alomar
parent
dc1720faf0
commit
d895b6b039
1
quality_control_issue/tests/__init__.py
Normal file
1
quality_control_issue/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import test_quality_control_issue
|
||||
235
quality_control_issue/tests/test_quality_control_issue.py
Normal file
235
quality_control_issue/tests/test_quality_control_issue.py
Normal file
@@ -0,0 +1,235 @@
|
||||
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
|
||||
|
||||
from odoo.tests import common
|
||||
from odoo.exceptions import AccessError
|
||||
|
||||
|
||||
class TestQualityControlIssue(common.SingleTransactionCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestQualityControlIssue, cls).setUpClass()
|
||||
|
||||
cls.qc_problem_grp_obj = cls.env['qc.problem.group']
|
||||
cls.qc_problem_obj = cls.env['qc.problem']
|
||||
cls.qc_stage_obj = cls.env['qc.stage']
|
||||
cls.qc_issue_obj = cls.env['qc.issue']
|
||||
cls.qc_issue_stage_obj = cls.env['qc.issue.stage']
|
||||
cls.qc_team_obj = cls.env['qc.team']
|
||||
cls.stock_scrap_obj = cls.env['stock.scrap']
|
||||
cls.product = cls.env['product.product']
|
||||
cls.partner = cls.env['res.partner']
|
||||
cls.res_users = cls.env['res.users']
|
||||
cls.company = cls.env.ref('base.main_company')
|
||||
|
||||
# Create Users and Groups
|
||||
# User assigned to quality control user group
|
||||
cls.group_qc_user = cls.env.ref(
|
||||
'quality_control.group_quality_control_user')
|
||||
cls.group_user = cls.env.ref(
|
||||
'base.group_user')
|
||||
cls.qc_user = cls._create_user(
|
||||
'qc_user',
|
||||
[cls.group_qc_user, cls.group_user],
|
||||
cls.company,
|
||||
)
|
||||
# User assigned to quality control manager group
|
||||
cls.qc_manager = cls.env.ref('base.user_root')
|
||||
|
||||
# Create products
|
||||
cls.product_1 = cls.product.create({
|
||||
'name': 'Test Product 1',
|
||||
'type': 'product',
|
||||
'list_price': 100.0,
|
||||
})
|
||||
cls.product_2 = cls.product.create({
|
||||
'name': 'Test Product 2',
|
||||
'type': 'product',
|
||||
'list_price': 150.0,
|
||||
})
|
||||
|
||||
# Create QC Team
|
||||
cls.team = cls.qc_team_obj._get_default_qc_team_id(
|
||||
user_id=cls.qc_user.id)
|
||||
|
||||
@classmethod
|
||||
def _create_user(self, login, groups, company):
|
||||
"""Create a user."""
|
||||
user = self.res_users.create({
|
||||
'name': login,
|
||||
'login': login,
|
||||
'password': 'demo',
|
||||
'email': 'example@yourcompany.com',
|
||||
'company_id': company.id,
|
||||
'groups_id': [(6, 0, [group.id for group in groups])]
|
||||
})
|
||||
return user
|
||||
|
||||
def test_01_create_qc_problem_group(self):
|
||||
"""Test to create a QC problem group"""
|
||||
# QC Manager creates QC Problem group
|
||||
self.qc_problem_group = \
|
||||
self.qc_problem_grp_obj.sudo(self.qc_manager.id).create({
|
||||
'name': "QC Problem Group Test",
|
||||
'company_id': self.company.id,
|
||||
})
|
||||
|
||||
# QC User tries to create QC Problem group
|
||||
with self.assertRaises(AccessError):
|
||||
self.qc_problem_grp_obj.sudo(self.qc_user.id).create({
|
||||
'name': "QC Problem Group Test",
|
||||
'company_id': self.company.id,
|
||||
})
|
||||
# QC User lists all QC Problem groups
|
||||
qc_problem_group_list = self.qc_problem_grp_obj. \
|
||||
sudo(self.qc_user.id).search([]).mapped('name')
|
||||
self.assertEquals(len(qc_problem_group_list), 1,
|
||||
'User 2 should have read access '
|
||||
'to all QC problem groups')
|
||||
|
||||
def test_02_create_qc_problem(self):
|
||||
"""Test to create a QC problem"""
|
||||
# Create first QC Problem Group
|
||||
qc_problem_group = \
|
||||
self.qc_problem_grp_obj.sudo(self.qc_manager.id).create({
|
||||
'name': "QC Problem Group Test",
|
||||
'company_id': self.company.id,
|
||||
})
|
||||
# QC Manager creates QC Problem
|
||||
self.qc_problem = \
|
||||
self.qc_problem_obj.sudo(self.qc_manager.id).create({
|
||||
'name': "QC Problem Test",
|
||||
'company_id': self.company.id,
|
||||
'problem_group_id': qc_problem_group.id,
|
||||
})
|
||||
|
||||
# QC User creates QC Problem
|
||||
self.qc_problem_obj.sudo(self.qc_user.id).create({
|
||||
'name': "QC Problem Test 2",
|
||||
'company_id': self.company.id,
|
||||
'problem_group_id': qc_problem_group.id,
|
||||
})
|
||||
# QC User lists all QC Problem
|
||||
qc_problem_list = self.qc_problem_obj. \
|
||||
sudo(self.qc_user.id).search([]).mapped('name')
|
||||
self.assertEquals(len(qc_problem_list), 2,
|
||||
'User 2 should have read access '
|
||||
'to all QC problem')
|
||||
|
||||
def test_03_create_qc_stage(self):
|
||||
"""Test to create a QC stage"""
|
||||
# QC Manager creates QC Stage
|
||||
self.qc_stage = \
|
||||
self.qc_stage_obj.sudo(self.qc_manager.id).create({
|
||||
'name': "QC Stage Test",
|
||||
'team_id': self.team.id,
|
||||
})
|
||||
|
||||
# QC User tries to create QC Stage
|
||||
with self.assertRaises(AccessError):
|
||||
self.qc_stage_obj.sudo(self.qc_user.id).create({
|
||||
'name': "QC Stage Test 2",
|
||||
'team_id': self.team.id,
|
||||
})
|
||||
# QC User lists all QC Stage
|
||||
qc_stage_list = self.qc_stage_obj. \
|
||||
sudo(self.qc_user.id).search([]).mapped('name')
|
||||
self.assertEquals(len(qc_stage_list), 3,
|
||||
'User 1 should have read access '
|
||||
'to all QC stages')
|
||||
|
||||
def test_04_create_qc_issue(self):
|
||||
"""Test to create a QC issue"""
|
||||
# QC Manager creates QC Issue
|
||||
self.qc_issue = \
|
||||
self.qc_issue_obj.sudo(self.qc_manager.id).create({
|
||||
'product_id': self.product_1.id,
|
||||
'product_qty': 1.0,
|
||||
'inspector_id': self.qc_manager.id,
|
||||
'product_uom': self.product_1.uom_id.id,
|
||||
})
|
||||
|
||||
# QC User creates QC Issue
|
||||
self.qc_issue_2 = \
|
||||
self.qc_issue_obj.sudo(self.qc_user.id).create({
|
||||
'product_id': self.product_1.id,
|
||||
'product_qty': 1.0,
|
||||
'inspector_id': self.qc_user.id,
|
||||
'product_uom': self.product_1.uom_id.id,
|
||||
})
|
||||
# QC User lists all QC Issue
|
||||
qc_issue_list = self.qc_issue_obj. \
|
||||
sudo(self.qc_user.id).search([]).mapped('name')
|
||||
self.assertEquals(len(qc_issue_list), 2,
|
||||
'User 2 should have read access '
|
||||
'to all QC issues')
|
||||
|
||||
def test_05_create_qc_issue_stage(self):
|
||||
"""Test to create a QC issue stage"""
|
||||
# QC Manager creates QC Issue Stage
|
||||
self.qc_issue_stage = \
|
||||
self.qc_issue_stage_obj.sudo(self.qc_manager.id).create({
|
||||
'name': "QC Stage Test",
|
||||
'qc_team_id': self.team.id,
|
||||
})
|
||||
|
||||
# QC User tries to create QC Issue Stage
|
||||
with self.assertRaises(AccessError):
|
||||
self.qc_issue_stage_obj.sudo(self.qc_user.id).create({
|
||||
'name': "QC Stage Test 2",
|
||||
'qc_team_id': self.team.id,
|
||||
})
|
||||
# QC User lists all QC Issue Stage
|
||||
qc_issue_stage_list = self.qc_issue_stage_obj. \
|
||||
sudo(self.qc_user.id).search([]).mapped('name')
|
||||
self.assertEquals(len(qc_issue_stage_list), 1,
|
||||
'User 2 should have read access '
|
||||
'to all QC stages')
|
||||
|
||||
def test_06_write_qc_issue(self):
|
||||
"""Test to write a QC issue stage"""
|
||||
# QC Manager creates QC Issue
|
||||
qc_issue = \
|
||||
self.qc_issue_obj.sudo(self.qc_manager.id).create({
|
||||
'product_id': self.product_1.id,
|
||||
'product_qty': 1.0,
|
||||
'inspector_id': self.qc_manager.id,
|
||||
'product_uom': self.product_1.uom_id.id,
|
||||
})
|
||||
|
||||
# Change product
|
||||
qc_issue.sudo(self.qc_manager.id).write({
|
||||
'product_id': self.product_2.id,
|
||||
'product_uom': self.product_2.uom_id.id,
|
||||
})
|
||||
|
||||
# Change quantity
|
||||
qc_issue.sudo(self.qc_manager.id).write({'product_qty': 2.0})
|
||||
|
||||
# Change inspector
|
||||
qc_issue.sudo(self.qc_manager.id).write({
|
||||
'inspector_id': self.qc_user.id
|
||||
})
|
||||
|
||||
def test_07_scrap_products(self):
|
||||
"""Test scrapped products"""
|
||||
# QC Manager creates QC Issue
|
||||
qc_issue = \
|
||||
self.qc_issue_obj.sudo(self.qc_manager.id).create({
|
||||
'product_id': self.product_1.id,
|
||||
'product_qty': 1.0,
|
||||
'inspector_id': self.qc_manager.id,
|
||||
'product_uom': self.product_1.uom_id.id,
|
||||
})
|
||||
|
||||
res = qc_issue.scrap_products()
|
||||
|
||||
scrap = self.stock_scrap_obj.\
|
||||
with_context(res.get('context', {})).create({})
|
||||
|
||||
scrap.action_validate()
|
||||
qc_issue.action_view_stock_scrap()
|
||||
|
||||
self.assertEquals(qc_issue.stock_scrap_qty, 1,
|
||||
"Scrap quantity should equal 1")
|
||||
Reference in New Issue
Block a user