using System.Linq; using System.Threading.Tasks; using DigitalData.Core.Exceptions; using MediatR; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using ReC.Application.RecActions.Queries; using ReC.Tests.Application; namespace ReC.Tests.Application.RecActions; [TestFixture] public class RecActionQueryTests : RecApplicationTestBase { private (ISender Sender, IServiceScope Scope) CreateScopedSender() { var scope = ServiceProvider.CreateScope(); var sender = scope.ServiceProvider.GetRequiredService(); return (sender, scope); } [Test] public async Task ReadRecActionViewQuery_returns_actions_for_profile() { var profileId = Configuration.GetValue("FakeProfileId"); Assert.That(profileId, Is.Not.Null.And.GreaterThan(0), "FakeProfileId must be configured in appsettings.json"); var (sender, scope) = CreateScopedSender(); using var _ = scope; var actions = await sender.Send(new ReadRecActionViewQuery { ProfileId = profileId }); Assert.That(actions, Is.Not.Empty); Assert.That(actions.All(a => a.ProfileId == profileId)); } [Test] public void ReadRecActionViewQuery_with_unknown_profile_throws_not_found() { var (sender, scope) = CreateScopedSender(); using var _ = scope; var invalidProfileId = long.MaxValue; Assert.ThrowsAsync(async () => await sender.Send(new ReadRecActionViewQuery { ProfileId = invalidProfileId })); } }