relocant-1.0.0: test/Relocant/MergeSpec.hs
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE TypeApplications #-}
module Relocant.MergeSpec (spec) where
import Test.Hspec
import Relocant.Applied (Applied(..))
import Relocant.At (epoch)
import Relocant.Merge (Merged(..), ContentMismatch(..), merge)
import Relocant.Script (Script(..))
spec :: Spec
spec = do
let
a1 = Applied
{ id = "01"
, name = "01-m1"
, content = "m1"
, appliedAt = epoch
, durationS = mempty
}
a2 = Applied
{ id = "02"
, name = "02-m2"
, content = "m2"
, appliedAt = epoch
, durationS = mempty
}
s0 = Script
{ id = "000"
, name = "000-m0"
, content = "m0"
}
s1 = Script
{ id = "01"
, name = "01-s1"
, content = "s1"
}
s3 = Script
{ id = "03"
, name = "03-s3"
, content = "s3"
}
it "merges unapplied and applied migrations" $ do
let
result =
merge [a1, a2] [s0, s1, s3]
result `shouldBe` Merged
{ unrecorded = [s0]
, scriptMissing = [a2]
, contentMismatch = [ContentMismatch a1 s1]
, unapplied = [s3]
}