packages feed

haskell-admin-core-1.0.0.0: test/Spec/Admin/Components.hs

{-# LANGUAGE DataKinds #-}

module Spec.Admin.Components
  ( spec
  ) where

import Admin.Components
import Test.Hspec as Hspec

import Admin.Components.ComponentDescription
  ( ComponentDescription(ComponentDescription)
  )
import Data.Version (makeVersion)
import Servant

components = cA `with` cB

cA :: Component "Comp. A" EmptyAPI
cA = Component {server = emptyServer, version = makeVersion [1]}

cB :: Component "Comp. B" EmptyAPI
cB = Component {server = emptyServer, version = makeVersion [2, 4]}

spec :: Spec
spec = do
  Hspec.describe "Admin.Components.ComponentList" $ do
    Hspec.describe "namesOf" $ do
      it "returns names of all components" $ do
        namesOf components `shouldBe` ["Comp. A", "Comp. B"]
    Hspec.describe "descriptionsOf" $ do
      it "returns descriptions of all components" $ do
        descriptionsOf components `shouldBe`
          [ ComponentDescription "Comp. A" (makeVersion [1])
          , ComponentDescription "Comp. B" (makeVersion [2, 4])
          ]