open-synergy/opnsynid-hr

View on GitHub
hr_payslip_security/tests/test_payslip_viewer.py

Summary

Maintainability
C
1 day
Test Coverage
# -*- coding: utf-8 -*-
# Copyright 2018 OpenSynergy Indonesia
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp.exceptions import except_orm

from .base import BaseCase


class TestPayslipViewer(BaseCase):
    def test_payslip_viewer_supervisor(self):
        # Condition 1:
        # 1. Employee 2 create a new payslip for himself
        # 2. Group Employee 2:
        #       (1) Employee,
        #       (2) Supervisor Operator,
        #       (3) Supervisor Viewer
        # 3. Employee 2 has Department Database Administrator
        # Result:
        # 1. Create successfully
        payslip_1 = self.obj_payslip.sudo(self.user_2).create(
            {
                "name": "Payslip 1",
                "employee_id": self.employee_2.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_1)

        # Condition 2:
        # 1. Employee 2 create a new payslip for Employee 5
        # 2. Employee 2 Manager of Department Database Administrator
        # 3. Employee 5 has Department Database Administrator
        # Result:
        # 1. Create Sucessfully
        check_manager_id = self.employee_5.parent_id.id

        self.assertIsNotNone(check_manager_id)
        self.assertEqual(check_manager_id, self.employee_2.id)

        payslip_2 = self.obj_payslip.sudo(self.user_2).create(
            {
                "name": "Payslip 2",
                "employee_id": self.employee_5.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )

        self.assertIsNotNone(payslip_2)

        # Condition 3:
        # 1. Employee 1 create a new payslip for himself
        # 2. Group  Employee 1:
        #       (1) Employee,
        #       (2) Payslip Security User Groups
        # 3. Employee 1 has Department Technology Information
        # Result:
        # 1. Create successfully
        payslip_3 = self.obj_payslip.sudo(self.user_1).create(
            {
                "name": "Payslip 3",
                "employee_id": self.employee_1.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_3)

        # Condition 4:
        # 1. Check Visibility data of Payslip for Employee 1
        # Result:
        # 1. Employee 1 can only see payslip under his management
        #    which is (1)payslip_1 and (2)payslip_2
        self.assertEqual(payslip_1.sudo(self.user_2).name, "Payslip 1")
        self.assertEqual(payslip_2.sudo(self.user_2).name, "Payslip 2")
        with self.assertRaises(except_orm):
            payslip_3.sudo(self.user_2).name

    def test_payslip_viewer_department(self):
        # Condition 1:
        # 1. Employee 4 create a new payslip for himself
        # 2. Group Employee 4:
        #       (1) Employee,
        #       (2) Department Operator,
        #       (3) Department Viewer
        # 3. Employee 4 has Department Human Resource
        # Result:
        # 1. Create successfully
        payslip_5 = self.obj_payslip.sudo(self.user_4).create(
            {
                "name": "Payslip 5",
                "employee_id": self.employee_4.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_5)

        # Condition 2:
        # 1. Employee 4 create a new payslip for Employee 7
        # 2. Employee 4 has Department Human Resource
        # 3. Employee 7 has Department Compensation and Evaluations
        # 4. Department Human Resource is a parent of
        #    Compensation and Evaluations
        # 5. Employee 4 is manager of department Compensation and Evaluations
        # 6. Group Employee 4:
        #       (1) Employee,
        #       (2) Department User
        # Result:
        # 1. Create Sucessfully
        self.dept_CAE.manager_id = self.employee_4.id
        check_manager_id = self.dept_CAE.manager_id.id

        self.assertIsNotNone(check_manager_id)
        self.assertEqual(check_manager_id, self.employee_4.id)

        payslip_6 = self.obj_payslip.sudo(self.user_4).create(
            {
                "name": "Payslip 6",
                "employee_id": self.employee_7.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )

        self.assertIsNotNone(payslip_6)

        # Condition 3:
        # 1. Employee 8 create a new payslip for himself
        # 2. Group Employee 8:
        #       (1) Employee,
        #       (2) Company User
        # 3. Employee 8 has Department Finance and Accounting
        # Result:
        # 1. Create successfully
        payslip_7 = self.obj_payslip.sudo(self.user_8).create(
            {
                "name": "Payslip 7",
                "employee_id": self.employee_8.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_7)

        # Condition 4:
        # 1. Check Visibility data of Payslip for Employee 4
        # Result:
        # 1. Employee 4 can only see payslip under his department
        #    which is (1)payslip_5 and (2)payslip_6
        self.assertEqual(payslip_5.sudo(self.user_4).name, "Payslip 5")
        self.assertEqual(payslip_6.sudo(self.user_4).name, "Payslip 6")
        with self.assertRaises(except_orm):
            payslip_7.sudo(self.user_4).name

    def test_payslip_viewer_company(self):
        # Condition 1:
        # 1. Employee 8 create a new payslip for himself
        # 2. Group Employee 8:
        #       (1) Employee,
        #       (2) Company User
        # 3. Employee 8 has Department Finance and Accounting
        # 4. Employee 8 has Main Company
        # Result:
        # 1. Create successfully
        payslip_8 = self.obj_payslip.sudo(self.user_8).create(
            {
                "name": "Payslip 8",
                "employee_id": self.employee_8.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_8)

        # Condition 2:
        # 1. Employee 8 create a new payslip for Employee 9
        # 2. Employee 8 has Department Finance and Accounting
        # 3. Employee 9 has Department Payroll Service
        # 4. Department Finance and Accounting is a parent of Payroll Service
        # 5. Group Employee 8:
        #       (1) Employee,
        #       (2) Company User
        # 6. Employee 8 has Main Company
        # Result:
        # 1. Create successfully
        payslip_9 = self.obj_payslip.sudo(self.user_8).create(
            {
                "name": "Payslip 9",
                "employee_id": self.employee_6.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )
        self.assertIsNotNone(payslip_9)

        # Condition 3:
        # 1. Employee 11 create a new payslip for himself
        # 2. Group Employee 11:
        #       (1) Employee,
        #       (2) Company User
        # 3. Employee 11 has Training and Development
        # 4. Employee 11 has Kawula Odoo Indonesia Company
        # Result:
        # 1. Create successfully
        payslip_10 = self.obj_payslip.create(
            {
                "name": "Payslip 10",
                "employee_id": self.employee_11.id,
                "date_from": self.date_from,
                "date_to": self.date_to,
            }
        )

        self.assertIsNotNone(payslip_10)

        # Condition 4:
        # 1. Check Visibility data of Payslip for Employee 8
        # Result:
        # 1. Employee 4 can only see payslip under his company
        #    which is (1)payslip_8 and (2)payslip_9
        self.assertEqual(payslip_8.sudo(self.user_8).name, "Payslip 8")
        self.assertEqual(payslip_9.sudo(self.user_8).name, "Payslip 9")
        with self.assertRaises(except_orm):
            payslip_10.sudo(self.user_8).name