public void TestPaySingleCommissionedEmployeeTwoPeriods()
        {
            int empId = 3;
            AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Bob", "Home", 1000m, 0.5m);

            t.Execute();
            DateTime payDate            = new DateTime(2020, 02, 21);
            SalesReceiptTransaction srt = new SalesReceiptTransaction(payDate, 100m, empId);

            srt.Execute();
            SalesReceiptTransaction srt2 = new SalesReceiptTransaction(payDate.AddDays(-13), 100m, empId);

            srt2.Execute();

            PaydayTransaction pt = new PaydayTransaction(payDate);

            pt.Execute();

            ValidatePaycheck(pt, empId, payDate, 1000m + 0.5m * 200m);


            payDate = new DateTime(2020, 03, 06);
            pt      = new PaydayTransaction(payDate);
            pt.Execute();

            ValidatePaycheck(pt, empId, payDate, 1000m);
        }
        public void TestSalesReceiptTransaction()
        {
            int empId = 6;
            AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Bill", "Home", 2500m, 3.5m);

            t.Execute();

            SalesReceiptTransaction srt = new SalesReceiptTransaction(new DateTime(2020, 02, 02), 500000m, empId);

            srt.Execute();

            Employee e = PayrollDatabase.GetEmployee(empId);

            Assert.That(e, Is.Not.Null);

            PaymentClassification pc = e.Classification;

            Assert.That(pc is CommissionedClassification, Is.True);
            CommissionedClassification cc = pc as CommissionedClassification;

            SalesReceipt sr = cc.GetSalesReceipt(new DateTime(2020, 02, 02));

            Assert.That(sr, Is.Not.Null);
            Assert.That(sr.Amount, Is.EqualTo(500000m));
        }