Summary
On top of the Domain hexagon, we built the Application hexagon with use cases and ports. For use cases, we heavily relied on the behavior-driven development tool called Cucumber. With Cucumber, we could express the use cases supported by the system not only in code terms but also in written words.
We started by creating Cucumber feature files containing the use case written descriptions and then used them as a reference to create use case interfaces. These interfaces were then implemented by input ports that provided a concrete way to achieve use case goals. Finally, we built use case tests, based again on the written description provided by Cucumber.
By implementing and testing the Application hexagon in this way, we leveraged the special capabilities of Cucumber to express the system's behavior in a declarative and straightforward form, and we used these same capabilities to implement and test the entire Application hexagon.
On top of the Application hexagon...