testCfRun
  :: forall effs a
  .  (Members '[ ConfigEff, Reader Params, Writer Journal ] effs)
  => (Eff (CfEff ': effs) a -> Eff effs a)
testCfRun = interpret (\case

  CreateStack name template -> do
    cfAction $ CreateStackAction name template

  UpdateStack name template -> do
    cfAction $ UpdateStackAction name template

  DeleteStack name ->
    panic "DeleteStack"

  DescribeStacks -> do
    cfAction $ DescribeStacksAction
    asks stacks

  WaitOnStackStatus name status isAbsentOk -> do
    -- asks stackdescs
    pure ()

  )
testCfRun
  :: forall effs a
  .  (Members '[ ConfigEff, Reader Params, Writer Journal ] effs)
  => (Eff (CfEff ': effs) a -> Eff effs a)
testCfRun = interpret (\case

  CreateStack name template -> do
    cfAction $ CreateStackAction name template

  UpdateStack name template -> do
    cfAction $ UpdateStackAction name template

  DeleteStack name ->
    panic "DeleteStack"

  DescribeStacks -> do
    cfAction $ DescribeStacksAction
    asks stacks

  WaitOnStackStatus name status isAbsentOk -> do
    -- asks stackdescs
    pure ()

  )
testCfRun = interpret (\case

  CreateStack name template -> do
    cfAction $ CreateStackAction name template

  UpdateStack name template -> do
    cfAction $ UpdateStackAction name template

  DeleteStack name ->
    panic "DeleteStack"

  DescribeStacks -> do
    cfAction $ DescribeStacksAction
    asks stacks

  WaitOnStackStatus name status isAbsentOk -> do
    -- asks stackdescs
    pure ()

  )