ribosome-test-0.4.0.0: test/Ribosome/Test/PromptTest.hs
module Ribosome.Test.PromptTest where
import Conduit (awaitForever, evalStateC, runConduit, yield, (.|))
import qualified Data.Conduit.Combinators as Conduit (last)
import Hedgehog (TestT, (===))
import TestError (TestError)
import Ribosome.Control.Monad.Ribo (Ribo)
import Ribosome.Menu.Prompt.Data.Prompt (Prompt(Prompt))
import Ribosome.Menu.Prompt.Data.PromptConfig (PromptConfig(PromptConfig), PromptFlag(StartInsert))
import Ribosome.Menu.Prompt.Data.PromptConsumed (PromptConsumed(Yes))
import Ribosome.Menu.Prompt.Data.PromptConsumerUpdate (PromptConsumerUpdate(PromptConsumerUpdate))
import qualified Ribosome.Menu.Prompt.Data.PromptEvent as PromptEvent (PromptEvent(..))
import qualified Ribosome.Menu.Prompt.Data.PromptState as PromptState (PromptState(..))
import Ribosome.Menu.Prompt.Run (basicTransition, noPromptRenderer, processPromptEvent)
import Ribosome.Test.Run (UnitTest)
import Ribosome.Test.Unit (unitSpecDef')
promptSetSpec :: TestT (Ribo () TestError) ()
promptSetSpec = do
update <- runConduit $ yield event .| exec .| Conduit.last
Just target === update
where
exec =
evalStateC initialPrompt (awaitForever (processPromptEvent config))
initialPrompt =
Prompt 1 PromptState.Normal "abc"
config =
PromptConfig (return ()) basicTransition noPromptRenderer [StartInsert]
event =
PromptEvent.Set (Prompt 10 PromptState.Normal text)
text =
"12345678"
target =
PromptConsumerUpdate event (Prompt 8 PromptState.Normal text) Yes
test_promptSet :: UnitTest
test_promptSet =
unitSpecDef' promptSetSpec