Ddd tdd rich domain model dojo kata
DDD patterns implemented following TDD
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](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Domain-Driven-Design-Patterns) and TDD at [TheThreeRulesOfTdd](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd). The project is written primarily in C#, distributed under the Apache License 2.0 license, first published in 2018. Key topics include: agile, c-sharp, coverage, ddd, ddd-.
.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.
:gem: Compiling from source
Clone this repository to your machine, compile and test it:
shgit clone https://github.com/ivanpaulovich/ddd-tdd-rich-domain.git cd ddd-tdd-rich-domain dotnet test
:construction_worker: Use cases
This project was designed do cover the following use cases and requirements:
- A Customer could register a new Checking Account using its personal details.
- Allow a customer to deposit funds into an existing account.
- Allow the customer to withdraw funds from an existing account.
- Allow the customer to close a Checking Account only if the balance is zero.
- Do not allow the Customer to Withdraw more than the existing funds.
- Allow to get the account details.
- Allow to get the customer details.
:memo: The Domain Model

:computer: Tech stuff
- .NET Core 3.1
- xUnit
:alien: 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.
:alien: The expected Model has
- Customer and Checking Account Aggregate Roots.
- Credit and Debit Entities.
- Amount, Name and SSN Value Objects.
:alien: Create a Test Class for the Register use case.
:alien: Then begin with the domain implementation.
:alien: Refactor the code.
:alien: Add more tests and continue with the implementation.
:alien: Refactor and Repeat.
Contributors
Showing top 1 contributor by commit count.
