Skip to content

Refactors application layer abstractions#48

Merged
jldsilva merged 2 commits into
developmentfrom
Refactor-Result-Pattern
Sep 7, 2025
Merged

Refactors application layer abstractions#48
jldsilva merged 2 commits into
developmentfrom
Refactor-Result-Pattern

Conversation

@jldsilva

@jldsilva jldsilva commented Sep 7, 2025

Copy link
Copy Markdown
Owner

Moves the Result abstraction from the Application layer to the Domain layer.
This change promotes a cleaner architecture by aligning the Result type with core domain concepts, improving maintainability and reducing dependencies on the Application layer.

Updates Telegram.Bot package to version 22.7.2.

Description by Callstackai

This PR refactors the application layer abstractions by moving the Result type from the Application layer to the Domain layer, updates the Telegram.Bot package to version 22.7.2, and adjusts the necessary imports in the unit tests and application services.

Diagrams of code changes
sequenceDiagram
    participant Client
    participant API
    participant AppService
    participant Domain

    Note over Domain: New Result<T> class added
    
    Client->>API: Make API request
    API->>AppService: Forward request
    AppService->>Domain: Process using Result<T>
    
    alt Exception Case
        Domain-->>AppService: Throw ApplicationException
        AppService-->>API: Return Error Result
        API-->>Client: Return Error Response
    else Success Case
        Domain-->>AppService: Return Success Result
        AppService-->>API: Return Success Result
        API-->>Client: Return Success Response
    end
Loading
Files Changed
FileSummary
Directory.Packages.propsUpdated Telegram.Bot package version from 22.7.1 to 22.7.2.
InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.API.UnitTests/Endpoints/JobScheduleEndPointsTests.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.API.UnitTests/Endpoints/LoginEndpointTests.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.API.UnitTests/Endpoints/UserEndpointsTests.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/AppServices/BaseAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/AppServices/InvoiceAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/AppServices/JobScheduleAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/AppServices/ScanEmailDefinitionAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/AppServices/UserAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/Interfaces/IBaseAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/Interfaces/IInvoiceAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/Interfaces/IJobScheduleAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/Interfaces/IScanEmailDefinitionAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Application/Interfaces/IUserAppService.csUpdated import from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.
InvoiceReminder.Domain/Abstractions/Result.csUpdated namespace from InvoiceReminder.Application.Abstractions to InvoiceReminder.Domain.Abstractions.

This PR includes files in programming languages that we currently do not support. We have not reviewed files with the extensions .props, .cs. See list of supported languages.

Summary by CodeRabbit

  • Novidades
    • Nenhuma alteração visível ao usuário final.
  • Refatoração
    • Migração das abstrações para o domínio, sem mudanças de comportamento ou da API pública.
  • Testes
    • Atualização dos imports e adaptações nos testes para refletir a nova organização das abstrações.
  • Tarefas
    • Atualização da dependência Telegram.Bot para a versão 22.7.2.
  • Estilo
    • Ajuste de formatação (nova linha ao final de arquivo).

Moves the Result abstraction from the Application layer to the Domain layer.
This change promotes a cleaner architecture by aligning the Result type with core domain concepts, improving maintainability and reducing dependencies on the Application layer.

Updates Telegram.Bot package to version 22.7.2.
@jldsilva jldsilva self-assigned this Sep 7, 2025
@jldsilva jldsilva added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Sep 7, 2025
@coderabbitai

coderabbitai Bot commented Sep 7, 2025

Copy link
Copy Markdown

Walkthrough

Atualização do pacote Telegram.Bot para 22.7.2 e migração de referências de namespace de InvoiceReminder.Application.Abstractions para InvoiceReminder.Domain.Abstractions em serviços, interfaces e testes; o tipo público Result<T> teve seu namespace movido. Também houve renomeação de método em IScanEmailDefinitionAppService em testes (GetBySenderBeneficiaryAsync → GetBySenderEmailAddressAsync).

Changes

