hindsight-core:event-testing
Safe HaskellNone
LanguageGHC2021

Test.Hindsight.Generate

Synopsis

Documentation

data TestConfig Source #

Configuration for test generation

Constructors

TestConfig 

Fields

type TestPayloadRequirements (event :: Symbol) (idx :: PeanoNat) payload = (VersionPayloadRequirements event idx payload, Arbitrary payload) Source #

class TestPayloadRequirements event idx payload => ValidTestPayloadForVersion (event :: Symbol) (idx :: PeanoNat) payload where Source #

Evidence that a type is a valid payload for a version

Methods

testEvidence :: Dict (VersionPayloadRequirements event idx payload) Source #

Instances

Instances details
TestPayloadRequirements event idx payload => ValidTestPayloadForVersion event idx payload Source # 
Instance details

Defined in Test.Hindsight.Generate

Methods

testEvidence :: Dict (VersionPayloadRequirements event idx payload) Source #

defaultTestConfig :: TestConfig Source #

Default test configuration

generateTest :: forall (event :: Symbol). TestConfig -> String -> (forall (ver :: PeanoNat) payload. (ValidTestPayloadForVersion event ver payload, Typeable ver, ReifiablePeanoNat ver) => Proxy event -> Proxy ver -> Proxy payload -> TestTree) -> VersionConstraints (EventVersionVector event) (ValidTestPayloadForVersion event) -> TestTree Source #

makeRoundtripTest :: forall (event :: Symbol) (ver :: PeanoNat) payload. ValidTestPayloadForVersion event ver payload => TestConfig -> Proxy event -> Proxy ver -> Proxy payload -> TestTree Source #

Generate roundtrip property test for a specific version

encodePretty :: ToJSON a => a -> ByteString Source #

Helper function to pretty print JSON

makeGoldenTest :: forall (event :: Symbol) (ver :: PeanoNat) payload. ValidTestPayloadForVersion event ver payload => TestConfig -> Proxy event -> Proxy ver -> Proxy payload -> TestTree Source #

Generate golden test for a specific version

generateGoldenContent :: (Arbitrary a, ToJSON a) => TestConfig -> IO ByteString Source #

Generate content for golden tests

createRoundtripTests :: forall (event :: Symbol). (KnownSymbol event, HasFullEvidenceList event ValidTestPayloadForVersion) => TestConfig -> TestTree Source #

Create selective test suites

showPeanoNat :: forall (n :: PeanoNat). ReifiablePeanoNat n => String Source #

Convert a Peano-encoded type-level natural to a String

eventToString :: forall (event :: Symbol). KnownSymbol event => String Source #

Convert a type-level event name to a String

Helper function parallel to showPeanoNat for converting type-level event names to strings for file paths and display.