Packages
one_piece_commanded
0.2.1
0.26.0
0.25.2
0.25.1
0.25.0
0.24.0
0.23.0
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Extend Commanded package
Current section
Files
Jump to
Current section
Files
one_piece_commanded
README.md
README.md
# OnePiece.Commanded
Extend `Commanded` package. A swiss army knife for applications following
Domain-Driven Design (DDD), Event Sourcing (ES), and Command and Query
Responsibility Segregation (CQRS).
## What is next?
Check the following modules, if you are familiar with DDD, ES, and CQRS they
should be familiar to you.
- Defining an `OnePiece.Commanded.Entity`
- Defining a `OnePiece.Commanded.ValueObject`
- Converting your entity into a `OnePiece.Commanded.Aggregate`
- Defining a `OnePiece.Commanded.Command`
- Handling a command in a `OnePiece.Commanded.CommandHandler`
- Handling a query in a `OnePiece.Commanded.QueryHandler`
## Testing
> We publish some `ExUnit.CaseTemplate` as part of the package, we don't have
> that code to be compiled to production, or maintain a different package we
> must do some workaround the limitations problems, for now.
The test files are under `test/test_support/command_handler_case.ex`, since the
modules is not under `lib` directory, Elixir will not load this module without
importing the file manually:
In your `test_helper.exs`, add the following code-snippet:
```elixir
one_piece_commanded_path = Mix.Project.deps_paths()[:one_piece_commanded]
Code.require_file "#{one_piece_commanded_path}/test/test_support/command_handler_case.exs", __DIR__
# ...
ExUnit.start()
```
- `OnePiece.Commanded.TestSupport.CommandHandlerCase`: helps with test cases for
testing aggregate states, and command handlers.