готово под локальное время
This commit is contained in:
+24
@@ -522,6 +522,30 @@ public sealed class ReminderServiceTests : IClassFixture<PostgresDatabaseFixture
|
||||
result.Value.ShouldBeEmpty();
|
||||
}
|
||||
|
||||
// Портал пишет дату приёма как МЕСТНУЮ полночь, переведённую в UTC, поэтому в
|
||||
// списке она лежит как 19:00Z предыдущего дня. Здесь 2026-06-14T19:00Z — это
|
||||
// 15 июня по местному календарю (см. LocalOffset в ReminderService): срок
|
||||
// истекает 15 августа, до него от Now (12 августа) ровно 3 дня.
|
||||
// Если считать по UTC, дата приёма превратилась бы в 14 июня, срок — в 14
|
||||
// августа, и осталось бы 2 дня: напоминание не построилось бы вовсе.
|
||||
[Fact(DisplayName = "Дата приёма считается по местному календарю, а не по UTC")]
|
||||
public async Task HireDate_IsReadInLocalTimeZone()
|
||||
{
|
||||
var (listUrl, pageUrl) = await CreateHireTypeAsync("Probation timezone");
|
||||
var rows = new[] { HireDataRow(1, "Закрыта", "Тимуров Тимур Тимурович", "2026-06-14T19:00:00Z", "2 месяца") };
|
||||
var portalClient = BuildPortalClientMock(
|
||||
"Тимуров Тимур Тимурович", dismissalDate: null, candidateEmail: "timurov@tnsu.kz", managerEmail: "manager@tnsu.kz");
|
||||
|
||||
var service = BuildProbationService(pageUrl, listUrl, rows, portalClient);
|
||||
var result = await service.GetProbationEndingAsync(Now, CancellationToken.None);
|
||||
|
||||
var reminder = result.Value.ShouldHaveSingleItem().ShouldBeOfType<ProbationEndingReminderDto>();
|
||||
reminder.DaysUntilProbationEnds.ShouldBe(3);
|
||||
// И дата приёма, и конец срока отдаются в том же местном календаре.
|
||||
reminder.HireDate.Date.ShouldBe(new DateTime(2026, 6, 15));
|
||||
reminder.ProbationEndsAt.Date.ShouldBe(new DateTime(2026, 8, 15));
|
||||
}
|
||||
|
||||
// Испытательный срок не бывает длиннее 6 месяцев (см. ProbationMonthsByOption
|
||||
// в ReminderService), поэтому заявка, способная дать напоминание сегодня,
|
||||
// физически не может лежать раньше предпоследней партиции. Три партиции:
|
||||
|
||||
Reference in New Issue
Block a user