xing-api-0.1.1: tests/Types/ProfessionalExperienceTest.hs
{-# OPTIONS_GHC -F -pgmF htfpp #-}
{-# LANGUAGE OverloadedStrings #-}
module Types.ProfessionalExperienceTest where
import Test.Framework
import Web.XING
import Data.Maybe
import Data.Aeson
import qualified Data.ByteString.Lazy as BSL
-- valid fields
test_noContentValid :: IO ()
test_noContentValid
= assertValidProfessionalExperience
" { \
\ \"title\": null, \
\ \"begin_date\": null, \
\ \"end_date\": null, \
\ \"career_level\": null, \
\ \"description\": null, \
\ \"name\": null, \
\ \"tag\": null, \
\ \"company_size\": null, \
\ \"url\": null, \
\ \"industry\": \"OTHERS\" \
\ } "
fullProfessionalExperience :: BSL.ByteString
fullProfessionalExperience =
" { \
\ \"title\": \"Softwareentwickler\", \
\ \"begin_date\": \"2010-01\", \
\ \"end_date\": \"2012-12\", \
\ \"career_level\": \"PROFESSIONAL_EXPERIENCED\", \
\ \"description\": \"awesome description\", \
\ \"name\": \"XING AG\", \
\ \"tag\": \"XINGAG\", \
\ \"company_size\": \"201-500\", \
\ \"url\": \"https://www.xing.com\", \
\ \"industry\": \"OTHERS\" \
\ } "
test_fullProfessionalExperienceValid :: IO ()
test_fullProfessionalExperienceValid
= assertValidProfessionalExperience fullProfessionalExperience
test_contentMappedCorrect :: IO ()
test_contentMappedCorrect
= assertEqual (ProfessionalExperience
(Just "Softwareentwickler")
(Just "2010-01")
(Just "2012-12")
(Just "PROFESSIONAL_EXPERIENCED")
(Just "awesome description")
(Just "XING AG")
(Just "XINGAG")
(Just "201-500")
(Just "https://www.xing.com")
"OTHERS") (fromJust $ parseProfessionalExperience fullProfessionalExperience)
-- invalid fields
test_emptyHashNotValid :: IO ()
test_emptyHashNotValid
= assertInvalidProfessionalExperience
"{}"
test_someFieldsMissing :: IO ()
test_someFieldsMissing
= assertInvalidProfessionalExperience
" { \
\ \"name\": null, \
\ \"tag\": null, \
\ \"company_size\": null, \
\ \"url\": null, \
\ \"industry\": \"OTHERS\" \
\ } "
parseProfessionalExperience
:: BSL.ByteString
-> Maybe ProfessionalExperience
parseProfessionalExperience = decode
assertValidProfessionalExperience, assertInvalidProfessionalExperience
:: BSL.ByteString
-> IO ()
assertValidProfessionalExperience = assertBool . isJust . parseProfessionalExperience
assertInvalidProfessionalExperience = assertBool . isNothing . parseProfessionalExperience
main :: IO ()
main = htfMain htf_thisModulesTests