Skip to content

ivanpaulovich/ddd-tdd-rich-domain-model-dojo-kata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

66 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

.NET Standard project with DDD patterns covered with Unit Tests

Design the Virtual Wallet using Aggregate Roots, Entities and Value Objects and cover the uses cases with Unit Tests. At the Clean Architecture Manga you could learn the DDD patterns and TDD at TheThreeRulesOfTdd.

πŸ’Ž Compiling from source

Clone this repository to your machine, compile and test it:

git clone https://github.com/ivanpaulovich/ddd-tdd-rich-domain.git
cd ddd-tdd-rich-domain
dotnet test

πŸ‘· Use cases

This project was designed do cover the following use cases and requirements:

  1. A Customer could register a new Checking Account using its personal details.
  2. Allow a customer to deposit funds into an existing account.
  3. Allow the customer to withdraw funds from an existing account.
  4. Allow the customer to close a Checking Account only if the balance is zero.
  5. Do not allow the Customer to Withdraw more than the existing funds.
  6. Allow to get the account details.
  7. Allow to get the customer details.

πŸ“ The Domain Model

Domain Model

πŸ’» Tech stuff

  • .NET Core 3.1
  • xUnit

πŸ‘½ Kata

Build a Rich Domain from tests using DDD Building Blocks like Aggregate Roots, Entities and Value Objects with the help of kata-initial folder files.

πŸ‘½ The expected Model has

  • Customer and Checking Account Aggregate Roots.
  • Credit and Debit Entities.
  • Amount, Name and SSN Value Objects.

πŸ‘½ Create a Test Class for the Register use case.

πŸ‘½ Then begin with the domain implementation.

πŸ‘½ Refactor the code.

πŸ‘½ Add more tests and continue with the implementation.

πŸ‘½ Refactor and Repeat.