packages feed

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
  ]