示例#1
0
    def test_calculate_daily_wage(self):
        """
        Test that the daily wage is correctly calculated
        
        Tests:
        -regular with perfect in out
        -regular day with slightly over in out
        -day with over time
        -sunday with no overtime
        -sunday with overtime
        """
        #Regular day with perfect in out
        a = Attendance(employee=self.employee,
                       start_time=datetime(2014, 7, 1, 8, 0),
                       end_time=datetime(2014, 7, 1, 17, 0))
        wage = self.employee._calculate_daily_wages(a)

        self.assertEqual(wage, 550)

        #Regular day with slightly imperfect in out
        a = Attendance(employee=self.employee,
                       start_time=datetime(2014, 7, 1, 8, 0),
                       end_time=datetime(2014, 7, 1, 17, 14))
        wage = self.employee._calculate_daily_wages(a)

        self.assertEqual(wage, 550)

        #Day with over time
        a = Attendance(employee=self.employee,
                       start_time=datetime(2014, 7, 1, 8, 0),
                       end_time=datetime(2014, 7, 1, 20, 0))
        self.assertEqual(a.total_time, 11)
        self.assertEqual(a.overtime, 3)
        self.assertEqual(a.regular_time, 8)
        wage = self.employee._calculate_daily_wages(a)

        self.assertEqual(wage, 859.375)

        #Sunday with no overtime
        a = Attendance(employee=self.employee,
                       start_time=datetime(2014, 7, 6, 8, 0),
                       end_time=datetime(2014, 7, 6, 17, 0))
        self.assertEqual(a.total_time, 8)
        self.assertEqual(a.overtime, 0)
        self.assertEqual(a.regular_time, 8)
        wage = self.employee._calculate_daily_wages(a)
        self.assertEqual(wage, 1100)

        #Sunday with over time
        a = Attendance(employee=self.employee,
                       start_time=datetime(2014, 7, 6, 8, 0),
                       end_time=datetime(2014, 7, 6, 20, 0))
        self.assertEqual(a.total_time, 11)
        self.assertEqual(a.overtime, 3)
        self.assertEqual(a.regular_time, 8)
        wage = self.employee._calculate_daily_wages(a)
        self.assertEqual(wage, 1718.75)
示例#2
0
    def setUp(self):
        """
        Set up the Testing clas:
        """
        super(AttendanceTest, self).setUp()

        #self.client.client.login(username='******', password='******')

        self.shift = Shift(start_time=time(8, 0), end_time=time(17, 0))
        self.shift.save()

        self.employee = Employee(shift=self.shift, **employee2_data)
        self.employee.save()

        # Regular attendance
        self.attendance = Attendance(
            date=date(2014, 7, 1),
            start_time=timezone('Asia/Bangkok').localize(
                datetime(2014, 7, 1, 7, 30, 0)),
            end_time=timezone('Asia/Bangkok').localize(
                datetime(2014, 7, 1, 23, 33, 0)),
            employee=self.employee,
            shift=self.shift)

        self.attendance.save()

        # Sunday attendance
        self.sunday_attendance = Attendance(
            date=date(2016, 2, 7),
            start_time=timezone('Asia/Bangkok').localize(
                datetime(2016, 2, 7, 8, 02, 0)),
            end_time=timezone('Asia/Bangkok').localize(
                datetime(2016, 2, 7, 23, 15, 0)),
            employee=self.employee,
            shift=self.shift)
        self.sunday_attendance.save()

        self.tz = timezone('Asia/Bangkok')
示例#3
0
    def test_end_time_property(self):
        """Test that the getter and setter for start time work properly
        """
        a = Attendance(employee=self.employee, date=date(2016, 3, 21))
        d1 = datetime(2016, 3, 21, 15, 29, 0)

        # Test start time without timezone
        a.end_time = d1
        self.assertEqual(a._end_time, self.tz.localize(d1))
        self.assertEqual(a.end_time, self.tz.localize(d1))

        # Test start time with timezone
        a.end_time = self.tz.localize(d1)
        self.assertEqual(a._end_time, self.tz.localize(d1))
        self.assertEqual(a.end_time, self.tz.localize(d1))
示例#4
0
    def setUp(self):
        """
        Set up the Testing class:
        
        -self.employee = salary worker
        -self.employee = daily worker
        -self.employee3 = daily worker with no legal status
        """
        super(Employee3Test, self).setUp()
        self.employee = Employee(**employee3_data)
        self.employee.save()

        for day in xrange(1, 15):
            hour = 20 if day % 2 > 0 else 17

            a = Attendance(employee=self.employee,
                           start_time=datetime(2014, 7, day, 8, 0),
                           end_time=datetime(2014, 7, day, hour, 0))
            a.save()