Reminders: убрать Category из общей части DTO, добавить ReceiverEmail/ReceiverName, ограничить чтение испытательного срока последними партициями
- ReminderDto: базовый класс сузился до ReceiverEmail/ReceiverName/Url; RequestTypeId/RequestTypeName/RequestId/Status/RequestUniqueCode остались только в ApprovalOverdueReminderDto — ProbationEndingReminderDto они не нужны. Дискриминатор полиморфной сериализации ($type) больше не дублируется отдельным enum-полем Category. - ApprovalOverdueReminderDto: старый Email сохранён рядом с унаследованным ReceiverEmail (то же значение) — контракт можно переключать постепенно. - ApprovalRow/RowSelect: добавлен Title согласующего (TansuSiteApprover/Title) — заполняет ReceiverName для просроченных шагов, когда он есть в SharePoint. - EmployeeDirectorySnapshot.NameByEmail: обратный поиск ФИО руководителя по email — заполняет ReceiverName для напоминаний об испытательном сроке без лишнего похода в api.tnsu.kz (данные уже загружены для EmailOf). - GetProbationEndingAsync: испытательный срок не длиннее 6 месяцев, поэтому читаем только текущую и последнюю архивную партицию (не весь архив) и фильтруем строки по HireDate не старше 6 месяцев — экономим лишние запросы к SharePoint без потери актуальных заявок.
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
using Shouldly;
|
||||
using Tnsu.ApprovalRoute.Application.Reminders;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.IntegrationTests.ApplicationServices;
|
||||
|
||||
/// <summary>
|
||||
/// ApprovalOverdueReminderDto должен отдавать email получателя под двумя именами
|
||||
/// сразу: старым Email (для потребителей, ещё не перешедших на новый контракт) и
|
||||
/// унаследованным ReceiverEmail (общим для обоих видов напоминаний, см.
|
||||
/// ReminderDto) — так переход на новый контракт можно делать постепенно, не
|
||||
/// ломая существующие Power Automate-флоу разом.
|
||||
/// </summary>
|
||||
public sealed class ReminderDtoTests
|
||||
{
|
||||
[Fact(DisplayName = "ApprovalOverdueReminderDto: Email и унаследованный ReceiverEmail — одно и то же значение")]
|
||||
public void ApprovalOverdue_EmailAndReceiverEmail_AreTheSameValue()
|
||||
{
|
||||
var dto = new ApprovalOverdueReminderDto(
|
||||
Email: "approver@tnsu.kz",
|
||||
HoursOverdue: 5,
|
||||
AskOverdueReason: false,
|
||||
RequestTypeId: 1,
|
||||
RequestTypeName: "Тип",
|
||||
RequestId: 10,
|
||||
Status: "На согласовании",
|
||||
RequestUniqueCode: "code",
|
||||
Url: "https://tnsukz.sharepoint.com/sites/requests");
|
||||
|
||||
dto.Email.ShouldBe("approver@tnsu.kz");
|
||||
dto.ReceiverEmail.ShouldBe(dto.Email);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user