@@ -156,7 +156,26 @@ testSelectedBranchMerge = TestCase $ do
156156
157157-- try various individual component conflicts and check for resolution
158158testUnionPreferMergeStrategy :: Test
159−testUnionPreferMergeStrategy = TestCase $ pure ()
159+testUnionPreferMergeStrategy = TestCase $ do
160+ -- create a graph with a relvar conflict
161+ graph <- basicTransactionGraph
162+ branchATrans <- assertMaybe (transactionForHead "branchA" graph) "branchATrans"
163+ branchBTrans <- assertMaybe (transactionForHead "branchB" graph) "branchBTrans"
164+ branchBRelVar <- assertEither $ mkRelationFromList (attributesFromList [Attribute "conflict" intAtomType]) []
165+ let branchAContext = (transactionContext branchATrans) {relationVariables = M.insert conflictRelVarName branchARelVar (relationVariables (transactionContext branchATrans))}
166+ branchARelVar = relationTrue
167+ branchBContext = (transactionContext branchBTrans) {relationVariables = M.insert conflictRelVarName branchBRelVar (relationVariables (transactionContext branchBTrans))}
168+ conflictRelVarName = "conflictRelVar"
169+
170+ (_, graph') <- addTransaction "branchA" (Transaction (fakeUUID 3) (TransactionInfo (transactionUUID branchATrans) S.empty) branchAContext) graph
171+ (_, graph'') <- addTransaction "branchB" (Transaction (fakeUUID 4) (TransactionInfo (transactionUUID branchBTrans) S.empty) branchBContext) graph'
172+ -- validate that the conflict is hidden because we preferred a branch
173+ let merged = mergeTransactions (fakeUUID 5) (fakeUUID 3) (UnionPreferMergeStrategy "branchB") ("branchA", "branchB") graph''
174+ case merged of
175+ Left err -> assertFailure ("expected merge success: " ++ show err)
176+ Right (DisconnectedTransaction _ mergeContext, _) -> do
177+ assertEqual "branchB relvar preferred in conflict" (Just branchBRelVar) (M.lookup conflictRelVarName (relationVariables mergeContext))
178+
160179
161180-- try various individual component conflicts and check for merge failure
162181testUnionMergeStrategy :: Test