Testing theory would tell us we need four tests: one that showed the case where the plane was ready, and three that showed cases where it wasn't. Each of the latter three would name a person who can override the decision to take off. Using Midje, the tests would look like this:

That's pretty ugly, and all the detail obscures what's special about each fact. Even worse, the facts don't check out:

FAIL for (t_sweet_test.clj:169)
You claimed the following was needed, but it was never used:
(copilot-ready)
FAIL for (t_sweet_test.clj:169)
You claimed the following was needed, but it was never used:
(flight-engineer-ready)
FAIL for (t_sweet_test.clj:172)
You claimed the following was needed, but it was never used:
(flight-engineer-ready)

Clojure's and is short-circuiting, so it stops evaluating once it sees the first false value. That means the facts really have to be written like this:

Having tests know detail like the order of checks is The Wrong Thing (most of the time). Let's rethink.

For any given situation in real life, there's a sort of background of facts that we assume are true unless told otherwise. Because it's a pool of facts that apply in many situations, we're not alarmed if a particular one doesn't apply in some particular situation. That given, here's how you can abbreviate the facts about ready: