Newer
Older
Warehouse / tests / Application.IntegrationTests / Partners / DeletePartnerTests.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 1 KB Init
using FluentAssertions;
using MyWarehouse.Application.Common.Exceptions;
using MyWarehouse.Application.Partners.DeletePartner;
using MyWarehouse.Domain.Partners;
using NUnit.Framework;
using System.Threading.Tasks;

namespace MyWarehouse.Application.IntegrationTests.Partners
{
    public class DeletePartnerTests : TestBase
    {
        [Test]
        public void WhenIdIsInvalid_ShouldThrow_EntityNotFoundException()
        {
            var command = new DeletePartnerCommand() { Id = 1234567 };

            FluentActions.Invoking(() => TestFramework.SendAsync(command))
                .Should().ThrowAsync<EntityNotFoundException>();
        }

        [Test]
        public async Task WhenIdIsValid_ShouldDeletePartner()
        {
            var createdPartners = await TestFramework.DataFactory.AddPartners(2);

            // Act.
            await TestFramework.SendAsync(new DeletePartnerCommand()
            {
                Id = createdPartners[0].Id
            });

            var deletedPartner = await TestFramework.Data.FindAsync<Partner>(createdPartners[0].Id);
            var anotherPartner = await TestFramework.Data.FindAsync<Partner>(createdPartners[1].Id);
            var allPartners = await TestFramework.Data.GetAllAsync<Partner>();

            deletedPartner.Should().BeNull();
            anotherPartner.Should().NotBeNull();
            allPartners.Should().ContainSingle()
                .And.HaveElementAt(0, anotherPartner);
        }
    }
}