Skip to content

Commit db9be3d

Browse files
committed
Fix CronExpression tests - use explicit UTC timezone to avoid DST issues
1 parent 6397200 commit db9be3d

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

tests/MassTransit.Tests/CronExpressionTests.cs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -123,25 +123,27 @@ int[] CreateArrayOfDays(int year, int month)
123123
"10:15am 1-6th of mon and every Mon,Thu,Fri October 2010")]
124124
[TestCase("0 15 10 * * MON,THU,FRI 2010",
125125
new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
126-
"10:15am EveryDay of Month October 2010, Wildcard specified")]
126+
"10:15am EveryDay of Month October 2010, Wildcard day-of-month means all days")]
127127
[TestCase("0 15 10 1 * * 2010", new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
128-
"10:15am Every Day of Month October 2010, Wildcard specified")]
128+
"10:15am Every Day of Month October 2010, Wildcard day-of-week means all days")]
129129
public void CanUse_DayOfMonth_And_DayOfWeek_Together(string cronExpression, int[] expectedDays, string scenario = "")
130130
{
131-
var expr = new CronExpression(cronExpression);
132-
var templateDate = new DateTime(2010, 10, 1, 10, 15, 0).ToUniversalTime();
131+
var expr = new CronExpression(cronExpression) { TimeZone = TimeZoneInfo.Utc };
132+
// Use UTC directly to avoid DST conversion issues
133+
const int hour = 10;
134+
const int minute = 15;
133135

134136
foreach (var day in expectedDays)
135137
{
136-
var date = new DateTime(templateDate.Year, templateDate.Month, day, templateDate.Hour, templateDate.Minute, templateDate.Second, templateDate.Kind);
138+
var date = new DateTime(2010, 10, day, hour, minute, 0, DateTimeKind.Utc);
137139
Assert.That(expr.IsSatisfiedBy(date), Is.True, $"expected day of {day}, {scenario}");
138140
}
139141

140142
IEnumerable<int> invalidDays = CreateArrayOfDays(2010, 10).Except(expectedDays);
141143

142144
foreach (var day in invalidDays)
143145
{
144-
var date = new DateTime(templateDate.Year, templateDate.Month, day, templateDate.Hour, templateDate.Minute, templateDate.Second, templateDate.Kind);
146+
var date = new DateTime(2010, 10, day, hour, minute, 0, DateTimeKind.Utc);
145147
Assert.That(expr.IsSatisfiedBy(date), Is.False, $"invalid day of {day}, {scenario}");
146148
}
147149
}
@@ -837,21 +839,20 @@ public void CanGetExpressionSummary()
837839
{
838840
var expression = new CronExpression("0 15 15 5 11 ?");
839841
var sut = expression.GetExpressionSummary();
840-
Assert.That(sut, Is.EqualTo(
841-
@"seconds: 0
842-
minutes: 15
843-
hours: 15
844-
daysOfMonth: 5
845-
months: 11
846-
daysOfWeek: ?
847-
lastdayOfWeek: False
848-
nearestWeekday: False
849-
NthDayOfWeek: 0
850-
lastdayOfMonth: False
851-
calendardayOfWeek: False
852-
calendardayOfMonth: False
853-
years: *
854-
"));
842+
var expected = "seconds: 0\n" +
843+
"minutes: 15\n" +
844+
"hours: 15\n" +
845+
"daysOfMonth: 5\n" +
846+
"months: 11\n" +
847+
"daysOfWeek: ?\n" +
848+
"lastdayOfWeek: False\n" +
849+
"nearestWeekday: False\n" +
850+
"NthDayOfWeek: 0\n" +
851+
"lastdayOfMonth: False\n" +
852+
"calendardayOfWeek: False\n" +
853+
"calendardayOfMonth: False\n" +
854+
"years: *\n";
855+
Assert.That(sut, Is.EqualTo(expected));
855856
}
856857

857858
[TestCase("OCT", 10)]

0 commit comments

Comments
 (0)