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)); }
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)); }
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); }
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); }
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); }
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); }
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>()); } }
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}"); }
public IActionResult NightlyCharge([FromBody] NightlyChargeArgs args) { var total = _calculator.Calculate(args); return(Ok(new TotalModel(total))); }