onebeyond/onebeyond-studio-core

View on GitHub
src/OneBeyond.Studio.DataAccess.EFCore.Tests/Entities/PurchaseOrders/DomainEventHandlers/PurchaseOrderLineAddedLogger.cs

Summary

Maintainability
A
2 hrs
Test Coverage
using System.Threading;
using System.Threading.Tasks;
using EnsureThat;
using OneBeyond.Studio.Application.SharedKernel.DomainEvents;
using OneBeyond.Studio.DataAccess.EFCore.Tests.Entities.PurchaseOrders.DomainEvents;
using OneBeyond.Studio.DataAccess.EFCore.Tests.Entities.Services;

namespace OneBeyond.Studio.DataAccess.EFCore.Tests.Entities.PurchaseOrders.DomainEventHandlers;

internal sealed class PurchaseOrderLineAddedLogger
    : IPreSaveDomainEventHandler<PurchaseOrderLineAdded>
{
    private readonly Container<PreSaveScopedItem> _container;
    private readonly PreSaveScopedItem _preSaveScopedItem;

    public PurchaseOrderLineAddedLogger(
        Container<PreSaveScopedItem> container,
        PreSaveScopedItem preSaveScopedItem)
    {
        EnsureArg.IsNotNull(container, nameof(container));
        EnsureArg.IsNotNull(preSaveScopedItem, nameof(preSaveScopedItem));

        _container = container;
        _preSaveScopedItem = preSaveScopedItem;
    }

    public Task HandleAsync(
        PurchaseOrderLineAdded domainEvent,
        CancellationToken cancellationToken)
    {
        EnsureArg.IsNotNull(domainEvent, nameof(domainEvent));

        _container.Add(_preSaveScopedItem);

        return Task.CompletedTask;
    }
}