@Test public void testMileage() throws Exception { Appointment app = new Appointment(null) .setStart(DateTime.now()) .setNurse(new Nurse(null).setMileageRate(.5)) .setPatient(new Patient(null).setVendor(new Vendor(null).setMileageRate(.4))); // If we set no mileage there should be no mileage. assertEquals(0, app.getMileage(), .0001); assertEquals(0, app.getPayMileage(), .0001); assertEquals(0, app.getBillingMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); // Setting the Driven Miles less than 20 will result in the pay/billable being zero app.setMileageD(10); assertEquals(10, app.getMileage(), .0001); assertEquals(0, app.getPayMileage(), .0001); assertEquals(0, app.getBillingMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); // Setting the Driven Miles greater than 20 will result in the pay/billable being (driven - 20) app.setMileageD(25); assertEquals(25, app.getMileage(), .0001); assertEquals(5, app.getPayMileage(), .0001); assertEquals(5, app.getBillingMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); // Setting the billable miles will override the payable miles if not set. app.setBillingMileageD(20); assertEquals(25, app.getMileage(), .0001); assertEquals(20, app.getBillingMileage(), .0001); assertEquals(20, app.getPayMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); // Setting the payable miles will override the billable miles if not set. app.setBillingMileageD(-1); app.setPayMileageD(15); assertEquals(25, app.getMileage(), .0001); assertEquals(15, app.getBillingMileage(), .0001); assertEquals(15, app.getPayMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); // You can zero out pay and billable if you like. app.setBillingMileageD(0); app.setPayMileageD(0); assertEquals(25, app.getMileage(), .0001); assertEquals(0, app.getBillingMileage(), .0001); assertEquals(0, app.getPayMileage(), .0001); assertEquals(.5, app.getPayMileageRate(), .0001); assertEquals(.4, app.getBillingMileageRate(), .0001); }
@Test public void testMileageMultiAppointment() throws Exception { Nurse nurse = new Nurse(null).setMileageRate(.5); Appointment app1 = new Appointment(null) .setStart(DateTime.parse("2014-08-09T07:00:00")) .setNurse(nurse) .setPatient(new Patient(null).setVendor(new Vendor(null).setMileageRate(.4))); Appointment app2 = new Appointment(null) .setStart(DateTime.parse("2014-08-10T10:15:00")) .setNurse(nurse) .setPatient(new Patient(null).setVendor(new Vendor(null).setMileageRate(.4))); Appointment app3 = new Appointment(null) .setStart(DateTime.parse("2014-08-09T10:15:00")) .setNurse(nurse) .setPatient(new Patient(null).setVendor(new Vendor(null).setMileageRate(.4))); nurse.addAppointment(app1).addAppointment(app2).addAppointment(app3); assertNull(app1.getPrevSameNurseDayApp()); assertNull(app2.getPrevSameNurseDayApp()); assertEquals(app1, app3.getPrevSameNurseDayApp()); // If we set no mileage there should be no mileage. assertEquals(0, app1.getMileage(), .0001); assertEquals(0, app1.getPayMileage(), .0001); assertEquals(20, app1.getSelfPaidMileage(), .0001); assertEquals(0, app2.getMileage(), .0001); assertEquals(0, app2.getPayMileage(), .0001); assertEquals(20, app2.getSelfPaidMileage(), .0001); assertEquals(0, app3.getMileage(), .0001); assertEquals(0, app3.getPayMileage(), .0001); assertEquals(20, app3.getSelfPaidMileage(), .0001); app1.setMileageD(10); app3.setMileageD(5); assertEquals(10, app1.getMileage(), .0001); assertEquals(0, app1.getPayMileage(), .0001); assertEquals(20, app1.getSelfPaidMileage(), .0001); // Setting mileage on app1 should have no effect on app2 assertEquals(0, app2.getMileage(), .0001); assertEquals(0, app2.getPayMileage(), .0001); assertEquals(20, app2.getSelfPaidMileage(), .0001); // The self paid mileage of app3 should be lowered app1 mileage assertEquals(5, app3.getMileage(), .0001); assertEquals(0, app3.getPayMileage(), .0001); assertEquals(10, app3.getSelfPaidMileage(), .0001); app1.setMileageD(30); assertEquals(30, app1.getMileage(), .0001); assertEquals(10, app1.getPayMileage(), .0001); assertEquals(20, app1.getSelfPaidMileage(), .0001); // Setting mileage on app1 should have no effect on app2 assertEquals(0, app2.getMileage(), .0001); assertEquals(0, app2.getPayMileage(), .0001); assertEquals(20, app2.getSelfPaidMileage(), .0001); // The self paid mileage of app3 should be lowered app1 mileage assertEquals(5, app3.getMileage(), .0001); assertEquals(5, app3.getPayMileage(), .0001); assertEquals(0, app3.getSelfPaidMileage(), .0001); app1.setMileageD(18); assertEquals(18, app1.getMileage(), .0001); assertEquals(0, app1.getPayMileage(), .0001); assertEquals(20, app1.getSelfPaidMileage(), .0001); // Setting mileage on app1 should have no effect on app2 assertEquals(0, app2.getMileage(), .0001); assertEquals(0, app2.getPayMileage(), .0001); assertEquals(20, app2.getSelfPaidMileage(), .0001); // The self paid mileage of app3 should be lowered app1 mileage assertEquals(5, app3.getMileage(), .0001); assertEquals(3, app3.getPayMileage(), .0001); assertEquals(2, app3.getSelfPaidMileage(), .0001); }