Cohort / File(s) Resumo das mudanças
Gerenciamento de pacotes
Directory.Packages.props
Atualizado Telegram.Bot 22.7.1 → 22.7.2; adicionada nova linha no fim do arquivo.
Testes de Endpoints (API Unit Tests)
InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.cs, .../JobScheduleEndPointsTests.cs, .../LoginEndpointTests.cs, .../ScanEmailDefinitionEndpointsTests.cs, .../UserEndpointsTests.cs
Troca de using: InvoiceReminder.Application.AbstractionsInvoiceReminder.Domain.Abstractions. Em ScanEmailDefinitionEndpointsTests método usado mudou para GetBySenderEmailAddressAsync e exceção simulada ajustada para ApplicationException.
Application AppServices
InvoiceReminder.Application/AppServices/BaseAppService.cs, .../InvoiceAppService.cs, .../JobScheduleAppService.cs, .../ScanEmailDefinitionAppService.cs, .../UserAppService.cs
Substituição do using para InvoiceReminder.Domain.Abstractions; implementação e lógica inalteradas.
Application Interfaces
InvoiceReminder.Application/Interfaces/IBaseAppService.cs, .../IInvoiceAppService.cs, .../IJobScheduleAppService.cs, .../IScanEmailDefinitionAppService.cs, .../IUserAppService.cs
Troca de using: Application → Domain Abstractions. Observado uso/menção de GetBySenderEmailAddressAsync para IScanEmailDefinitionAppService. Assinaturas (exceto a renomeação mencionada) aparentemente mantidas.
Domain Abstractions
InvoiceReminder.Domain/Abstractions/Result.cs
Tipo público Result<T> movido de namespace InvoiceReminder.Application.Abstractions para InvoiceReminder.Domain.Abstractions.

Estimated code review effort

🎯 3 (Moderado) | ⏱️ ~20 minutos

Possibly related PRs

Poem

Pulando entre namespaces, eu vou cantar,
Do Application ao Domain, vou me aninhar.
Result trocou a toca, tudo a brilhar,
Bots atualizados, prontos pra saltitar. 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ee40a20 and 60b974d.

📒 Files selected for processing (1)
  • InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.cs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.cs
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (csharp)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch Refactor-Result-Pattern

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.cs (1)

468-481: Teste configura o método errado no mock (nome incorreto).

Configura GetBySenderBeneficiaryAsync mas valida GetBySenderEmailAddressAsync; o teste falha.

Corrija:

-        _ = _scanEmailDefinitionAppService.GetBySenderBeneficiaryAsync(Arg.Any<string>(), Arg.Any<Guid>())
-            .ThrowsAsync(new ArgumentException("Service error"));
+        _ = _scanEmailDefinitionAppService.GetBySenderEmailAddressAsync(Arg.Any<string>(), Arg.Any<Guid>())
+            .ThrowsAsync<ArgumentException>();
🧹 Nitpick comments (6)
InvoiceReminder.Domain/Abstractions/Result.cs (1)

5-7: Aprimorar anotações de nulabilidade para reduzir warnings e deixar a intenção explícita.

Permite Error nulo em sucesso e documenta que Value pode ser default em falha, sem quebrar usos com tipos valor.

Aplique:

