In this screencast series, we will demystify hexagonal architectures, showing a simple way to TDD a hexagonal application into existence. We will build pieces of Pivotal's "Whiteboard" Application (a web application that facilitates both the presentation and the sharing out of office-wide standup items).

All feedback greatly appreciated. Feel free to:

Episode 1

https://youtu.be/XEkR3hQvcIc

In this episode, we TDD our first use case for the whiteboard application into existence. We discuss the difference between high level policy and low level detail, and we tease out those boundaries.

We hand roll a spy and a fake across two significant (and common) architectural boundaries – and we discuss when we use test doubles, and why.

We also create a contract for our fake repository, and tease out a message passing protocol between the use case and GUI.

Episode 2

https://youtu.be/54A0Yh7t8vo

In this episode, we create a Rails application and plug it into our high level policy. We show how to use our fake in memory repository for now, deferring the decision for how to concretely persist entities a bit longer. We also make use of the humble object pattern, and we don't TDD anything. <~ o.O.

Episode 3 - The Last Responsible Moment

https://youtu.be/zui9wF37dRQ

In this episode, we pretend that we've been asked to push our whiteboard rails application into production. The only problem is, we're still using the FakeWhiteboardRepo to persist our whiteboards! So we quickly spin up a real one. We TDD without writing tests! We use ActiveRecord outside of Rails! We create an optional engine. And more. Enjoy!