packages feed

morley-upgradeable-0.3: src/Lorentz/Contracts/Upgradeable/Test.hs

-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ

module Lorentz.Contracts.Upgradeable.Test
  ( -- * Test predicates
    testUpgradeableContractDoc

    -- * Individual test predicates
  , testSingleVersion
  ) where

import Prelude

import Test.HUnit (assertFailure)

import Lorentz.Contracts.Upgradeable.Common
import Lorentz.Test.Doc

-- | Check that contract documentation mentions version only once.
testSingleVersion :: DocTest
testSingleVersion =
  mkDocTest "Version documented" $
  \doc ->
    case allContractDocItems @DVersion doc of
      [] -> assertFailure "Contract contains no 'DVersion'"
      [_] -> pass
      _ -> assertFailure "Contract contains several 'DVersion's"

-- | Test all properties of upgradeable contract.
testUpgradeableContractDoc :: [DocTest]
testUpgradeableContractDoc = mconcat
  [ testLorentzDoc
  , [ testSingleVersion
    ]
  ]