themoviedb-1.0.0.0: test/TVTest.hs
{-# LANGUAGE OverloadedStrings #-}
--------------------------------------------------------------------------------
module TVTest (tests) where
--------------------------------------------------------------------------------
import Test.Tasty
import Test.Tasty.HUnit
import TestHelper
--------------------------------------------------------------------------------
import qualified Data.Text as T
import Network.API.TheMovieDB
--------------------------------------------------------------------------------
testTVBasicFields :: TV -> Assertion
testTVBasicFields tv = do
assertEqual "id" 1437 (tvID tv)
assertEqual "name" "Firefly" (tvName tv)
assertEqual "poster" "/mWNadwBZIx8NyEw4smGftYtHHrE.jpg" (tvPosterPath tv)
assertEqual "aired" (mkDay 2002 12 20) (tvFirstAirDate tv)
--------------------------------------------------------------------------------
testSearchTV :: Assertion
testSearchTV = do
tvs <- fakeTMDB "test/search-tv-good.json" (searchTV T.empty)
assertEqual "length" 1 (length tvs)
mapM_ testTVBasicFields tvs
--------------------------------------------------------------------------------
testFetchTV :: Assertion
testFetchTV = do
tv <- fakeTMDB "test/tv-good.json" (fetchTV 0)
testTVBasicFields tv
assertEqual "genres" 2 (length $ tvGenres tv)
assertEqual "seasons" 1 (tvNumberOfSeasons tv)
assertEqual "episodes" 13 (tvNumberOfEpisodes tv)
assertEqual "season len" 2 (length $ tvSeasons tv)
--------------------------------------------------------------------------------
testFetchSeason :: Assertion
testFetchSeason = do
season <- fakeTMDB "test/season-good.json" (fetchTVSeason 0 0)
assertEqual "length" 14 (length $ seasonEpisodes season)
--------------------------------------------------------------------------------
testSeasonPoster :: Assertion
testSeasonPoster = do
cfg <- fakeTMDB "test/config-good.json" config
season <- fakeTMDB "test/season-good.json" (fetchTVSeason 0 0)
let expect = "http://cf2.imgobject.com/t/p/w92/2dxsbVMoxsYH0Pta2mbFjF7mhHr.jpg"
urls = seasonPosterURLs cfg season
assertEqual "length" 6 (length urls)
assertEqual "poster" expect (head urls)
--------------------------------------------------------------------------------
testTVPoster :: Assertion
testTVPoster = do
cfg <- fakeTMDB "test/config-good.json" config
tv <- fakeTMDB "test/tv-good.json" (fetchTV 0)
let expect = "http://cf2.imgobject.com/t/p/w92/mWNadwBZIx8NyEw4smGftYtHHrE.jpg"
urls = tvPosterURLs cfg tv
assertEqual "length" 6 (length urls)
assertEqual "poster" expect (head urls)
--------------------------------------------------------------------------------
tests :: TestTree
tests = testGroup "TV"
[ testCase "Search fields" testSearchTV
, testCase "Fetch fields" testFetchTV
, testCase "Season fields" testFetchSeason
, testCase "Season Poster" testSeasonPoster
, testCase "TV Poster" testTVPoster
]