{-# LANGUAGE OverloadedStrings #-} module GEODE.Metadata.TestArticleRecord (testArticleRecord) where import Data.Csv (ToNamedRecord(..)) import Data.Foldable (toList) import Data.HashMap.Strict ((!?)) import GEODE.Metadata (Work(..), ArticleRecord(..)) import GEODE.Metadata.TSV.Header (getHeader, for) import Test.HUnit (Test(..), (~?=)) import Test.HUnit.Extra (isJust) testArticleRecord :: Test testArticleRecord = TestLabel "Testing the ArticleRecord data type" $ TestList [ testToNamedRecord ] testToNamedRecord :: Test testToNamedRecord = TestLabel "Testing ToNamedRecord instance" $ TestList [ has3Keys, validDefaultHeader ] where has3Keys = length aNamedRecord ~?= 3 validDefaultHeader = TestList . toList $ (isJust . (aNamedRecord !?)) <$> getHeader (for :: ArticleRecord) aNamedRecord = toNamedRecord aPrimaryKey aPrimaryKey :: ArticleRecord aPrimaryKey = ArticleRecord LGE 1 1212 -- ALCALA DE HÉNARÈS