j18Tests :: TestTree
j18Tests = decisionTestGroup "j18" "GET or HEAD? (resource exists)"
  [ testCase "True (GET) ==> 304 Not Modified" $
      after' j18 resource req @?= Done' notModified304
  , testCase "True (HEAD) ==> 304 Not Modified" $
      let rq = req { reqMethod = methodHead }
      in after' j18 resource rq @?= Done' notModified304
  , testCase "False ==> 412 Precondition Failed" $
      let rq = req { reqMethod = methodPost }
      in after' j18 resource rq @?= error' preconditionFailed412
  ]
j18Tests :: TestTree
j18Tests = decisionTestGroup "j18" "GET or HEAD? (resource exists)"
  [ testCase "True (GET) ==> 304 Not Modified" $
      after' j18 resource req @?= Done' notModified304
  , testCase "True (HEAD) ==> 304 Not Modified" $
      let rq = req { reqMethod = methodHead }
      in after' j18 resource rq @?= Done' notModified304
  , testCase "False ==> 412 Precondition Failed" $
      let rq = req { reqMethod = methodPost }
      in after' j18 resource rq @?= error' preconditionFailed412
  ]
j18Tests = decisionTestGroup "j18" "GET or HEAD? (resource exists)"
  [ testCase "True (GET) ==> 304 Not Modified" $
      after' j18 resource req @?= Done' notModified304
  , testCase "True (HEAD) ==> 304 Not Modified" $
      let rq = req { reqMethod = methodHead }
      in after' j18 resource rq @?= Done' notModified304
  , testCase "False ==> 412 Precondition Failed" $
      let rq = req { reqMethod = methodPost }
      in after' j18 resource rq @?= error' preconditionFailed412
  ]