public void GetCharge_NoBedtimeWithTimePastMidnight()
        {
            // Arrange with a checkin of 6PM, checkout of 1AM, and no bedtime set
            BabysitterTime babysitterTime = new BabysitterTime();

            babysitterTime.CheckIn  = DateTime.Today.AddHours(18);
            babysitterTime.CheckOut = DateTime.Today.AddHours(1);

            TimeCalcController controller = new TimeCalcController();
            var result = controller.GetNightlyCharge(babysitterTime);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(88.0M, result);
        }
        public void GetCharge_CheckInTooEarlyWithBedTime()
        {
            // Arrange with a checkin of 4PM, checkout of 12AM, and a bedtime of 9PM
            BabysitterTime babysitterTime = new BabysitterTime();

            babysitterTime.CheckIn  = DateTime.Today.AddHours(16);
            babysitterTime.CheckOut = DateTime.Today.AddHours(0);
            babysitterTime.Bedtime  = DateTime.Today.AddHours(21);

            TimeCalcController controller = new TimeCalcController();
            var result = controller.GetNightlyCharge(babysitterTime);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(72.0M, result);
        }
        public void GetCharge_WithBedtimeNoTimePastMidnight()
        {
            // Arrange with a checkin of 6PM, checkout of 11PM, and a bedtime of 9PM
            BabysitterTime babysitterTime = new BabysitterTime();

            babysitterTime.CheckIn  = DateTime.Today.AddHours(18);
            babysitterTime.CheckOut = DateTime.Today.AddHours(23);
            babysitterTime.Bedtime  = DateTime.Today.AddHours(21);

            TimeCalcController controller = new TimeCalcController();
            var result = controller.GetNightlyCharge(babysitterTime);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(52.0M, result);
        }
        public void GetCharge_WithUninitializedCheckOut()
        {
            // Arrange with a checkin 6PM, checkout not initialized, and a bedtime of 9PM
            BabysitterTime babysitterTime = new BabysitterTime();

            babysitterTime.CheckIn = new DateTime();
            babysitterTime.Bedtime = new DateTime();
            babysitterTime.CheckIn.AddHours(18);
            babysitterTime.Bedtime.AddHours(21);

            TimeCalcController controller = new TimeCalcController();

            try
            {
                var result = controller.GetNightlyCharge(babysitterTime);
            }
            catch (HttpResponseException ex)
            {
                // Assert
                Assert.AreEqual(ex.Response.StatusCode, HttpStatusCode.BadRequest);
            }
        }