Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| {-# LANGUAGE OverloadedLists #-}
 | |
| module Xanthous.MessageSpec ( main, test ) where
 | |
| 
 | |
| import Test.Prelude
 | |
| import Xanthous.Messages
 | |
| import Data.Aeson
 | |
| import Text.Mustache
 | |
| import Control.Lens.Properties
 | |
| 
 | |
| main :: IO ()
 | |
| main = defaultMain test
 | |
| 
 | |
| test :: TestTree
 | |
| test = testGroup "Xanthous.Messages"
 | |
|   [ testGroup "Message"
 | |
|     [ testGroup "JSON decoding"
 | |
|       [ testCase "Single"
 | |
|         $ decode "\"Test Single Template\""
 | |
|         @?= Just (Single
 | |
|                   $ compileMustacheText "template" "Test Single Template"
 | |
|                   ^?! _Right)
 | |
|       , testCase "Choice"
 | |
|         $ decode "[\"Choice 1\", \"Choice 2\"]"
 | |
|         @?= Just
 | |
|             (Choice
 | |
|             [ compileMustacheText "template" "Choice 1" ^?! _Right
 | |
|             , compileMustacheText "template" "Choice 2" ^?! _Right
 | |
|             ])
 | |
|       ]
 | |
|     ]
 | |
|   , localOption (QuickCheckTests 50)
 | |
|   . localOption (QuickCheckMaxSize 10)
 | |
|   $ testGroup "MessageMap"
 | |
|     [ testGroup "instance Ixed"
 | |
|         [ testProperty "traversal laws" $ \k ->
 | |
|             isTraversal $ ix @MessageMap k
 | |
|         , testCase "preview when exists" $
 | |
|           let
 | |
|             Right tpl = compileMustacheText "foo" "bar"
 | |
|             msg = Single tpl
 | |
|             mm = Nested [("foo", Direct msg)]
 | |
|           in mm ^? ix ["foo"] @?= Just msg
 | |
|         ]
 | |
|     , testGroup "lookupMessage"
 | |
|       [ testProperty "is equivalent to preview ix" $ \msgMap path ->
 | |
|           lookupMessage path msgMap === msgMap ^? ix path
 | |
|       ]
 | |
|     ]
 | |
| 
 | |
|   , testGroup "Messages"
 | |
|     [ testCase "are all valid" $ messages `deepseq` pure ()
 | |
|     ]
 | |
| 
 | |
|   , testGroup "Template"
 | |
|     [ testGroup "eq"
 | |
|       [ testProperty "reflexive" $ \(tpl :: Template) -> tpl == tpl
 | |
|       ]
 | |
|     ]
 | |
|   ]
 |