using FluentAssertions; using Microsoft.Extensions.Logging; using Moq; using ServerlessTestSamples.Core.Queries; using ServerlessTestSamples.Core.Services; namespace ServerlessTestSamples.UnitTest; public class MockBusinessLogicTests { private ILogger Logger { get; } = Mock.Of>(); [Fact] public async Task TestCoreBusinessLogic_With_SuccessfulResponse_Should_ReturnStorageAreas() { // arrange var storage = new Mock(); storage.Setup(ss => ss.ListStorageAreas(It.IsAny(), It.IsAny())) .ReturnsAsync(new ListStorageAreasResult( new List() { "bucket1", "bucket2", "bucket3", })); var handler = new ListStorageAreasQueryHandler(storage.Object, Logger); // act var result = await handler.Handle(new() { FilterPrefix = string.Empty }, default); // assert result.Should().BeEquivalentTo(new ListStorageAreasQueryResult(new[] { "bucket1", "bucket2", "bucket3" })); } [Fact] public async Task TestCoreBusinessLogic_With_ErrorStorageResponse_Should_ReturnEmptyList() { // arrange var storage = new Mock(); storage.Setup(p => p.ListStorageAreas(It.IsAny(), It.IsAny())) .ReturnsAsync(() => new ListStorageAreasResult(Enumerable.Empty(), false, "Failure retrieving storage data")); var handler = new ListStorageAreasQueryHandler(storage.Object, Logger); // act var result = await handler.Handle(new() { FilterPrefix = string.Empty }, default); // assert result.Should().BeEquivalentTo(new ListStorageAreasQueryResult(Enumerable.Empty())); } [Fact] public async Task TestCoreBusinessLogic_With_StorageServiceException_Should_ReturnEmptyList() { // arrange var storage = new Mock(); storage.Setup(p => p.ListStorageAreas(It.IsAny(), It.IsAny())) .ThrowsAsync(new Exception()); var handler = new ListStorageAreasQueryHandler(storage.Object, Logger); // act var result = await handler.Handle(new() { FilterPrefix = string.Empty }, default); // assert result.Should().BeEquivalentTo(new ListStorageAreasQueryResult(Enumerable.Empty())); } }