Skip to content
Snippets Groups Projects
TestArticleRecord.hs 942 B
{-# 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