[11.0][ADD] Add tests to extend coverage

This commit is contained in:
Adrià Gil Sorribes
2018-11-22 14:25:48 +01:00
committed by Jordi Ballester Alomar
parent dc1720faf0
commit d895b6b039
2 changed files with 236 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import test_quality_control_issue

View 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")