using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using SyncEngine.SqlServer; namespace SyncEngine.Tests { [TestClass] public class DataSyncPrimaryKeyHelperTests { [TestMethod] public void BuildPkKey_CompositeKey() { var row = new Dictionary { { "SwitchboardID", 1 }, { "ItemNumber", 2 } }; var key = DataSyncPrimaryKeyHelper.BuildPkKey( row, new List { "SwitchboardID", "ItemNumber" }); Assert.AreEqual("1|2", key); } [TestMethod] public void BuildAccessResumeWhere_CompositeKey() { var lastRow = new Dictionary { { "SwitchboardID", 1 }, { "ItemNumber", 5 } }; var where = DataSyncPrimaryKeyHelper.BuildAccessResumeWhere( new List { "SwitchboardID", "ItemNumber" }, lastRow); StringAssert.Contains(where, "[SwitchboardID] > 1"); StringAssert.Contains(where, "[SwitchboardID] = 1"); StringAssert.Contains(where, "[ItemNumber] > 5"); } [TestMethod] public void BuildSqlWhereClause_UsesAllPkColumns() { var clause = DataSyncPrimaryKeyHelper.BuildSqlWhereClause( new List { "SwitchboardID", "ItemNumber" }, "@pk"); Assert.AreEqual("[SwitchboardID] = @pk0 AND [ItemNumber] = @pk1", clause); } [TestMethod] public void BuildOrderBy_IncludesAllPkColumns() { var orderBy = DataSyncPrimaryKeyHelper.BuildOrderBy( new List { "SwitchboardID", "ItemNumber" }); Assert.AreEqual("[SwitchboardID], [ItemNumber]", orderBy); } } }