Example #1
0
        public void ShouldThrowInvalidOperationWhenLeavetimeIsAfter400Hours()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 17, 0, 0),
                new LocalDateTime(1, 1, 1, 9, 0, 0),
                new LocalDateTime(1, 1, 2, 4, 1, 0));

            Assert.Throws <InvalidOperationException>(() => _calculator.Calculate(parameters));
        }
Example #2
0
        public void ShouldThrowInvalidOperationWhenArrivalIsBefore1700Hours()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 16, 59),
                new LocalDateTime(1, 1, 1, 0, 0),
                new LocalDateTime(1, 1, 1, 0, 0));

            Assert.Throws <InvalidOperationException>(() => _calculator.Calculate(parameters));
        }
Example #3
0
        public void ShouldCalculateChargeForTimeBetweenBedtimeAndMidnight()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 21, 0),
                new LocalDateTime(1, 1, 1, 21, 0),
                new LocalDateTime(1, 1, 2, 0, 0));

            var chargeAmount = _calculator.Calculate(parameters);

            Assert.Equal(24, chargeAmount);
        }
Example #4
0
        public void ShouldCalculateChargeForThreeHoursAtNormalRate()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 17, 0),
                new LocalDateTime(1, 1, 1, 23, 0),
                new LocalDateTime(1, 1, 1, 20, 0));

            var chargeAmount = _calculator.Calculate(parameters);

            Assert.Equal(36, chargeAmount);
        }
Example #5
0
        public void ShouldCalculateChargeForFullHoursNoPartialHours()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 17, 0),
                new LocalDateTime(1, 1, 1, 21, 0),
                new LocalDateTime(1, 1, 1, 19, 45));

            var chargeAmount = _calculator.Calculate(parameters);

            Assert.Equal(36, chargeAmount);
        }
Example #6
0
        public void ShouldCalculateChargeForFullHourOfBedtime()
        {
            var parameters = new NightlyChargeArgs(
                new LocalDateTime(1, 1, 1, 17, 45),
                new LocalDateTime(1, 1, 1, 21, 30),
                new LocalDateTime(1, 1, 1, 22, 45));

            var chargeAmount = _calculator.Calculate(parameters);

            Assert.Equal(68, chargeAmount);
        }
Example #7
0
        public async Task <TotalModel> CalculateNightlyCharge(
            LocalDateTime startTime,
            LocalDateTime bedtime,
            LocalDateTime leaveTime)
        {
            using (var client = CreateClient())
            {
                var args     = new NightlyChargeArgs(startTime, bedtime, leaveTime);
                var response = await client.PostJsonAsync("babysitters/nightlycharge", args);

                return(await response.ReadAsJsonAsync <TotalModel>());
            }
        }
Example #8
0
        private void CalculateTotal()
        {
            _output.WriteLine("Please enter start time:");
            var startTime = _input.ReadLine().ToLocalDateTime();

            _output.WriteLine("Please enter leave time:");
            var leaveTimeText = _input.ReadLine();
            var leaveTime     = leaveTimeText.ToLowerInvariant().Contains("am")
                ? leaveTimeText.ToLocalDateTime().PlusDays(1)
                : leaveTimeText.ToLocalDateTime();

            _output.WriteLine("Please enter bedtime:");
            var bedTime = _input.ReadLine().ToLocalDateTime();

            var parameters = new NightlyChargeArgs(startTime, bedTime, leaveTime);
            var total      = _calculator.Calculate(parameters);

            _output.WriteLine($"Total: ${total}");
        }
Example #9
0
        public IActionResult NightlyCharge([FromBody] NightlyChargeArgs args)
        {
            var total = _calculator.Calculate(args);

            return(Ok(new TotalModel(total)));
        }