From 32b895a2ea2ea20959122d69c5695afb18c41030 Mon Sep 17 00:00:00 2001 From: italo Date: Sun, 17 Nov 2024 14:55:17 -0300 Subject: [PATCH] feat: separate payment domain --- Bmb Payment.sln | 2 +- .../Bmb.Orders.Gateway.csproj | 2 +- src/Bmb.Orders.Gateway/Presenter.cs | 2 +- .../Repository/InMemoryOrdersGateway.cs | 2 +- .../Repository/OrderReplicaRepository.cs | 2 +- .../ServiceCollectionsExtensions.cs | 2 +- .../Controllers/NotificationsController.cs | 2 +- src/Bmb.Payment.Api/Mappers.cs | 2 +- .../Bmb.Payment.Application.csproj | 2 +- .../UseCases/CreatePaymentUseCase.cs | 7 +- .../UseCases/ICreatePaymentUseCase.cs | 4 +- .../UseCases/IUpdatePaymentStatusUseCase.cs | 4 +- .../UseCases/UpdatePaymentStatusUseCase.cs | 6 +- .../Contracts/IPaymentService.cs | 2 +- .../Dto/CreateOrderPaymentRequestDto.cs | 2 +- .../PaymentGatewayFactory.cs | 4 +- src/Bmb.Payment.Controllers/PaymentService.cs | 3 +- src/Bmb.Payment.Controllers/Presenter.cs | 88 +------------------ .../Contracts/IPaymentGateway.cs | 10 --- .../Contracts/IPaymentGatewayFactoryMethod.cs | 8 -- .../Contracts/IPaymentRepository.cs | 14 --- .../ServiceCollectionsExtensions.cs | 2 +- .../Bmb.Payment.Domain.csproj} | 2 +- .../Contracts/IPaymentGateway.cs | 12 +++ .../Contracts/IPaymentGatewayFactoryMethod.cs | 10 +++ .../Contracts/IPaymentRepository.cs | 16 ++++ src/Bmb.Payment.Domain/Entities/Payment.cs | 42 +++++++++ .../IOrdersGateway.cs | 2 +- .../OrderReplicaDto.cs | 2 +- .../ValueObjects/PaymentStatus.cs | 11 +++ .../ValueObjects/PaymentType.cs | 7 ++ .../Bmb.Payment.DynamoDb.csproj | 2 +- src/Bmb.Payment.DynamoDb/Presenter.cs | 7 +- .../Repository/InMemoryPaymentRepository.cs | 14 +-- .../Repository/PaymentRepository.cs | 11 +-- src/Bmb.Payment.DynamoDb/ServiceExtensions.cs | 2 +- .../Bmb.Payment.FakePayment.Gateway.csproj | 2 +- .../FakePaymentGatewayService.cs | 9 +- .../ServiceCollectionsExtensions.cs | 4 +- .../Bmb.Payment.Masstransit.csproj | 2 +- src/Bmb.Payment.Masstransit/Dispatcher.cs | 7 +- .../OrderCreatedPaymentConsumer.cs | 2 +- src/Bmb.Payment.Masstransit/Presenter.cs | 2 +- .../ServiceCollectionsExtensions.cs | 2 +- .../Bmb.Payment.MercadoPago.Gateway.csproj | 2 +- .../MercadoPagoService.cs | 9 +- .../ServiceCollectionsExtensions.cs | 3 +- .../Repository/OrderReplicaRepositoryTest.cs | 2 +- .../NotificationsControllerTest.cs | 6 +- .../PaymentGatewayFactoryTest.cs | 4 +- .../UseCases/CreatePaymentUseCaseTest.cs | 7 +- .../UpdatePaymentStatusUseCaseTest.cs | 7 +- .../PaymentServiceTests.cs | 12 +-- .../Repository/PaymentRepositoryTest.cs | 8 +- .../OrderCreatedPaymentConsumerTest.cs | 2 +- 55 files changed, 200 insertions(+), 204 deletions(-) delete mode 100644 src/Bmb.Payment.Core/Contracts/IPaymentGateway.cs delete mode 100644 src/Bmb.Payment.Core/Contracts/IPaymentGatewayFactoryMethod.cs delete mode 100644 src/Bmb.Payment.Core/Contracts/IPaymentRepository.cs rename src/{Bmb.Payment.Core/Bmb.Payment.Core.csproj => Bmb.Payment.Domain/Bmb.Payment.Domain.csproj} (78%) create mode 100644 src/Bmb.Payment.Domain/Contracts/IPaymentGateway.cs create mode 100644 src/Bmb.Payment.Domain/Contracts/IPaymentGatewayFactoryMethod.cs create mode 100644 src/Bmb.Payment.Domain/Contracts/IPaymentRepository.cs create mode 100644 src/Bmb.Payment.Domain/Entities/Payment.cs rename src/{Bmb.Payment.Core => Bmb.Payment.Domain}/IOrdersGateway.cs (89%) rename src/{Bmb.Payment.Core => Bmb.Payment.Domain}/OrderReplicaDto.cs (97%) create mode 100644 src/Bmb.Payment.Domain/ValueObjects/PaymentStatus.cs create mode 100644 src/Bmb.Payment.Domain/ValueObjects/PaymentType.cs diff --git a/Bmb Payment.sln b/Bmb Payment.sln index a31e11d..1c363df 100644 --- a/Bmb Payment.sln +++ b/Bmb Payment.sln @@ -38,7 +38,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bmb.Orders.Gateway.Test", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bmb.Payment.DynamoDb.Test", "tests\Bmb.Payment.DynamoDb.Test\Bmb.Payment.DynamoDb.Test.csproj", "{C5464D10-B602-4B01-A14C-560536BB9563}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bmb.Payment.Core", "src\Bmb.Payment.Core\Bmb.Payment.Core.csproj", "{C616857B-CB67-4904-9787-4FC78963CE50}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bmb.Payment.Domain", "src\Bmb.Payment.Domain\Bmb.Payment.Domain.csproj", "{C616857B-CB67-4904-9787-4FC78963CE50}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bmb.Payment.Masstransit", "src\Bmb.Payment.Masstransit\Bmb.Payment.Masstransit.csproj", "{FA002C5A-0B24-4986-BA44-A9E09A8BA553}" EndProject diff --git a/src/Bmb.Orders.Gateway/Bmb.Orders.Gateway.csproj b/src/Bmb.Orders.Gateway/Bmb.Orders.Gateway.csproj index 928dde0..3c0413d 100644 --- a/src/Bmb.Orders.Gateway/Bmb.Orders.Gateway.csproj +++ b/src/Bmb.Orders.Gateway/Bmb.Orders.Gateway.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Bmb.Orders.Gateway/Presenter.cs b/src/Bmb.Orders.Gateway/Presenter.cs index 639cda5..58695dd 100644 --- a/src/Bmb.Orders.Gateway/Presenter.cs +++ b/src/Bmb.Orders.Gateway/Presenter.cs @@ -1,7 +1,7 @@ using System.Text.Json; using Amazon.DynamoDBv2.Model; using Bmb.Domain.Core.Entities; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; namespace Bmb.Orders.Gateway; diff --git a/src/Bmb.Orders.Gateway/Repository/InMemoryOrdersGateway.cs b/src/Bmb.Orders.Gateway/Repository/InMemoryOrdersGateway.cs index 419eef9..10e4539 100644 --- a/src/Bmb.Orders.Gateway/Repository/InMemoryOrdersGateway.cs +++ b/src/Bmb.Orders.Gateway/Repository/InMemoryOrdersGateway.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; namespace Bmb.Orders.Gateway.Repository; diff --git a/src/Bmb.Orders.Gateway/Repository/OrderReplicaRepository.cs b/src/Bmb.Orders.Gateway/Repository/OrderReplicaRepository.cs index da3d37e..08c7666 100644 --- a/src/Bmb.Orders.Gateway/Repository/OrderReplicaRepository.cs +++ b/src/Bmb.Orders.Gateway/Repository/OrderReplicaRepository.cs @@ -2,7 +2,7 @@ using Amazon.DynamoDBv2.Model; using Bmb.Domain.Core.Base; using Bmb.Domain.Core.Entities; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; namespace Bmb.Orders.Gateway.Repository; diff --git a/src/Bmb.Orders.Gateway/ServiceCollectionsExtensions.cs b/src/Bmb.Orders.Gateway/ServiceCollectionsExtensions.cs index 784559b..1d3c289 100644 --- a/src/Bmb.Orders.Gateway/ServiceCollectionsExtensions.cs +++ b/src/Bmb.Orders.Gateway/ServiceCollectionsExtensions.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Orders.Gateway.Repository; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/src/Bmb.Payment.Api/Controllers/NotificationsController.cs b/src/Bmb.Payment.Api/Controllers/NotificationsController.cs index 850a2e9..6ef0180 100644 --- a/src/Bmb.Payment.Api/Controllers/NotificationsController.cs +++ b/src/Bmb.Payment.Api/Controllers/NotificationsController.cs @@ -1,6 +1,6 @@ -using Bmb.Domain.Core.ValueObjects; using Bmb.Payment.Api.Auth; using Bmb.Payment.Controllers.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Bmb.Payment.MercadoPago.Gateway.Model; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/src/Bmb.Payment.Api/Mappers.cs b/src/Bmb.Payment.Api/Mappers.cs index 53bda4f..90b29ea 100644 --- a/src/Bmb.Payment.Api/Mappers.cs +++ b/src/Bmb.Payment.Api/Mappers.cs @@ -1,6 +1,6 @@ using Bmb.Payment.Api.Model; using Bmb.Payment.Controllers.Dto; -using PaymentType = Bmb.Domain.Core.ValueObjects.PaymentType; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Api; diff --git a/src/Bmb.Payment.Application/Bmb.Payment.Application.csproj b/src/Bmb.Payment.Application/Bmb.Payment.Application.csproj index 584a969..eb4ab24 100644 --- a/src/Bmb.Payment.Application/Bmb.Payment.Application.csproj +++ b/src/Bmb.Payment.Application/Bmb.Payment.Application.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Bmb.Payment.Application/UseCases/CreatePaymentUseCase.cs b/src/Bmb.Payment.Application/UseCases/CreatePaymentUseCase.cs index 2e51ec9..53ee43c 100644 --- a/src/Bmb.Payment.Application/UseCases/CreatePaymentUseCase.cs +++ b/src/Bmb.Payment.Application/UseCases/CreatePaymentUseCase.cs @@ -2,8 +2,9 @@ using Bmb.Domain.Core.Events; using Bmb.Domain.Core.Events.Notifications; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Application.UseCases; @@ -22,7 +23,7 @@ public CreatePaymentUseCase(IPaymentGatewayFactoryMethod paymentGatewayFactory, _dispatcher = dispatcher; } - public async Task Execute(Guid orderId, PaymentType paymentType) + public async Task Execute(Guid orderId, PaymentType paymentType) { var order = await _ordersGateway.GetCopyAsync(orderId); diff --git a/src/Bmb.Payment.Application/UseCases/ICreatePaymentUseCase.cs b/src/Bmb.Payment.Application/UseCases/ICreatePaymentUseCase.cs index 07bffcb..41741cf 100644 --- a/src/Bmb.Payment.Application/UseCases/ICreatePaymentUseCase.cs +++ b/src/Bmb.Payment.Application/UseCases/ICreatePaymentUseCase.cs @@ -1,8 +1,6 @@ -using Bmb.Domain.Core.ValueObjects; - namespace Bmb.Payment.Application.UseCases; public interface ICreatePaymentUseCase { - Task Execute(Guid orderId, PaymentType paymentType); + Task Execute(Guid orderId, Domain.ValueObjects.PaymentType paymentType); } diff --git a/src/Bmb.Payment.Application/UseCases/IUpdatePaymentStatusUseCase.cs b/src/Bmb.Payment.Application/UseCases/IUpdatePaymentStatusUseCase.cs index 406c804..0ff7b87 100644 --- a/src/Bmb.Payment.Application/UseCases/IUpdatePaymentStatusUseCase.cs +++ b/src/Bmb.Payment.Application/UseCases/IUpdatePaymentStatusUseCase.cs @@ -1,8 +1,8 @@ -using Bmb.Domain.Core.ValueObjects; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Application.UseCases; public interface IUpdatePaymentStatusUseCase { - Task Execute(Bmb.Domain.Core.Entities.Payment? payment, PaymentStatus status); + Task Execute(Domain.Entities.Payment? payment, PaymentStatus status); } diff --git a/src/Bmb.Payment.Application/UseCases/UpdatePaymentStatusUseCase.cs b/src/Bmb.Payment.Application/UseCases/UpdatePaymentStatusUseCase.cs index 1fe4e84..b567d79 100644 --- a/src/Bmb.Payment.Application/UseCases/UpdatePaymentStatusUseCase.cs +++ b/src/Bmb.Payment.Application/UseCases/UpdatePaymentStatusUseCase.cs @@ -1,7 +1,7 @@ using Bmb.Domain.Core.Events; using Bmb.Domain.Core.Events.Notifications; -using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Application.UseCases; @@ -16,7 +16,7 @@ public UpdatePaymentStatusUseCase(IPaymentRepository paymentRepository, IDispatc _dispatcher = dispatcher; } - public async Task Execute(Bmb.Domain.Core.Entities.Payment? payment, PaymentStatus status) + public async Task Execute(Domain.Entities.Payment? payment, PaymentStatus status) { if (payment is not null && payment.Status is not PaymentStatus.Approved diff --git a/src/Bmb.Payment.Controllers/Contracts/IPaymentService.cs b/src/Bmb.Payment.Controllers/Contracts/IPaymentService.cs index 4ee0abd..00d68fc 100644 --- a/src/Bmb.Payment.Controllers/Contracts/IPaymentService.cs +++ b/src/Bmb.Payment.Controllers/Contracts/IPaymentService.cs @@ -1,5 +1,5 @@ -using Bmb.Domain.Core.ValueObjects; using Bmb.Payment.Controllers.Dto; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Controllers.Contracts; diff --git a/src/Bmb.Payment.Controllers/Dto/CreateOrderPaymentRequestDto.cs b/src/Bmb.Payment.Controllers/Dto/CreateOrderPaymentRequestDto.cs index 18c182a..75d9ed7 100644 --- a/src/Bmb.Payment.Controllers/Dto/CreateOrderPaymentRequestDto.cs +++ b/src/Bmb.Payment.Controllers/Dto/CreateOrderPaymentRequestDto.cs @@ -1,4 +1,4 @@ -using Bmb.Domain.Core.ValueObjects; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Controllers.Dto; diff --git a/src/Bmb.Payment.Controllers/PaymentGatewayFactory.cs b/src/Bmb.Payment.Controllers/PaymentGatewayFactory.cs index ea62399..5e8b4b1 100644 --- a/src/Bmb.Payment.Controllers/PaymentGatewayFactory.cs +++ b/src/Bmb.Payment.Controllers/PaymentGatewayFactory.cs @@ -1,6 +1,6 @@ using Bmb.Domain.Core.Base; -using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Microsoft.Extensions.DependencyInjection; namespace Bmb.Payment.Controllers; diff --git a/src/Bmb.Payment.Controllers/PaymentService.cs b/src/Bmb.Payment.Controllers/PaymentService.cs index 41d885d..fb80be6 100644 --- a/src/Bmb.Payment.Controllers/PaymentService.cs +++ b/src/Bmb.Payment.Controllers/PaymentService.cs @@ -2,7 +2,8 @@ using Bmb.Payment.Application.UseCases; using Bmb.Payment.Controllers.Contracts; using Bmb.Payment.Controllers.Dto; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Controllers; diff --git a/src/Bmb.Payment.Controllers/Presenter.cs b/src/Bmb.Payment.Controllers/Presenter.cs index 7851bef..bb3236c 100644 --- a/src/Bmb.Payment.Controllers/Presenter.cs +++ b/src/Bmb.Payment.Controllers/Presenter.cs @@ -1,48 +1,10 @@ -using Bmb.Domain.Core.Entities; -using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Controllers.Dto; +using Bmb.Payment.Controllers.Dto; namespace Bmb.Payment.Controllers; public static class Presenter { - // public static CustomerDto FromEntityToDto(this Customer customer) - // { - // if (customer is null) return null; - // - // return new CustomerDto - // { - // Id = customer.Id, - // Cpf = customer.Cpf, - // Name = customer.Name, - // Email = customer.Email - // }; - // } - - // public static ProductDto FromEntityToDto(this Product product) - // { - // return new ProductDto - // { - // Id = product.Id, - // Name = product.Name, - // Description = product.Description, - // Category = product.Category.FromEntityToDto(), - // Price = product.Price, - // Images = product.Images.ToArray() - // }; - // } - - // public static IReadOnlyCollection FromEntityToDto(this IEnumerable products) - // { - // return products.Select(p => p.FromEntityToDto()).ToList(); - // } - - // public static ProductCategoryDto FromEntityToDto(this ProductCategory category) - // { - // return (ProductCategoryDto)category; - // } - - public static PaymentDto FromEntityToDto(this Domain.Core.Entities.Payment payment) + public static PaymentDto FromEntityToDto(this Domain.Entities.Payment payment) { return new PaymentDto { @@ -55,50 +17,4 @@ public static PaymentDto FromEntityToDto(this Domain.Core.Entities.Payment payme QrCode = payment.QrCode }; } - - // public static OrderListItemDto FromEntityToListDto(this Order order) - // { - // return new OrderListItemDto(order.Id, order.TrackingCode.Value, order.Total, - // (OrderStatusDto)order.Status, - // order.Created, - // order.Updated); - // } - - // public static IReadOnlyCollection FromDomainToDto(this IEnumerable orders) - // { - // return orders.Select(o => o.FromEntityToListDto()).ToList(); - // } - - // public static OrderDetailDto? FromEntityToDto(this Order? order) - // { - // if (order is null) return null; - // return new OrderDetailDto - // { - // Id = order.Id, - // TrackingCode = order.TrackingCode.Value, - // Total = order.Total, - // Status = (OrderStatusDto)order.Status, - // CreationDate = order.Created, - // LastUpdate = order.Updated, - // OrderItems = order.OrderItems.Select(o => o.FromEntityToDto()).ToList(), - // Customer = order.Customer is null ? null : order.Customer!.FromEntityToDto() - // }; - // } - - // public static OrderItemDto FromEntityToDto(this OrderItem orderItem) - // { - // return new OrderItemDto() - // { - // OrderId = orderItem.OrderId, - // ProductId = orderItem.ProductId, - // Quantity = orderItem.Quantity, - // UnitPrice = orderItem.UnitPrice, - // ProductName = orderItem.ProductName - // }; - // } - - // public static NewOrderDto FromEntityToCreatedDto(this Order order) - // { - // return new NewOrderDto(order.Id, order.TrackingCode.Value); - // } } diff --git a/src/Bmb.Payment.Core/Contracts/IPaymentGateway.cs b/src/Bmb.Payment.Core/Contracts/IPaymentGateway.cs deleted file mode 100644 index fb5e0a7..0000000 --- a/src/Bmb.Payment.Core/Contracts/IPaymentGateway.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Bmb.Domain.Core.ValueObjects; - -namespace Bmb.Payment.Core.Contracts; - -public interface IPaymentGateway -{ - Task CreatePaymentAsync(OrderDto order); - - Task GetPaymentStatusAsync(string paymentId); -} \ No newline at end of file diff --git a/src/Bmb.Payment.Core/Contracts/IPaymentGatewayFactoryMethod.cs b/src/Bmb.Payment.Core/Contracts/IPaymentGatewayFactoryMethod.cs deleted file mode 100644 index 805377e..0000000 --- a/src/Bmb.Payment.Core/Contracts/IPaymentGatewayFactoryMethod.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Bmb.Domain.Core.ValueObjects; - -namespace Bmb.Payment.Core.Contracts; - -public interface IPaymentGatewayFactoryMethod -{ - IPaymentGateway Create(PaymentType paymentType); -} \ No newline at end of file diff --git a/src/Bmb.Payment.Core/Contracts/IPaymentRepository.cs b/src/Bmb.Payment.Core/Contracts/IPaymentRepository.cs deleted file mode 100644 index 1bde073..0000000 --- a/src/Bmb.Payment.Core/Contracts/IPaymentRepository.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Bmb.Domain.Core.ValueObjects; - -namespace Bmb.Payment.Core.Contracts; - -public interface IPaymentRepository -{ - Task SaveAsync(Domain.Core.Entities.Payment payment); - - Task GetPaymentAsync(PaymentId paymentId); - - Task GetPaymentAsync(string externalReference, PaymentType paymentType); - - Task UpdatePaymentStatusAsync(Domain.Core.Entities.Payment payment); -} diff --git a/src/Bmb.Payment.DI/ServiceCollectionsExtensions.cs b/src/Bmb.Payment.DI/ServiceCollectionsExtensions.cs index 270a7e8..167c3a2 100644 --- a/src/Bmb.Payment.DI/ServiceCollectionsExtensions.cs +++ b/src/Bmb.Payment.DI/ServiceCollectionsExtensions.cs @@ -3,7 +3,7 @@ using Bmb.Orders.Gateway; using Bmb.Payment.Application; using Bmb.Payment.Controllers; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; using Bmb.Payment.DI.HealthChecks; using Bmb.Payment.FakePayment.Gateway; using Bmb.Payment.MercadoPago.Gateway; diff --git a/src/Bmb.Payment.Core/Bmb.Payment.Core.csproj b/src/Bmb.Payment.Domain/Bmb.Payment.Domain.csproj similarity index 78% rename from src/Bmb.Payment.Core/Bmb.Payment.Core.csproj rename to src/Bmb.Payment.Domain/Bmb.Payment.Domain.csproj index 8247568..f6f61f8 100644 --- a/src/Bmb.Payment.Core/Bmb.Payment.Core.csproj +++ b/src/Bmb.Payment.Domain/Bmb.Payment.Domain.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/Bmb.Payment.Domain/Contracts/IPaymentGateway.cs b/src/Bmb.Payment.Domain/Contracts/IPaymentGateway.cs new file mode 100644 index 0000000..26a7181 --- /dev/null +++ b/src/Bmb.Payment.Domain/Contracts/IPaymentGateway.cs @@ -0,0 +1,12 @@ +using Bmb.Domain.Core.ValueObjects; +using PaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; +using ValueObjects_PaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; + +namespace Bmb.Payment.Domain.Contracts; + +public interface IPaymentGateway +{ + Task CreatePaymentAsync(OrderDto order); + + Task GetPaymentStatusAsync(string paymentId); +} \ No newline at end of file diff --git a/src/Bmb.Payment.Domain/Contracts/IPaymentGatewayFactoryMethod.cs b/src/Bmb.Payment.Domain/Contracts/IPaymentGatewayFactoryMethod.cs new file mode 100644 index 0000000..1868989 --- /dev/null +++ b/src/Bmb.Payment.Domain/Contracts/IPaymentGatewayFactoryMethod.cs @@ -0,0 +1,10 @@ +using Bmb.Domain.Core.ValueObjects; +using PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; +using ValueObjects_PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; + +namespace Bmb.Payment.Domain.Contracts; + +public interface IPaymentGatewayFactoryMethod +{ + IPaymentGateway Create(ValueObjects_PaymentType paymentType); +} \ No newline at end of file diff --git a/src/Bmb.Payment.Domain/Contracts/IPaymentRepository.cs b/src/Bmb.Payment.Domain/Contracts/IPaymentRepository.cs new file mode 100644 index 0000000..ab4c6e0 --- /dev/null +++ b/src/Bmb.Payment.Domain/Contracts/IPaymentRepository.cs @@ -0,0 +1,16 @@ +using Bmb.Domain.Core.ValueObjects; +using PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; +using ValueObjects_PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; + +namespace Bmb.Payment.Domain.Contracts; + +public interface IPaymentRepository +{ + Task SaveAsync(Entities.Payment payment); + + Task GetPaymentAsync(PaymentId paymentId); + + Task GetPaymentAsync(string externalReference, ValueObjects_PaymentType paymentType); + + Task UpdatePaymentStatusAsync(Entities.Payment payment); +} diff --git a/src/Bmb.Payment.Domain/Entities/Payment.cs b/src/Bmb.Payment.Domain/Entities/Payment.cs new file mode 100644 index 0000000..160ea66 --- /dev/null +++ b/src/Bmb.Payment.Domain/Entities/Payment.cs @@ -0,0 +1,42 @@ +using Bmb.Domain.Core.Base; +using Bmb.Domain.Core.ValueObjects; +using Bmb.Payment.Domain.ValueObjects; +using PaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; +using PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; +using ValueObjects_PaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; +using ValueObjects_PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; + +namespace Bmb.Payment.Domain.Entities; + +public class Payment : Entity, IAggregateRoot +{ + public ValueObjects_PaymentType PaymentType { get; set; } = ValueObjects_PaymentType.Test; + + public Guid OrderId { get; set; } + + public string ExternalReference { get; set; } + + public string QrCode { get; set; } + + public decimal Amount { get; set; } + + public ValueObjects_PaymentStatus Status { get; set; } + + public Payment() + { + Created = DateTime.UtcNow; + } + + public Payment(PaymentId id, string qrCode, decimal amount, ValueObjects_PaymentType paymentType = ValueObjects_PaymentType.Test) + : base(id) + { + Id = id; + Status = ValueObjects_PaymentStatus.Pending; + QrCode = qrCode; + Amount = amount; + Created = DateTime.UtcNow; + PaymentType = paymentType; + } + + public bool IsApproved() => Status == PaymentStatus.Approved; +} diff --git a/src/Bmb.Payment.Core/IOrdersGateway.cs b/src/Bmb.Payment.Domain/IOrdersGateway.cs similarity index 89% rename from src/Bmb.Payment.Core/IOrdersGateway.cs rename to src/Bmb.Payment.Domain/IOrdersGateway.cs index 38b1606..a66fb62 100644 --- a/src/Bmb.Payment.Core/IOrdersGateway.cs +++ b/src/Bmb.Payment.Domain/IOrdersGateway.cs @@ -1,6 +1,6 @@ using Bmb.Domain.Core.Entities; -namespace Bmb.Payment.Core; +namespace Bmb.Payment.Domain; public interface IOrdersGateway { diff --git a/src/Bmb.Payment.Core/OrderReplicaDto.cs b/src/Bmb.Payment.Domain/OrderReplicaDto.cs similarity index 97% rename from src/Bmb.Payment.Core/OrderReplicaDto.cs rename to src/Bmb.Payment.Domain/OrderReplicaDto.cs index 2f58216..dddf87b 100644 --- a/src/Bmb.Payment.Core/OrderReplicaDto.cs +++ b/src/Bmb.Payment.Domain/OrderReplicaDto.cs @@ -1,6 +1,6 @@ using Bmb.Domain.Core.ValueObjects; -namespace Bmb.Payment.Core; +namespace Bmb.Payment.Domain; public record OrderReplicaDto(Guid OrderId, OrderDto OrderDetails); diff --git a/src/Bmb.Payment.Domain/ValueObjects/PaymentStatus.cs b/src/Bmb.Payment.Domain/ValueObjects/PaymentStatus.cs new file mode 100644 index 0000000..54286df --- /dev/null +++ b/src/Bmb.Payment.Domain/ValueObjects/PaymentStatus.cs @@ -0,0 +1,11 @@ +namespace Bmb.Payment.Domain.ValueObjects; + +public enum PaymentStatus +{ + Pending = 0, + InProgress = 1, + Approved = 2, + Rejected = 3, + Paid = 4, + Cancelled = 5 +} diff --git a/src/Bmb.Payment.Domain/ValueObjects/PaymentType.cs b/src/Bmb.Payment.Domain/ValueObjects/PaymentType.cs new file mode 100644 index 0000000..80e3cb3 --- /dev/null +++ b/src/Bmb.Payment.Domain/ValueObjects/PaymentType.cs @@ -0,0 +1,7 @@ +namespace Bmb.Payment.Domain.ValueObjects; + +public enum PaymentType +{ + Test = 0, + MercadoPago = 1 +} diff --git a/src/Bmb.Payment.DynamoDb/Bmb.Payment.DynamoDb.csproj b/src/Bmb.Payment.DynamoDb/Bmb.Payment.DynamoDb.csproj index 48e5e9e..2bcabf0 100644 --- a/src/Bmb.Payment.DynamoDb/Bmb.Payment.DynamoDb.csproj +++ b/src/Bmb.Payment.DynamoDb/Bmb.Payment.DynamoDb.csproj @@ -21,7 +21,7 @@ - + diff --git a/src/Bmb.Payment.DynamoDb/Presenter.cs b/src/Bmb.Payment.DynamoDb/Presenter.cs index 8ea85ac..1ef84d8 100644 --- a/src/Bmb.Payment.DynamoDb/Presenter.cs +++ b/src/Bmb.Payment.DynamoDb/Presenter.cs @@ -1,11 +1,12 @@ using Amazon.DynamoDBv2.Model; using Bmb.Domain.Core.ValueObjects; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.DynamoDb; public static class Presenter { - internal static Dictionary ToDynamoDbItem(this Domain.Core.Entities.Payment payment) + internal static Dictionary ToDynamoDbItem(this Domain.Entities.Payment payment) { return new Dictionary { @@ -21,9 +22,9 @@ internal static Dictionary ToDynamoDbItem(this Domain.Co }; } - internal static Domain.Core.Entities.Payment ToDomain(this Dictionary item) + internal static Domain.Entities.Payment ToDomain(this Dictionary item) { - return new Domain.Core.Entities.Payment + return new Domain.Entities.Payment { Id = new PaymentId(Guid.Parse(item["Id"].S)), Status = Enum.Parse(item["Status"].S), diff --git a/src/Bmb.Payment.DynamoDb/Repository/InMemoryPaymentRepository.cs b/src/Bmb.Payment.DynamoDb/Repository/InMemoryPaymentRepository.cs index cfe1b34..aa47d29 100644 --- a/src/Bmb.Payment.DynamoDb/Repository/InMemoryPaymentRepository.cs +++ b/src/Bmb.Payment.DynamoDb/Repository/InMemoryPaymentRepository.cs @@ -1,34 +1,34 @@ using System.Diagnostics.CodeAnalysis; -using Bmb.Domain.Core.Entities; -using Bmb.Domain.Core.Interfaces; using Bmb.Domain.Core.ValueObjects; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.DynamoDb.Repository; [ExcludeFromCodeCoverage] public class InMemoryPaymentRepository : IPaymentRepository { - private readonly List _payments = new(); + private readonly List _payments = new(); - public Task SaveAsync(Domain.Core.Entities.Payment payment) + public Task SaveAsync(Domain.Entities.Payment payment) { _payments.Add(payment); return Task.FromResult(payment); } - public Task GetPaymentAsync(PaymentId paymentId) + public Task GetPaymentAsync(PaymentId paymentId) { var payment = _payments.First(p => p.Id == paymentId) ?? default; return Task.FromResult(payment); } - public Task GetPaymentAsync(string externalReference, PaymentType paymentType) + public Task GetPaymentAsync(string externalReference, PaymentType paymentType) { var payment = _payments.First(p => p.ExternalReference == externalReference && p.PaymentType == paymentType); return Task.FromResult(payment ?? default); } - public Task UpdatePaymentStatusAsync(Domain.Core.Entities.Payment payment) + public Task UpdatePaymentStatusAsync(Domain.Entities.Payment payment) { var index = _payments.FindIndex(p => p.Id == payment.Id); if (index < 0) diff --git a/src/Bmb.Payment.DynamoDb/Repository/PaymentRepository.cs b/src/Bmb.Payment.DynamoDb/Repository/PaymentRepository.cs index 834d08b..2bee9d4 100644 --- a/src/Bmb.Payment.DynamoDb/Repository/PaymentRepository.cs +++ b/src/Bmb.Payment.DynamoDb/Repository/PaymentRepository.cs @@ -2,7 +2,8 @@ using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.DynamoDb.Repository; @@ -10,13 +11,13 @@ public class PaymentRepository(IAmazonDynamoDB database) : IPaymentRepository { private const string PaymentTable = "Payments"; - public async Task SaveAsync(Domain.Core.Entities.Payment payment) + public async Task SaveAsync(Domain.Entities.Payment payment) { await database.PutItemAsync(PaymentTable, payment.ToDynamoDbItem()); return payment; } - public async Task GetPaymentAsync(PaymentId paymentId) + public async Task GetPaymentAsync(PaymentId paymentId) { var request = new GetItemRequest { @@ -37,7 +38,7 @@ public class PaymentRepository(IAmazonDynamoDB database) : IPaymentRepository return response.Item.ToDomain(); } - public async Task GetPaymentAsync(string externalReference, PaymentType paymentType) + public async Task GetPaymentAsync(string externalReference, PaymentType paymentType) { var request = new QueryRequest { @@ -60,7 +61,7 @@ public class PaymentRepository(IAmazonDynamoDB database) : IPaymentRepository return response.Items[0].ToDomain(); } - public async Task UpdatePaymentStatusAsync(Domain.Core.Entities.Payment payment) + public async Task UpdatePaymentStatusAsync(Domain.Entities.Payment payment) { var attributes = payment.ToDynamoDbItem(); attributes.Remove("Id"); diff --git a/src/Bmb.Payment.DynamoDb/ServiceExtensions.cs b/src/Bmb.Payment.DynamoDb/ServiceExtensions.cs index d9633ad..8b15353 100644 --- a/src/Bmb.Payment.DynamoDb/ServiceExtensions.cs +++ b/src/Bmb.Payment.DynamoDb/ServiceExtensions.cs @@ -1,5 +1,5 @@ using System.Diagnostics.CodeAnalysis; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; using Bmb.Payment.DynamoDb.Repository; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/src/Bmb.Payment.FakePayment.Gateway/Bmb.Payment.FakePayment.Gateway.csproj b/src/Bmb.Payment.FakePayment.Gateway/Bmb.Payment.FakePayment.Gateway.csproj index 7338ee3..8b8f515 100644 --- a/src/Bmb.Payment.FakePayment.Gateway/Bmb.Payment.FakePayment.Gateway.csproj +++ b/src/Bmb.Payment.FakePayment.Gateway/Bmb.Payment.FakePayment.Gateway.csproj @@ -22,7 +22,7 @@ - + diff --git a/src/Bmb.Payment.FakePayment.Gateway/FakePaymentGatewayService.cs b/src/Bmb.Payment.FakePayment.Gateway/FakePaymentGatewayService.cs index 7dfd4e7..40c65ae 100644 --- a/src/Bmb.Payment.FakePayment.Gateway/FakePaymentGatewayService.cs +++ b/src/Bmb.Payment.FakePayment.Gateway/FakePaymentGatewayService.cs @@ -1,17 +1,18 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.FakePayment.Gateway; [ExcludeFromCodeCoverage] public class FakePaymentGatewayService : IPaymentGateway { - public Task CreatePaymentAsync(OrderDto order) + public Task CreatePaymentAsync(OrderDto order) { var id = Guid.NewGuid(); - return Task.FromResult(new Domain.Core.Entities.Payment + return Task.FromResult(new Domain.Entities.Payment { Id = new PaymentId(id), OrderId = order.Id, diff --git a/src/Bmb.Payment.FakePayment.Gateway/ServiceCollectionsExtensions.cs b/src/Bmb.Payment.FakePayment.Gateway/ServiceCollectionsExtensions.cs index a4ec35b..3344984 100644 --- a/src/Bmb.Payment.FakePayment.Gateway/ServiceCollectionsExtensions.cs +++ b/src/Bmb.Payment.FakePayment.Gateway/ServiceCollectionsExtensions.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; -using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Microsoft.Extensions.DependencyInjection; namespace Bmb.Payment.FakePayment.Gateway; diff --git a/src/Bmb.Payment.Masstransit/Bmb.Payment.Masstransit.csproj b/src/Bmb.Payment.Masstransit/Bmb.Payment.Masstransit.csproj index 9f138f3..2b82048 100644 --- a/src/Bmb.Payment.Masstransit/Bmb.Payment.Masstransit.csproj +++ b/src/Bmb.Payment.Masstransit/Bmb.Payment.Masstransit.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Bmb.Payment.Masstransit/Dispatcher.cs b/src/Bmb.Payment.Masstransit/Dispatcher.cs index 9a5629b..dc4fa20 100644 --- a/src/Bmb.Payment.Masstransit/Dispatcher.cs +++ b/src/Bmb.Payment.Masstransit/Dispatcher.cs @@ -1,6 +1,6 @@ using Bmb.Domain.Core.Events; +using Bmb.Domain.Core.Events.Integration; using Bmb.Domain.Core.Events.Notifications; -using Bmb.Payment.Core.Contracts; using MassTransit; using Microsoft.Extensions.Logging; @@ -32,4 +32,9 @@ public async Task PublishAsync(T @event, CancellationToken cancellationToken throw; } } + + public Task PublishIntegrationAsync(T @event, CancellationToken cancellationToken = new CancellationToken()) where T : IBmbIntegrationEvent + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/src/Bmb.Payment.Masstransit/OrderCreatedPaymentConsumer.cs b/src/Bmb.Payment.Masstransit/OrderCreatedPaymentConsumer.cs index 20e9dbd..1d7069f 100644 --- a/src/Bmb.Payment.Masstransit/OrderCreatedPaymentConsumer.cs +++ b/src/Bmb.Payment.Masstransit/OrderCreatedPaymentConsumer.cs @@ -1,5 +1,5 @@ using Bmb.Domain.Core.Events.Integration; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; using MassTransit; using Microsoft.Extensions.Logging; diff --git a/src/Bmb.Payment.Masstransit/Presenter.cs b/src/Bmb.Payment.Masstransit/Presenter.cs index ce1c6f6..d9020c2 100644 --- a/src/Bmb.Payment.Masstransit/Presenter.cs +++ b/src/Bmb.Payment.Masstransit/Presenter.cs @@ -1,5 +1,5 @@ using Bmb.Domain.Core.Events.Integration; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; namespace Bmb.Payment.Masstransit; diff --git a/src/Bmb.Payment.Masstransit/ServiceCollectionsExtensions.cs b/src/Bmb.Payment.Masstransit/ServiceCollectionsExtensions.cs index 8f7dfdb..6c40706 100644 --- a/src/Bmb.Payment.Masstransit/ServiceCollectionsExtensions.cs +++ b/src/Bmb.Payment.Masstransit/ServiceCollectionsExtensions.cs @@ -1,6 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Domain.Core.Events; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; using MassTransit; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Diagnostics.HealthChecks; diff --git a/src/Bmb.Payment.MercadoPago.Gateway/Bmb.Payment.MercadoPago.Gateway.csproj b/src/Bmb.Payment.MercadoPago.Gateway/Bmb.Payment.MercadoPago.Gateway.csproj index a37adec..f35bd9e 100644 --- a/src/Bmb.Payment.MercadoPago.Gateway/Bmb.Payment.MercadoPago.Gateway.csproj +++ b/src/Bmb.Payment.MercadoPago.Gateway/Bmb.Payment.MercadoPago.Gateway.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/Bmb.Payment.MercadoPago.Gateway/MercadoPagoService.cs b/src/Bmb.Payment.MercadoPago.Gateway/MercadoPagoService.cs index 0ce3a49..5e048ca 100644 --- a/src/Bmb.Payment.MercadoPago.Gateway/MercadoPagoService.cs +++ b/src/Bmb.Payment.MercadoPago.Gateway/MercadoPagoService.cs @@ -1,14 +1,15 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Bmb.Payment.MercadoPago.Gateway.Configuration; using MercadoPago.Client; using MercadoPago.Client.Common; using MercadoPago.Client.Payment; using Microsoft.Extensions.Logging; -using DomainPayment = Bmb.Domain.Core.Entities.Payment; -using DomainPaymentStatus = Bmb.Domain.Core.ValueObjects.PaymentStatus; +using DomainPayment = Bmb.Payment.Domain.Entities.Payment; +using DomainPaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; namespace Bmb.Payment.MercadoPago.Gateway; diff --git a/src/Bmb.Payment.MercadoPago.Gateway/ServiceCollectionsExtensions.cs b/src/Bmb.Payment.MercadoPago.Gateway/ServiceCollectionsExtensions.cs index 0c3e206..8fe29e6 100644 --- a/src/Bmb.Payment.MercadoPago.Gateway/ServiceCollectionsExtensions.cs +++ b/src/Bmb.Payment.MercadoPago.Gateway/ServiceCollectionsExtensions.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Bmb.Domain.Core.ValueObjects; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Bmb.Payment.MercadoPago.Gateway.Configuration; using Bmb.Payment.MercadoPago.Gateway.Security; using Microsoft.Extensions.Configuration; diff --git a/tests/Bmb.Orders.Gateway.Test/Repository/OrderReplicaRepositoryTest.cs b/tests/Bmb.Orders.Gateway.Test/Repository/OrderReplicaRepositoryTest.cs index 31c9194..d1238d6 100644 --- a/tests/Bmb.Orders.Gateway.Test/Repository/OrderReplicaRepositoryTest.cs +++ b/tests/Bmb.Orders.Gateway.Test/Repository/OrderReplicaRepositoryTest.cs @@ -3,7 +3,7 @@ using Amazon.DynamoDBv2.Model; using AutoFixture; using Bmb.Orders.Gateway.Repository; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; using FluentAssertions; using FluentAssertions.Execution; using JetBrains.Annotations; diff --git a/tests/Bmb.Payment.Api.Test/Controllers/NotificationsControllerTest.cs b/tests/Bmb.Payment.Api.Test/Controllers/NotificationsControllerTest.cs index dceee29..e42b1ca 100644 --- a/tests/Bmb.Payment.Api.Test/Controllers/NotificationsControllerTest.cs +++ b/tests/Bmb.Payment.Api.Test/Controllers/NotificationsControllerTest.cs @@ -1,9 +1,9 @@ using AutoFixture; -using Bmb.Domain.Core.ValueObjects; using Bmb.Payment.Api.Controllers; using Bmb.Payment.Controllers; using Bmb.Payment.Controllers.Contracts; using Bmb.Payment.Controllers.Dto; +using Bmb.Payment.Domain.ValueObjects; using Bmb.Payment.MercadoPago.Gateway.Model; using FluentAssertions; using FluentAssertions.Execution; @@ -42,7 +42,7 @@ public NotificationsControllerTest() public async Task PostMercadoPago_PaymentEvent_Processed() { // Arrange - var payment = new Fixture().Create(); + var payment = new Fixture().Create(); var @event = new Fixture().Build() .With(e => e.Action, "payment.updated") .With(e => e.Data, new MercadoPagoWebhookData @@ -117,7 +117,7 @@ public async Task FakePayment_PaymentEvent_PaymentProcessed() { // Arrange var paymentExternalReference = Guid.NewGuid().ToString(); - var payment = new Fixture().Create(); + var payment = new Fixture().Create(); _mockPaymentService.Setup(s => s.GetPaymentAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(payment.FromEntityToDto()) .Verifiable(); diff --git a/tests/Bmb.Payment.Api.Test/PaymentGatewayFactoryTest.cs b/tests/Bmb.Payment.Api.Test/PaymentGatewayFactoryTest.cs index c30de66..505e9c5 100644 --- a/tests/Bmb.Payment.Api.Test/PaymentGatewayFactoryTest.cs +++ b/tests/Bmb.Payment.Api.Test/PaymentGatewayFactoryTest.cs @@ -1,7 +1,7 @@ using Bmb.Domain.Core.Base; -using Bmb.Domain.Core.ValueObjects; using Bmb.Payment.Controllers; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; using Bmb.Payment.FakePayment.Gateway; using Bmb.Payment.MercadoPago.Gateway; using Bmb.Payment.MercadoPago.Gateway.Configuration; diff --git a/tests/Bmb.Payment.Application.Test/UseCases/CreatePaymentUseCaseTest.cs b/tests/Bmb.Payment.Application.Test/UseCases/CreatePaymentUseCaseTest.cs index 2d18ff9..496c1c2 100644 --- a/tests/Bmb.Payment.Application.Test/UseCases/CreatePaymentUseCaseTest.cs +++ b/tests/Bmb.Payment.Application.Test/UseCases/CreatePaymentUseCaseTest.cs @@ -3,8 +3,9 @@ using Bmb.Domain.Core.Events; using Bmb.Domain.Core.Events.Notifications; using Bmb.Payment.Application.UseCases; -using Bmb.Payment.Core; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Application.Test.UseCases; @@ -38,7 +39,7 @@ public async Task Execute_ValidOrder_ShouldReturnPayment() .Without(o => o.PaymentId) .Create(); - var expectedPayment = fixture.Build() + var expectedPayment = fixture.Build() .With(p => p.Id, new PaymentId(Guid.NewGuid())) .With(p => p.Status, PaymentStatus.Pending) .Create(); diff --git a/tests/Bmb.Payment.Application.Test/UseCases/UpdatePaymentStatusUseCaseTest.cs b/tests/Bmb.Payment.Application.Test/UseCases/UpdatePaymentStatusUseCaseTest.cs index bb9d22a..1b81c98 100644 --- a/tests/Bmb.Payment.Application.Test/UseCases/UpdatePaymentStatusUseCaseTest.cs +++ b/tests/Bmb.Payment.Application.Test/UseCases/UpdatePaymentStatusUseCaseTest.cs @@ -2,7 +2,8 @@ using Bmb.Domain.Core.Events; using Bmb.Domain.Core.Events.Notifications; using Bmb.Payment.Application.UseCases; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; +using Bmb.Payment.Domain.ValueObjects; namespace Bmb.Payment.Application.Test.UseCases; @@ -24,11 +25,11 @@ public UpdatePaymentStatusUseCaseTest() public async void Execute_UpdatePaymentAndOrderStatus_Success() { // Arrange - var payment = new Fixture().Create(); + var payment = new Fixture().Create(); var newStatus = PaymentStatus.Approved; _mockPaymentRepository.Setup(p => - p.UpdatePaymentStatusAsync(It.Is(x => x.Status == newStatus))) + p.UpdatePaymentStatusAsync(It.Is(x => x.Status == newStatus))) .ReturnsAsync(true) .Verifiable(); diff --git a/tests/Bmb.Payment.Controllers.Test/PaymentServiceTests.cs b/tests/Bmb.Payment.Controllers.Test/PaymentServiceTests.cs index 07bea12..e507a83 100644 --- a/tests/Bmb.Payment.Controllers.Test/PaymentServiceTests.cs +++ b/tests/Bmb.Payment.Controllers.Test/PaymentServiceTests.cs @@ -2,11 +2,13 @@ using Bmb.Domain.Core.ValueObjects; using Bmb.Payment.Application.UseCases; using Bmb.Payment.Controllers.Dto; -using Bmb.Payment.Core.Contracts; +using Bmb.Payment.Domain.Contracts; using FluentAssertions; using FluentAssertions.Execution; using JetBrains.Annotations; using Moq; +using PaymentStatus = Bmb.Payment.Domain.ValueObjects.PaymentStatus; +using PaymentType = Bmb.Payment.Domain.ValueObjects.PaymentType; namespace Bmb.Payment.Controllers.Test; @@ -39,7 +41,7 @@ public async Task CreateOrderPaymentAsync_Success() { // Arrange _mockCreatePaymentUseCase.Setup(p => p.Execute(It.IsAny(), It.IsAny())) - .ReturnsAsync(new Fixture().Create()); + .ReturnsAsync(new Fixture().Create()); var createOrderPaymentRequestDto = new CreateOrderPaymentRequestDto(Guid.NewGuid(), PaymentType.Test); // Act @@ -49,7 +51,7 @@ public async Task CreateOrderPaymentAsync_Success() using (new AssertionScope()) { result.Should().NotBeNull(); - _mockPaymentRepository.Verify(r => r.SaveAsync(It.IsAny()), Times.Once); + _mockPaymentRepository.Verify(r => r.SaveAsync(It.IsAny()), Times.Once); } } @@ -57,7 +59,7 @@ public async Task CreateOrderPaymentAsync_Success() public async Task GetPaymentAsync_Success() { // Arrange - var expectedPayment = new Fixture().Create(); + var expectedPayment = new Fixture().Create(); _mockPaymentRepository.Setup(p => p.GetPaymentAsync(It.IsAny())) .ReturnsAsync(expectedPayment) .Verifiable(); @@ -78,7 +80,7 @@ public async Task GetPaymentAsync_Success() public async Task SyncPaymentStatusWithGatewayAsync_Success() { // Arrange - var expectedPayment = new Fixture().Create(); + var expectedPayment = new Fixture().Create(); _mockPaymentRepository.Setup(p => p.GetPaymentAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(expectedPayment) .Verifiable(); diff --git a/tests/Bmb.Payment.DynamoDb.Test/Repository/PaymentRepositoryTest.cs b/tests/Bmb.Payment.DynamoDb.Test/Repository/PaymentRepositoryTest.cs index 3d857ec..b2e91a5 100644 --- a/tests/Bmb.Payment.DynamoDb.Test/Repository/PaymentRepositoryTest.cs +++ b/tests/Bmb.Payment.DynamoDb.Test/Repository/PaymentRepositoryTest.cs @@ -26,7 +26,7 @@ public PaymentRepositoryTest() public async Task Create_Success() { // Arrange - var expectedPayment = new Fixture().Create(); + var expectedPayment = new Fixture().Create(); _mockDynamoDb.Setup(c => c.PutItemAsync(It.IsAny(), default)) .ReturnsAsync(new PutItemResponse { HttpStatusCode = HttpStatusCode.OK }); @@ -46,7 +46,7 @@ public async Task Create_Success() public async Task GetPaymentAsync_Success() { // Arrange - var expectedPayment = new Fixture().Create(); + var expectedPayment = new Fixture().Create(); _mockDynamoDb.Setup(c => c.GetItemAsync(It.IsAny(), default)) .ReturnsAsync(new GetItemResponse @@ -69,7 +69,7 @@ public async Task GetPaymentAsync_Success() public async Task GetPaymentAsync_ExternalReference_Success() { // Arrange - var expectedPayment = new Fixture().Create(); + var expectedPayment = new Fixture().Create(); _mockDynamoDb.Setup(c => c.QueryAsync(It.IsAny(), default)) .ReturnsAsync(new QueryResponse @@ -95,7 +95,7 @@ public async Task GetPaymentAsync_ExternalReference_Success() public async Task UpdatePaymentStatusAsync_Success() { // Arrange - var payment = new Fixture().Create(); + var payment = new Fixture().Create(); _mockDynamoDb.Setup(c => c.UpdateItemAsync(It.IsAny(), default)) .ReturnsAsync(new UpdateItemResponse { HttpStatusCode = HttpStatusCode.OK }); diff --git a/tests/Bmb.Payment.Masstransit.Test/OrderCreatedPaymentConsumerTest.cs b/tests/Bmb.Payment.Masstransit.Test/OrderCreatedPaymentConsumerTest.cs index ce5bb85..8c82d29 100644 --- a/tests/Bmb.Payment.Masstransit.Test/OrderCreatedPaymentConsumerTest.cs +++ b/tests/Bmb.Payment.Masstransit.Test/OrderCreatedPaymentConsumerTest.cs @@ -1,6 +1,6 @@ using AutoFixture; using Bmb.Domain.Core.Events.Integration; -using Bmb.Payment.Core; +using Bmb.Payment.Domain; using JetBrains.Annotations; using MassTransit; using Microsoft.Extensions.Logging;