packages feed

yesod-paginator-1.1.0.0: test/SpecHelper.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}

module SpecHelper
    ( module SpecHelper
    , module X
    )
where

import Test.Hspec as X
import Yesod.Core
import Yesod.Paginator as X
import Yesod.Paginator.Prelude as X
import Yesod.Test as X

data App = App

mkYesod "App" [parseRoutes|
    /simple/#ItemsCount/#PerPage/#Natural SimpleR GET
    /ellipsed/#ItemsCount/#PerPage/#Natural EllipsedR GET
|]

instance Yesod App

getSimpleR :: ItemsCount -> PerPage -> Natural -> Handler Html
getSimpleR total per elements = do
    pages <- paginate per $ genericReplicate total ()
    defaultLayout [whamlet|^{simple elements pages}|]

getEllipsedR :: ItemsCount -> PerPage -> Natural -> Handler Html
getEllipsedR total per elements = do
    pages <- paginate per $ genericReplicate total ()
    defaultLayout [whamlet|^{ellipsed elements pages}|]

withApp :: SpecWith (TestApp App) -> Spec
withApp = before $ pure (App, id)