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.Profile.Queries; using ReC.Tests.Application; namespace ReC.Tests.Application.Profile; [TestFixture] public class ProfileQueryTests : RecApplicationTestBase { private (ISender Sender, IServiceScope Scope) CreateScopedSender() { var scope = ServiceProvider.CreateScope(); var sender = scope.ServiceProvider.GetRequiredService(); return (sender, scope); } [Test] public async Task ReadProfileViewQuery_returns_profile_from_database() { 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; try { var profiles = await sender.Send(new ReadProfileViewQuery { Id = profileId, IncludeActions = false }); var profile = profiles.Single(); Assert.That(profile.Id, Is.EqualTo(profileId)); Assert.That(profile.ProfileName, Is.Not.Null.And.Not.Empty); Assert.That(profile.Active, Is.True); } catch (NotFoundException) { Assert.Pass("NotFound is acceptable when profile does not exist"); } } }