using System.Threading.Tasks; using MediatR; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using ReC.Application.Common.Procedures.DeleteProcedure; using ReC.Application.Common.Procedures.InsertProcedure; using ReC.Application.Common.Procedures.UpdateProcedure; using ReC.Application.Endpoints.Commands; using ReC.Tests.Application; namespace ReC.Tests.Application.Endpoints; [TestFixture] public class EndpointProcedureTests : RecApplicationTestBase { private (ISender Sender, IServiceScope Scope) CreateScopedSender() { var scope = ServiceProvider.CreateScope(); var sender = scope.ServiceProvider.GetRequiredService(); return (sender, scope); } [Test] public async Task InsertEndpointProcedure_runs_via_mediator() { var procedure = new InsertEndpointProcedure { Active = true, Description = "desc", Uri = "http://example" }; var objectProc = procedure.ToObjectProcedure("ReC.Tests"); var (sender, scope) = CreateScopedSender(); using var _ = scope; var result = await sender.Send(objectProc); Assert.That(result, Is.GreaterThan(0)); } [Test] public async Task UpdateEndpointProcedure_runs_via_mediator() { var procedure = new UpdateEndpointProcedure { Active = false, Description = "updated", Uri = "http://updated" }; var objectProc = procedure.ToObjectProcedure(12, "ReC.Tests"); var (sender, scope) = CreateScopedSender(); using var _ = scope; var result = await sender.Send(objectProc); Assert.That(result, Is.EqualTo(0)); } [Test] public async Task DeleteEndpointProcedure_runs_via_mediator() { var procedure = new DeleteEndpointProcedure { Start = 1, End = 2, Force = true }; var objectProc = procedure.ToObjectProcedure(); var (sender, scope) = CreateScopedSender(); using var _ = scope; var result = await sender.Send(objectProc); Assert.That(result, Is.EqualTo(0)); } }