chore(avs): adjust arbitrary instances to ensure check succeeding

This commit is contained in:
Steffen Jost 2022-09-27 11:15:15 +02:00
parent ebd557ff0a
commit 5793acfbbb

View File

@ -27,7 +27,13 @@ instance Arbitrary AvsDataCardColor where
shrink = genericShrink
instance Arbitrary AvsDataPersonCard where
arbitrary = genericArbitrary
arbitrary = do
proto <- genericArbitrary
return $ proto { avsDataStreet = null2nothing $ avsDataStreet proto
, avsDataPostalCode = null2nothing $ avsDataPostalCode proto
, avsDataCity = null2nothing $ avsDataCity proto
, avsDataFirm = null2nothing $ avsDataFirm proto
}
shrink = genericShrink
instance Arbitrary AvsStatusPerson where
@ -35,7 +41,10 @@ instance Arbitrary AvsStatusPerson where
shrink = genericShrink
instance Arbitrary AvsDataPerson where
arbitrary = genericArbitrary
arbitrary = do
proto <- genericArbitrary
return $ proto { avsPersonInternalPersonalNo = null2nothing $ avsPersonInternalPersonalNo proto}
shrink = genericShrink
instance Arbitrary AvsPersonLicence where
@ -86,17 +95,17 @@ spec = do
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsCardNo)
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsDataPersonCard)
lawsCheckHspec (Proxy @AvsDataPersonCard) --iso failed
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsDataPerson)
lawsCheckHspec (Proxy @AvsDataPerson) --iso failed
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsPersonLicence)
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsLicenceResponse)
[ eqLaws, ordLaws, showLaws, showReadLaws, jsonLaws ]
lawsCheckHspec (Proxy @AvsResponsePerson)
lawsCheckHspec (Proxy @AvsResponsePerson) --iso failed
[ eqLaws, showLaws, showReadLaws, jsonLaws]
lawsCheckHspec (Proxy @AvsResponseStatus)
lawsCheckHspec (Proxy @AvsResponseStatus) --iso failed
[ eqLaws, showLaws, showReadLaws, jsonLaws]
lawsCheckHspec (Proxy @AvsResponseGetLicences)
[ eqLaws, showLaws, showReadLaws, jsonLaws]
@ -130,3 +139,42 @@ spec = do
p2@AvsDataPersonCard{avsDataValid=v2, avsDataValidTo=t2, avsDataIssueDate=d2} ->
(v1 == v2 && t1 == t2 && d1 /= d2) ==> compare p1 p2 == compare d1 d2
-}
{-
Failures:
uniworx-test-yesod> test/TestImport.hs:165:43:
uniworx-test-yesod> 1) Utils.Types.AvsDataPersonCard.ToJSON/FromJSON Partial Isomorphism
uniworx-test-yesod> Falsified (after 1 test and 4 shrinks):
uniworx-test-yesod> Description: Right == Data.Aeson.eitherDecode . Data.Aeson.encode
uniworx-test-yesod> a = AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorMisc "", avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Just "", avsDataFirm = Nothing, avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""}
uniworx-test-yesod> Data.Aeson.encode a = "{\"CardNo\":\"\",\"CardAreas\":\"\",\"CardColor\":\"\",\"VersionNo\":\"\",\"Valid\":\"False\"}"
uniworx-test-yesod> Data.Aeson.eitherDecode (Data.Aeson.encode a) = Right (AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorMisc "", avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Nothing, avsDataFirm = Nothing, avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""})
uniworx-test-yesod> To rerun use: --match "/Utils.Types/AvsDataPersonCard/ToJSON/FromJSON/Partial Isomorphism/"
uniworx-test-yesod> test/TestImport.hs:165:43:
uniworx-test-yesod> 2) Utils.Types.AvsDataPerson.ToJSON/FromJSON Partial Isomorphism
uniworx-test-yesod> Falsified (after 1 test):
uniworx-test-yesod> Description: Right == Data.Aeson.eitherDecode . Data.Aeson.encode
uniworx-test-yesod> a = AvsDataPerson {avsPersonFirstName = "", avsPersonLastName = "", avsPersonInternalPersonalNo = Just "", avsPersonPersonNo = 0, avsPersonPersonID = AvsPersonId {avsPersonId = 0}, avsPersonPersonCards = fromList []}
uniworx-test-yesod> Data.Aeson.encode a = "{\"PersonNo\":0,\"personCards\":[],\"LastName\":\"\",\"FirstName\":\"\",\"PersonID\":0}"
uniworx-test-yesod> Data.Aeson.eitherDecode (Data.Aeson.encode a) = Right (AvsDataPerson {avsPersonFirstName = "", avsPersonLastName = "", avsPersonInternalPersonalNo = Nothing, avsPersonPersonNo = 0, avsPersonPersonID = AvsPersonId {avsPersonId = 0}, avsPersonPersonCards = fromList []})
uniworx-test-yesod> To rerun use: --match "/Utils.Types/AvsDataPerson/ToJSON/FromJSON/Partial Isomorphism/"
uniworx-test-yesod> test/TestImport.hs:165:43:
uniworx-test-yesod> 3) Utils.Types.AvsResponsePerson.ToJSON/FromJSON Partial Isomorphism
uniworx-test-yesod> Falsified (after 3 tests and 12 shrinks):
uniworx-test-yesod> Description: Right == Data.Aeson.eitherDecode . Data.Aeson.encode
uniworx-test-yesod> a = AvsResponsePerson (fromList [AvsDataPerson {avsPersonFirstName = "", avsPersonLastName = "", avsPersonInternalPersonalNo = Nothing, avsPersonPersonNo = 0, avsPersonPersonID = AvsPersonId {avsPersonId = 0}, avsPersonPersonCards = fromList [AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorMisc "", avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Nothing, avsDataFirm = Just "", avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""}]}])
uniworx-test-yesod> Data.Aeson.encode a = "[{\"PersonNo\":0,\"personCards\":[{\"CardNo\":\"\",\"CardAreas\":\"\",\"CardColor\":\"\",\"VersionNo\":\"\",\"Valid\":\"False\"}],\"LastName\":\"\",\"FirstName\":\"\",\"PersonID\":0}]"
uniworx-test-yesod> Data.Aeson.eitherDecode (Data.Aeson.encode a) = Right (AvsResponsePerson (fromList [AvsDataPerson {avsPersonFirstName = "", avsPersonLastName = "", avsPersonInternalPersonalNo = Nothing, avsPersonPersonNo = 0, avsPersonPersonID = AvsPersonId {avsPersonId = 0}, avsPersonPersonCards = fromList [AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorMisc "", avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Nothing, avsDataFirm = Nothing, avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""}]}]))
uniworx-test-yesod> To rerun use: --match "/Utils.Types/AvsResponsePerson/ToJSON/FromJSON/Partial Isomorphism/"
uniworx-test-yesod> test/TestImport.hs:165:43:
uniworx-test-yesod> 4) Utils.Types.AvsResponseStatus.ToJSON/FromJSON Partial Isomorphism
uniworx-test-yesod> Falsified (after 2 tests and 6 shrinks):
uniworx-test-yesod> Description: Right == Data.Aeson.eitherDecode . Data.Aeson.encode
uniworx-test-yesod> a = AvsResponseStatus (fromList [AvsStatusPerson {avsStatusPersonID = AvsPersonId {avsPersonId = 0}, avsStatusPersonCardStatus = fromList [AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorGrün, avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Nothing, avsDataFirm = Just "", avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""}]}])
uniworx-test-yesod> Data.Aeson.encode a = "[{\"PersonID\":0,\"personCardStatus\":[{\"CardNo\":\"\",\"CardAreas\":\"\",\"CardColor\":\"Gr\195\188n\",\"VersionNo\":\"\",\"Valid\":\"False\"}]}]"
uniworx-test-yesod> Data.Aeson.eitherDecode (Data.Aeson.encode a) = Right (AvsResponseStatus (fromList [AvsStatusPerson {avsStatusPersonID = AvsPersonId {avsPersonId = 0}, avsStatusPersonCardStatus = fromList [AvsDataPersonCard {avsDataValid = False, avsDataValidTo = Nothing, avsDataIssueDate = Nothing, avsDataCardColor = AvsCardColorGrün, avsDataCardAreas = fromList "", avsDataStreet = Nothing, avsDataPostalCode = Nothing, avsDataCity = Nothing, avsDataFirm = Nothing, avsDataCardNo = AvsCardNo {avsCardNo = ""}, avsDataVersionNo = ""}]}]))
uniworx-test-yesod> To rerun use: --match "/Utils.Types/AvsResponseStatus/ToJSON/FromJSON/Partial Isomorphism/"
-}