* Initial plan * Fix timezone offset calculation and add tests Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: clayschaad <11883505+clayschaad@users.noreply.github.com>
91 lines
No EOL
3.5 KiB
C#
91 lines
No EOL
3.5 KiB
C#
using ShiftScheduler.Shared;
|
|
using Shouldly;
|
|
|
|
namespace ShiftScheduler.Services.Tests;
|
|
|
|
public class ConfigurationServiceTests
|
|
{
|
|
[Fact]
|
|
public void ParseShiftTimes_WithMorningAndAfternoon_ShouldReturnValid()
|
|
{
|
|
var applicationConfig = new ApplicationConfiguration();
|
|
var configurationService = new ConfigurationService(applicationConfig);
|
|
var shift = new Shift
|
|
{
|
|
MorningTime = "06:00-12:30",
|
|
AfternoonTime = "13:00-17:30"
|
|
};
|
|
|
|
var shiftTimes = configurationService.ParseShiftTimes(DateTime.Parse("2025-07-13T13:00:00"), shift);
|
|
shiftTimes.MorningStart.ShouldBe(T("2025-07-13T06:00:00+02:00"));
|
|
shiftTimes.MorningEnd.ShouldBe(T("2025-07-13T12:30:00+02:00"));
|
|
shiftTimes.AfternoonStart.ShouldBe(T("2025-07-13T13:00:00+02:00"));
|
|
shiftTimes.AfternoonEnd.ShouldBe(T("2025-07-13T17:30:00+02:00"));
|
|
}
|
|
|
|
[Fact]
|
|
public void ParseShiftTimes_WithMorning_ShouldReturnValid()
|
|
{
|
|
var applicationConfig = new ApplicationConfiguration();
|
|
var configurationService = new ConfigurationService(applicationConfig);
|
|
var shift = new Shift
|
|
{
|
|
MorningTime = "06:00-12:30"
|
|
};
|
|
|
|
var shiftTimes = configurationService.ParseShiftTimes(DateTime.Parse("2025-07-13T13:00:00"), shift);
|
|
shiftTimes.MorningStart.ShouldBe(T("2025-07-13T06:00:00+02:00"));
|
|
shiftTimes.MorningEnd.ShouldBe(T("2025-07-13T12:30:00+02:00"));
|
|
shiftTimes.AfternoonStart.ShouldBeNull();
|
|
shiftTimes.AfternoonEnd.ShouldBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public void ParseShiftTimes_WithWinterDate_ShouldUseCorrectOffset()
|
|
{
|
|
var applicationConfig = new ApplicationConfiguration();
|
|
var configurationService = new ConfigurationService(applicationConfig);
|
|
var shift = new Shift
|
|
{
|
|
MorningTime = "06:00-12:30",
|
|
AfternoonTime = "13:00-17:30"
|
|
};
|
|
|
|
var shiftTimes = configurationService.ParseShiftTimes(DateTime.Parse("2025-11-15T13:00:00"), shift);
|
|
shiftTimes.MorningStart.ShouldBe(T("2025-11-15T06:00:00+01:00"));
|
|
shiftTimes.MorningEnd.ShouldBe(T("2025-11-15T12:30:00+01:00"));
|
|
shiftTimes.AfternoonStart.ShouldBe(T("2025-11-15T13:00:00+01:00"));
|
|
shiftTimes.AfternoonEnd.ShouldBe(T("2025-11-15T17:30:00+01:00"));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetZurichTime_WithSummerDate_ShouldUseCorrectOffset()
|
|
{
|
|
var applicationConfig = new ApplicationConfiguration();
|
|
var configurationService = new ConfigurationService(applicationConfig);
|
|
var date = DateOnly.Parse("2025-07-13");
|
|
var timeRange = "06:00-12:30";
|
|
|
|
var (startTime, endTime) = configurationService.GetZurichTime(date, timeRange);
|
|
startTime.ShouldBe(T("2025-07-13T06:00:00+02:00"));
|
|
endTime.ShouldBe(T("2025-07-13T12:30:00+02:00"));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetZurichTime_WithWinterDate_ShouldUseCorrectOffset()
|
|
{
|
|
var applicationConfig = new ApplicationConfiguration();
|
|
var configurationService = new ConfigurationService(applicationConfig);
|
|
var date = DateOnly.Parse("2025-11-15");
|
|
var timeRange = "06:00-12:30";
|
|
|
|
var (startTime, endTime) = configurationService.GetZurichTime(date, timeRange);
|
|
startTime.ShouldBe(T("2025-11-15T06:00:00+01:00"));
|
|
endTime.ShouldBe(T("2025-11-15T12:30:00+01:00"));
|
|
}
|
|
|
|
private DateTimeOffset T(string dateTimeString)
|
|
{
|
|
return DateTimeOffset.Parse(dateTimeString);
|
|
}
|
|
} |