現在、次のテストコードがあります。
testUpdate :: Test
testUpdate = testCase "update does change artist" $ do
(created, Just revised, parents) <- mbTest $ do
Just editor <- fmap entityRef <$> findEditorByName "acid2"
created <- create editor startWith
let artistId = coreMbid created
newRev <- update editor (coreRevision created) expected
editId <- openEdit
includeRevision editId newRev
apply editId
found <- findLatest artistId
parents <- revisionParents newRev
return (created, found, parents)
coreData revised @?= expected
assertBool "The old revision is a direct parent of the new revision" $
parents == [coreRevision created]
where
startWith = ...
expected = ...
これはちょっとうまくいきますが、面倒です。テスト中のさまざまなものを返さなくても何かを書くことができ、代わりにそれらが意味を成すアサーションを持つことができればよいのです。
クラスがあるAssertable
ようですが、おそらくたくさんのものを再発明する必要があるようです。