+using System.Diagnostics.CodeAnalysis;
-namespace InvoiceReminder.Domain.Abstractions;
+namespace InvoiceReminder.Domain.Abstractions;

 public class Result<T>
 {
     public bool IsSuccess { get; }
-    public T Value { get; }
-    public string Error { get; }
+    [MaybeNull] public T Value { get; }
+    public string? Error { get; }

-    protected Result(bool isSuccess, T value, string error)
+    protected Result(bool isSuccess, [AllowNull] T value, string? error)
     {
         IsSuccess = isSuccess;
         Value = value;
         Error = error;
     }

Also applies to: 9-24

InvoiceReminder.Application/AppServices/BaseAppService.cs (1)

47-54: Evitar dupla enumeração em GetAll().

Materialize antes de checar vazio e mapear.

     public virtual Result<IEnumerable<TEntityViewModel>> GetAll()
     {
-        var entities = _repository.GetAll();
-
-        return !entities.Any()
-            ? Result<IEnumerable<TEntityViewModel>>.Failure($"Empty Result.")
-            : Result<IEnumerable<TEntityViewModel>>.Success(entities.Adapt<IEnumerable<TEntityViewModel>>());
+        var entities = _repository.GetAll();
+        var list = entities as ICollection<TEntity> ?? entities.ToList();
+        return list.Count == 0
+            ? Result<IEnumerable<TEntityViewModel>>.Failure("Empty Result.")
+            : Result<IEnumerable<TEntityViewModel>>.Success(list.Adapt<IEnumerable<TEntityViewModel>>());
     }
InvoiceReminder.Application/AppServices/InvoiceAppService.cs (1)

19-26: Validar entrada do barcode.

Evita chamada ao repositório com string nula/vazia.

     public async Task<Result<InvoiceViewModel>> GetByBarcodeAsync(string value)
     {
+        if (string.IsNullOrWhiteSpace(value))
+        {
+            return Result<InvoiceViewModel>.Failure($"Parameter {nameof(value)} was Null or Empty.");
+        }
         var entity = await _repository.GetByBarCodeAsync(value);

         return entity is null
             ? Result<InvoiceViewModel>.Failure("Invoice not Found.")
             : Result<InvoiceViewModel>.Success(entity.Adapt<InvoiceViewModel>());
     }
InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.cs (1)

501-503: URLs com e sem barra final — padronizar para evitar flutuação de roteamento

Há chamadas com “/api/invoice/” e “/api/invoice”. Sugiro padronizar (com ou sem “/”) para manter consistência nos testes e nos endpoints.

Also applies to: 599-601

InvoiceReminder.Application/Interfaces/IUserAppService.cs (2)

9-9: Nome do parâmetro pode refletir melhor o domínio

Trocar "value" por "email" melhora a clareza sem impacto funcional.

-    Task<Result<UserViewModel>> GetByEmailAsync(string value);
+    Task<Result<UserViewModel>> GetByEmailAsync(string email);

7-10: Considere aceitar CancellationToken nas operações async do AppService

Facilita cancelamento e propagação de timeouts; é mudança opcional porém breaking para implementações.

- public interface IUserAppService : IBaseAppService<User, UserViewModel>
+ public interface IUserAppService : IBaseAppService<User, UserViewModel>
  {
-     Task<Result<UserViewModel>> GetByEmailAsync(string email);
+     Task<Result<UserViewModel>> GetByEmailAsync(string email, System.Threading.CancellationToken cancellationToken = default);
  }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f779584 and ee40a20.

📒 Files selected for processing (17)
  • Directory.Packages.props (2 hunks)
  • InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.cs (1 hunks)
  • InvoiceReminder.API.UnitTests/Endpoints/JobScheduleEndPointsTests.cs (1 hunks)
  • InvoiceReminder.API.UnitTests/Endpoints/LoginEndpointTests.cs (1 hunks)
  • InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.cs (1 hunks)
  • InvoiceReminder.API.UnitTests/Endpoints/UserEndpointsTests.cs (1 hunks)
  • InvoiceReminder.Application/AppServices/BaseAppService.cs (1 hunks)
  • InvoiceReminder.Application/AppServices/InvoiceAppService.cs (1 hunks)
  • InvoiceReminder.Application/AppServices/JobScheduleAppService.cs (1 hunks)
  • InvoiceReminder.Application/AppServices/ScanEmailDefinitionAppService.cs (1 hunks)
  • InvoiceReminder.Application/AppServices/UserAppService.cs (1 hunks)
  • InvoiceReminder.Application/Interfaces/IBaseAppService.cs (1 hunks)
  • InvoiceReminder.Application/Interfaces/IInvoiceAppService.cs (1 hunks)
  • InvoiceReminder.Application/Interfaces/IJobScheduleAppService.cs (1 hunks)
  • InvoiceReminder.Application/Interfaces/IScanEmailDefinitionAppService.cs (1 hunks)
  • InvoiceReminder.Application/Interfaces/IUserAppService.cs (1 hunks)
  • InvoiceReminder.Domain/Abstractions/Result.cs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (13)
InvoiceReminder.Application/Interfaces/IInvoiceAppService.cs (4)
InvoiceReminder.Application.UnitTests/AppServices/InvoiceAppServiceTests.cs (1)
  • InvoiceAppServiceTests (11-95)
InvoiceReminder.Data/Interfaces/IInvoiceRepository.cs (1)
  • IInvoiceRepository (5-8)
InvoiceReminder.ArchitectureTests/Services/AppServicesTests.cs (1)
  • AppServicesTests (9-67)
InvoiceReminder.Domain/Entities/Invoice.cs (1)
  • Invoice (3-11)
InvoiceReminder.Application/AppServices/InvoiceAppService.cs (1)
InvoiceReminder.ArchitectureTests/Services/AppServicesTests.cs (1)
  • AppServicesTests (9-67)
InvoiceReminder.API.UnitTests/Endpoints/JobScheduleEndPointsTests.cs (2)
InvoiceReminder.ArchitectureTests/Domain/ExtensionsTests.cs (1)
  • ExtensionsTests (7-28)
InvoiceReminder.ArchitectureTests/Domain/EntitiesTests.cs (1)
  • GivenDomainLayer_ThenShouldNotHaveAnyDependencies (10-22)
InvoiceReminder.API.UnitTests/Endpoints/UserEndpointsTests.cs (1)
InvoiceReminder.ArchitectureTests/Presentation/EndpointsTests.cs (3)
  • EndpointsTests (7-43)
  • GivenPresentationLayer_EndpointsMustdBeImplementedAsFollow (24-42)
  • GivenPresentationLayer_ThenShouldNotHaveAnyDependencies (10-22)
InvoiceReminder.Application/Interfaces/IScanEmailDefinitionAppService.cs (4)
InvoiceReminder.Domain/Entities/ScanEmailDefinition.cs (1)
  • ScanEmailDefinition (5-13)
InvoiceReminder.Data/Interfaces/IScanEmailDefinitionRepository.cs (1)
  • IScanEmailDefinitionRepository (5-10)
InvoiceReminder.Application.UnitTests/AppServices/ScanEmailDefinitionAppServiceTests.cs (1)
  • ScanEmailDefinitionAppServiceTests (12-224)
InvoiceReminder.Application/ViewModels/ScanEmailDefinitionViewModel.cs (1)
  • ScanEmailDefinitionViewModel (5-29)
InvoiceReminder.Application/Interfaces/IJobScheduleAppService.cs (1)
InvoiceReminder.Application.UnitTests/AppServices/JobScheduleAppServiceTests.cs (1)
  • JobScheduleAppServiceTests (13-154)
InvoiceReminder.API.UnitTests/Endpoints/LoginEndpointTests.cs (1)
InvoiceReminder.ArchitectureTests/Presentation/EndpointsTests.cs (3)
  • EndpointsTests (7-43)
  • GivenPresentationLayer_ThenShouldNotHaveAnyDependencies (10-22)
  • GivenPresentationLayer_EndpointsMustdBeImplementedAsFollow (24-42)
InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.cs (1)
InvoiceReminder.ArchitectureTests/Presentation/EndpointsTests.cs (3)
  • EndpointsTests (7-43)
  • GivenPresentationLayer_ThenShouldNotHaveAnyDependencies (10-22)
  • GivenPresentationLayer_EndpointsMustdBeImplementedAsFollow (24-42)
Directory.Packages.props (1)
InvoiceReminder.Services/BackgroundServices/TelegramBotBackgroundService.cs (1)
  • TelegramUpdateHandler (65-157)
InvoiceReminder.Application/AppServices/JobScheduleAppService.cs (2)
InvoiceReminder.Data/Migrations/20250509040148_Initial_Create.Designer.cs (2)
  • Initial_Create (14-259)
  • b (29-80)
InvoiceReminder.Data/Persistence/CoreDbContext.cs (1)
  • CoreDbContext (6-49)
InvoiceReminder.Application/Interfaces/IUserAppService.cs (1)
InvoiceReminder.Data/Interfaces/IUserRepository.cs (1)
  • IUserRepository (5-9)
InvoiceReminder.Domain/Abstractions/Result.cs (1)
InvoiceReminder.Application/Abstractions/Result.cs (3)
  • Result (3-25)
  • Success (16-19)
  • Result (9-14)
InvoiceReminder.Application/AppServices/BaseAppService.cs (1)
InvoiceReminder.Data/Migrations/CoreDbContextModelSnapshot.cs (3)
  • InvoiceReminder.Data.Migrations (12-259)
  • CoreDbContextModelSnapshot (14-258)
  • b (171-219)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (csharp)
🔇 Additional comments (19)
InvoiceReminder.Application/Interfaces/IBaseAppService.cs (2)

1-1: Migração de namespace para Domain.Abstractions confirmada.

Alinha o contrato da aplicação com o novo local do Result. Sem impacto nas assinaturas.


7-13: Sem referências remanescentes a InvoiceReminder.Application.Abstractions ou InvoiceReminder.Domain.Abstractions. Não foram encontradas correspondências na base de código nem no projeto API.

Directory.Packages.props (1)

45-45: Confirmado bump do Telegram.Bot para 22.7.2
22.7.2 é a versão mais recente no NuGet (atualizada em 03/09/2025) e traz correções de tipo em TopicId, StarCount e Amount, além de ajuste na posição do parâmetro messageThreadId em SendPaidMedia.
Pode prosseguir com a atualização.

InvoiceReminder.Domain/Abstractions/Result.cs (1)

1-1: Namespace movido para Domain.Abstractions — OK.

Mantém API pública inalterada; mudança organizacional coerente.

InvoiceReminder.Application/AppServices/BaseAppService.cs (1)

3-3: Import atualizado para Domain.Abstractions — OK.

InvoiceReminder.API.UnitTests/Endpoints/ScanEmailDefinitionEndpointsTests.cs (1)

4-4: Import trocado para Domain.Abstractions — OK.

InvoiceReminder.API.UnitTests/Endpoints/LoginEndpointTests.cs (1)

8-8: Import para Domain.Abstractions atualizado — OK.

InvoiceReminder.Application/AppServices/InvoiceAppService.cs (1)

4-4: Import atualizado — OK.

InvoiceReminder.Application/Interfaces/IJobScheduleAppService.cs (1)

2-2: Import movido para Domain.Abstractions — OK.

InvoiceReminder.API.UnitTests/Endpoints/JobScheduleEndPointsTests.cs (1)

4-4: Migração completa e verificada

Não há referências remanescentes a InvoiceReminder.Application.Abstractions, o projeto InvoiceReminder.API não possui usings de InvoiceReminder.Domain.* e os testes já utilizam InvoiceReminder.Domain.Abstractions.

InvoiceReminder.Application/AppServices/ScanEmailDefinitionAppService.cs (1)

4-4: Import para Domain.Abstractions consistente

Alinha o AppService ao novo local de Result. Sem impactos de lógica.

InvoiceReminder.API.UnitTests/Endpoints/UserEndpointsTests.cs (1)

4-4: Import atualizado — testes continuam alinhados ao novo Result

Mudança mínima e correta.

InvoiceReminder.API.UnitTests/Endpoints/InvoiceEndpointsTests.cs (2)

4-4: Import para Domain.Abstractions — OK

Mantém os testes compatíveis com a migração do Result.


1-1: Validar bump do Telegram.Bot (22.7.2)
Confirme que, após a atualização para a versão 22.7.2, não houve breaking changes nas integrações com o Telegram: execute testes de integração ou um teste de ponta a ponta envolvendo o TelegramMessageService e o TelegramBotBackgroundService para envio e recebimento de mensagens sem erros.

InvoiceReminder.Application/AppServices/JobScheduleAppService.cs (1)

4-4: Import migrado corretamente

AppService agora referencia Domain.Abstractions; compatível com o novo posicionamento do Result.

InvoiceReminder.Application/Interfaces/IInvoiceAppService.cs (1)

2-2: Interface atualizada para Domain.Abstractions — OK

Sem alterações de contrato público; apenas o namespace de Result.

InvoiceReminder.Application/Interfaces/IScanEmailDefinitionAppService.cs (1)

2-2: Import para Domain.Abstractions — OK

Coerente com a migração do Result.

InvoiceReminder.Application/AppServices/UserAppService.cs (1)

4-4: Import migrado — OK

Mantém a lógica intacta e usa o novo Result do Domínio.

InvoiceReminder.Application/Interfaces/IUserAppService.cs (1)

2-2: Aprovado: nenhuma referência ao namespace antigo encontrada
Não foram encontradas referências a InvoiceReminder.Application.Abstractions em nenhum arquivo .cs (excluindo bin/ e obj/). Mudança de namespace para InvoiceReminder.Domain.Abstractions está correta.

Modifies the unit test to assert that a specific
ApplicationException is thrown, providing a more
accurate and reliable test case.
@jldsilva jldsilva merged commit 897bd02 into development Sep 7, 2025
5 checks passed
@jldsilva jldsilva deleted the Refactor-Result-Pattern branch September 7, 2025 23:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant