def test_not_paying_a_salaried_employee_on_wrong_date(): db = MemoryDB() t = AddSalariedEmployee("Bill", "Home", 1000.0, db) empId = t.execute() pay_date = datetime.date(2001, 11, 29) pt = Payday(pay_date, db) pt.execute() try: pt.get_paycheck(empId) raise "paycheck found on wrong date" except KeyError: pass
def test_paying_a_single_salaried_employee(): db = MemoryDB() t = AddSalariedEmployee("Bill", "Home", 1000.0, db) empId = t.execute() pay_date = datetime.date(2001, 11, 30) pt = Payday(pay_date, db) pt.execute() pc = pt.get_paycheck(empId) assert pc.pay_date == datetime.date(2001, 11, 30) assert pc.gross_pay == 1000.0 assert pc.deductions == 0 assert pc.net_pay == 1000.0 assert pc.disposition == "Hold"
def test_adding_an_employee_paid_by_salary(): db = MemoryDB() t = AddSalariedEmployee("Jim", "Work", 2000.0, db) empId = t.execute() e = db.get_employee(empId) assert e.name, "Jim" assert e.address, "Work" pc = e.classification assert isinstance(pc, SalariedClassification) assert pc.salary == 2000.0 ps = e.schedule assert isinstance(ps, MonthlySchedule) pm = e.method assert isinstance(pm, HoldMethod)
def test_add_salaried_employee(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() employee = g_payroll_database.get_employee(emp_id) self.assertEqual('Bob', employee.get_name()) self.assertEqual('Home', employee.get_address()) classification = employee.get_classification() self.assertEqual(1000.00, classification.get_salary()) self.assertIsInstance(classification, SalariedClassification) self.assertIsInstance(employee.get_schedule(), MonthlySchedule) self.assertIsInstance(employee.get_method(), HoldMethod)
def test_pay_single_salaried_employee_on_wrong_date(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() pay_date = date(2001, 11, 29) transaction = PaydayTransaction(pay_date) transaction.execute() self.assertFalse(transaction.get_paycheck(emp_id))
def test_adding_a_service_charge_to_a_member(): db = MemoryDB() empId = AddSalariedEmployee("Bill", "Home", 1000, db).execute() e = db.get_employee(empId) ChangeUnionMember(empId, 10.0, db).execute() sct = AddServiceCharge(e.memberId, date.today(), 12.95, db) sct.execute() sc = e.affiliation.get_service_charge(date.today()) assert sc.charge == 12.95 assert sc.date == date.today()
def test_pay_single_salaried_employee(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() pay_date = date(2001, 11, 30) transaction = PaydayTransaction(pay_date) transaction.execute() self.validate_paycheck(transaction, emp_id, pay_date, 1000.00)
def test_change_hold_transaction(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() transaction = ChangeHoldTransaction(emp_id, address='test address') transaction.execute() method = g_payroll_database.get_employee(emp_id).get_method() self.assertIsInstance(method, HoldMethod) self.assertEqual('test address', method.get_address())
def test_changing_an_address_of_an_employee(): db = MemoryDB() empId = AddSalariedEmployee("Bohn", "wrong", 1500, db).execute() cs = ChangeHourly(empId, 12.25, db) cs.execute() e = db.get_employee(empId) pc = e.classification assert isinstance(pc, HourlyClassification) assert pc.hourly_rate == 12.25 ps = e.schedule assert isinstance(ps, WeeklySchedule)
def test_change_direct_transaction(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() transaction = ChangeDirectTransaction(emp_id, bank='VTB', account=1234123412341234) transaction.execute() method = g_payroll_database.get_employee(emp_id).get_method() self.assertIsInstance(method, DirectMethod) self.assertEqual('VTB', method.get_bank()) self.assertEqual(1234123412341234, method.get_account())
def test_change_commissioned_transaction(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() transaction = ChangeCommissionedTransaction(emp_id, salary=2500, commission_rate=3.2) transaction.execute() employee = g_payroll_database.get_employee(emp_id) classification = employee.get_classification() self.assertIsInstance(classification, CommissionedClassification) self.assertEqual(2500, classification.get_salary()) self.assertEqual(3.2, classification.get_commission_rate()) self.assertIsInstance(employee.get_schedule(), BiweeklySchedule)
def test_salaried_union_member_dues(self): emp_id = EmpId(1) transaction = AddSalariedEmployee(emp_id, 'Bob', 'Home', salary=1000.00) transaction.execute() member_id = MemberId(7734) transaction = ChangeMemberTransaction(emp_id, member_id, dues=9.42) transaction.execute() pay_date = date(2001, 11, 30) transaction = PaydayTransaction(pay_date) transaction.execute() paycheck = transaction.get_paycheck(emp_id) self.assertEqual(pay_date, paycheck.get_pay_date()) self.assertEqual(1000, paycheck.get_gross_pay()) self.assertEqual('Hold', paycheck.get_field('Disposition')) self.assertEqual(5 * 9.42, paycheck.get_deductions()) self.assertEqual(1000 - 5 * 9.42, paycheck.get_net_pay())