packages feed

pgmq-inspect-0.7.0.0: test/WireGoldenSpec.hs

module WireGoldenSpec (tests) where

import Data.Aeson (encode)
import Pgmq.Inspect.Error (ErrorBody (..), invalidCursor)
import Pgmq.Inspect.Wire
import Pgmq.Types (MessageId (..))
import Test.Tasty (TestTree, localOption, testGroup)
import Test.Tasty.Golden (NoCreateFile (..), goldenVsString)

tests :: TestTree
tests =
  localOption (NoCreateFile True) $
    testGroup
      "Wire shapes (golden)"
      [ goldenVsString "page with a next cursor" "test/golden/page-more.json" $
          pure (encode (Page [1 :: Int, 2, 3] (Just (MessageId 3)))),
        goldenVsString "last page omits next_cursor" "test/golden/page-last.json" $
          pure (encode (Page [4 :: Int] Nothing)),
        goldenVsString "error envelope with details" "test/golden/error-invalid-cursor.json" $
          pure (encode (invalidCursor "x")),
        goldenVsString "error envelope without details" "test/golden/error-plain.json" $
          pure (encode (ErrorBody "not_found" "No route matches this path." Nothing)),
        goldenVsString "service descriptor" "test/golden/descriptor.json" $
          pure (encode (ServiceDescriptor "pgmq-inspect" "0.1.0.0" "ws" "openapi.json")),
        goldenVsString "liveness" "test/golden/health-live.json" $
          pure (encode (LivenessBody True)),
        goldenVsString "readiness" "test/golden/health-ready.json" $
          pure (encode (ReadinessBody False [DependencyCheck "postgres" False (Just 12) (Just "timed out")]))
      ]