using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Persistence.Client; using Persistence.Client.Clients; using Persistence.Client.Clients.Interfaces; using Persistence.Database.Entity; using Persistence.Models; using Xunit; namespace Persistence.IntegrationTests.Controllers { public class DataSourceSystemControllerTest : BaseIntegrationTest { private static readonly string SystemCacheKey = $"{typeof(Database.Entity.DataSourceSystem).FullName}CacheKey"; private readonly IDataSourceSystemClient dataSourceSystemClient; private readonly IMemoryCache memoryCache; public DataSourceSystemControllerTest(WebAppFactoryFixture factory) : base(factory) { var scope = factory.Services.CreateScope(); var persistenceClientFactory = scope.ServiceProvider .GetRequiredService(); dataSourceSystemClient = persistenceClientFactory.GetDataSourceSystemClient(); memoryCache = scope.ServiceProvider.GetRequiredService(); } [Fact] public async Task Get_returns_success() { //arrange memoryCache.Remove(SystemCacheKey); dbContext.CleanupDbSet(); //act var response = await dataSourceSystemClient.Get(CancellationToken.None); //assert Assert.NotNull(response); Assert.Empty(response); } [Fact] public async Task Get_AfterSave_returns_success() { //arrange await Add(); //act var response = await dataSourceSystemClient.Get(CancellationToken.None); //assert Assert.NotNull(response); var expectedSystemCount = 1; var actualSystemCount = response!.Count(); Assert.Equal(expectedSystemCount, actualSystemCount); } [Fact] public async Task Add_returns_success() { await Add(); } private async Task Add() { //arrange memoryCache.Remove(SystemCacheKey); dbContext.CleanupDbSet(); var dto = new DataSourceSystemDto() { SystemId = Guid.NewGuid(), Name = "Test", Description = "Test" }; //act await dataSourceSystemClient.Add(dto, CancellationToken.None); } } }