67 lines
1.8 KiB
Haskell
67 lines
1.8 KiB
Haskell
{-# LANGUAGE TypeApplications #-}
|
|
module Main where
|
|
|
|
import API.Books
|
|
import qualified Data.Aeson as A
|
|
import Data.Char (isPrint)
|
|
import Data.GenValidity.Text ()
|
|
import qualified Data.Text as T
|
|
import Database.Schema
|
|
import Prelude
|
|
import Test.Hspec
|
|
import Test.Validity
|
|
import Test.Validity.Aeson
|
|
|
|
instance GenUnchecked PlainPassword
|
|
instance GenValid PlainPassword
|
|
instance GenInvalid PlainPassword
|
|
instance Validity PlainPassword
|
|
instance GenUnchecked Email
|
|
instance GenValid Email
|
|
instance GenInvalid Email
|
|
instance Validity Email
|
|
instance GenUnchecked Username
|
|
instance GenValid Username
|
|
instance GenInvalid Username
|
|
instance Validity Username
|
|
instance GenUnchecked BookID
|
|
instance GenValid BookID
|
|
instance GenInvalid BookID
|
|
instance Validity BookID
|
|
instance GenUnchecked ChannelID
|
|
instance GenValid ChannelID
|
|
instance GenInvalid ChannelID
|
|
instance Validity ChannelID
|
|
instance GenUnchecked Role
|
|
instance GenValid Role
|
|
instance GenInvalid Role
|
|
instance Validity Role
|
|
instance GenUnchecked Visibility
|
|
instance GenValid Visibility
|
|
instance GenInvalid Visibility
|
|
instance Validity Visibility
|
|
instance GenUnchecked JsonBook
|
|
instance GenValid JsonBook
|
|
instance GenInvalid JsonBook
|
|
instance Validity JsonBook
|
|
instance GenUnchecked PostBook
|
|
instance GenValid PostBook
|
|
instance GenInvalid PostBook
|
|
instance Validity PostBook
|
|
|
|
spec :: Spec
|
|
spec = do
|
|
describe "JSON encoding" $ do
|
|
jsonSpecOnValid @PlainPassword
|
|
jsonSpecOnValid @Email
|
|
jsonSpecOnValid @Username
|
|
jsonSpecOnValid @BookID
|
|
jsonSpecOnValid @ChannelID
|
|
jsonSpecOnValid @Role
|
|
jsonSpecOnValid @Visibility
|
|
jsonSpecOnValid @JsonBook
|
|
jsonSpecOnValid @PostBook
|
|
|
|
main :: IO ()
|
|
main = hspec spec
|