packages feed

ocaml-export-0.6.0.0: test/Spec.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}

-- base
import Control.Concurrent (forkIO)
import Data.Monoid ((<>))
-- hspec
import Test.Hspec
-- ocaml-export
import qualified Dependency as D
import qualified FileApp as File
import qualified Product as Product
import qualified ProductApp as Product
import qualified Sum as Sum
import SumApp
import OCaml.Export
-- warp
import Network.Wai.Handler.Warp

main :: IO ()
main = do
  hspec Product.spec
  hspec Sum.spec
  hspec File.spec
  hspec D.spec

  hspec $
    describe "mkOCamlTypeMetaData" $
      it "mkOCamlTypeMetaData on package A and B should equal mkOCamlTypeMetaData on B which has A as a dependency" $
        (mkOCamlTypeMetaData (Proxy :: Proxy Product.ProductPackage)) <> (mkOCamlTypeMetaData (Proxy :: Proxy D.DependencyPackageWithoutProduct))
          `shouldBe` mkOCamlTypeMetaData (Proxy :: Proxy D.DependencyPackage)

  _ <- forkIO $ run 8081 Product.productPackageApp
  _ <- forkIO $ run 8082 sumPackageApp
  run 8083 File.filePackageApp
  pure ()