restman-0.7.2.2: test/UISpec.hs
{-# language OverloadedStrings #-}
module UISpec (tests) where
import Data.Maybe (isNothing)
import Test.Tasty
import Test.Tasty.HUnit
import qualified Data.ByteString as BS
import qualified Data.CaseInsensitive as CI
import qualified Network.HTTP.Client as HC
import Brick.Widgets.Edit (getEditContents)
import Graphics.Vty.Image (imageWidth)
import HTTP.Client (Header, UseDefaultHeaders(..))
import Types (AppS(..))
import UI (mkInitialState)
tests :: TestTree
tests = testGroup "UI"
[ mkInitialStateTests
]
mkInitialStateTests :: TestTree
mkInitialStateTests = testGroup "mkInitialState"
[ testCase "focus starts at UrlEditor" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
show (focus s) @?= "UrlEditor"
, testCase "useDefaultHeaders is False for ReplaceDefaultHeaders" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
useDefaultHeaders s @?= False
, testCase "useDefaultHeaders is True for AppendCustomToDefaultHeaders" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" AppendCustomToDefaultHeaders [] Nothing Nothing
useDefaultHeaders s @?= True
, testCase "methodEditor contains the supplied method" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "POST" ReplaceDefaultHeaders [] Nothing Nothing
getEditContents (methodEditor s) @?= ["POST"]
, testCase "urlEditor is empty when no URI is supplied" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
getEditContents (urlEditor s) @?= [""]
, testCase "urlEditor contains the supplied URI" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing (Just "http://example.com")
getEditContents (urlEditor s) @?= ["http://example.com"]
, testCase "customHeaders starts empty" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
customHeaders s @?= []
, testCase "overlayState starts as Nothing" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
assertBool "expected overlayState to be Nothing" (isNothing (overlayState s))
, testCase "headerEditor starts as Nothing" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
assertBool "expected headerEditor to be Nothing" (isNothing (headerEditor s))
, testCase "payload is Nothing when not supplied" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
assertBool "expected payload to be Nothing" (isNothing (payload s))
, testCase "payload is preserved when supplied" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] (Just "request body") Nothing
payload s @?= Just "request body"
, testCase "lastResponse starts as zero-width image" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let s = mkInitialState mgr "GET" ReplaceDefaultHeaders [] Nothing Nothing
imageWidth (lastResponse s) @?= 0
, testCase "supplied headers are initially active" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let hdr = (CI.mk ("X-Custom" :: BS.ByteString), "val" :: BS.ByteString)
s = mkInitialState mgr "GET" ReplaceDefaultHeaders [hdr] Nothing Nothing
customHeaders s @?= [(True, hdr)]
, testCase "multiple supplied headers count is preserved" $ do
mgr <- HC.newManager HC.defaultManagerSettings
let hdrs :: [Header]
hdrs = [(CI.mk "X-A", "1"), (CI.mk "X-B", "2")]
s = mkInitialState mgr "GET" ReplaceDefaultHeaders hdrs Nothing Nothing
length (customHeaders s) @?= 2
]