`run_planned` and `finazlie_planned` are testing that the phases were planned into `ExecutionPlan`, I think they both can independently be or not be there based on presence of `#run` and `#finalize` methods. Without the second parameter it will test for the `action`. 

`assert_actoin_self_planned(input)` can be replaced by: `action = create_and_plan_action ActionClass; action.input.must_equal({})`. I'm not sure if we need the extra assert.