public void TriggerDeleteDontDisableTest() { string[] script1 = { CreateTestTable1, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string[] script2 = { CreateTestTable1, InsertTestTable1_one, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string expected = @"PRINT 'Deleting 1 row(s) from [dbo].[TestTable1].'; GO DELETE FROM [dbo].[TestTable1] WHERE [ID] = 1; GO "; var options = new DataUpgradeOptions { DisableTriggers = false }; ExecuteTest(script1, script2, expected, options: options); }
public void TriggerInsertDontDisableTest() { string[] script1 = { CreateTestTable1, InsertTestTable1_one, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string[] script2 = { CreateTestTable1, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string expected = @"PRINT 'Inserting 1 row(s) into [dbo].[TestTable1].'; GO INSERT INTO [dbo].[TestTable1] ([ID], [Value]) VALUES (1, 'one'); GO "; var options = new DataUpgradeOptions { DisableTriggers = false }; ExecuteTest(script1, script2, expected, options: options); }
public void TriggerUpdateDontDisableTest() { string[] script1 = { CreateTestTable1, InsertTestTable1_one, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string[] script2 = { CreateTestTable1, InsertTestTable1_uno, CreateDeleteTriggerOnTable1, CreateInsertTriggerOnTable1, CreateUpdateTriggerOnTable1 }; string expected = @"PRINT 'Updating 1 row(s) in [dbo].[TestTable1].'; GO UPDATE [dbo].[TestTable1] SET [Value] = 'one' WHERE [ID] = 1; GO "; var options = new DataUpgradeOptions { DisableTriggers = false }; ExecuteTest(script1, script2, expected, options: options); }
private string ExecuteTest ( IEnumerable <String> sourceScript, IEnumerable <String> targetScript, string expectedScript = null, bool expectedResult = true, DataUpgradeOptions options = null ) { try { // Create the source database. DropAndCreateDatabase(SourceDatabaseName, sourceScript); } catch (Exception ex) { throw new Exception("Source database initialization failed.", ex); } try { // Create the target database. DropAndCreateDatabase(TargetDatabaseName, targetScript); } catch (Exception ex) { throw new Exception("Target database initialization failed.", ex); } var target = GetDataUpgradeScripter(); bool actualResult; string actualScript; using (StringWriter writer = new StringWriter()) { // Call GenerateScript and verify the result and writer output are as expected. actualResult = target.GenerateScript(writer, options); Assert.AreEqual(expectedResult, actualResult, "GenerateScript() return value not as expected (it should be false when there are no data changes; otherwise, true)."); actualScript = writer.ToString(); // If expectedScript is null, then the test did not require us to // verify the expected script is an exact string match. // Write it out to the output so it can be viewed. if (expectedScript == null) { Console.WriteLine("\r\n\r\n--------------\r\nActual Script:\r\n--------------"); Console.WriteLine(actualScript); } else { // We don't require the test to include the SET ANSI_NULLS... boilerplate in the expected script. // Remove it from the actual. if ( !expectedScript.StartsWith("SET ANSI_NULLS") && actualScript.StartsWith("SET ANSI_NULLS") && actualScript.Contains("GO\r\n") ) { actualScript = actualScript.Substring(actualScript.IndexOf("GO\r\n") + 4); } Assert.AreEqual(expectedScript, actualScript, "GenerateScript() output script not as expected."); } } // If there is script to run, then run it to verify works properly. if (actualResult && actualScript != null) { try { // Execute the script to ensure there are no errors in it. Execute(actualScript.Split(new[] { "\r\nGO\r\n" }, StringSplitOptions.RemoveEmptyEntries)); } catch (Exception ex) { throw new Exception("The generated script failed to execute properly.", ex); } using (StringWriter writer = new StringWriter()) { // Call GenerateScript and verify that the upgrade script succeeded in synchronizing all the changes. bool syncResult = target.GenerateScript(writer); string unsynchronizedScript = writer.ToString(); Assert.AreEqual(String.Empty, unsynchronizedScript, "The generated script failed to synchronize all changes. The 'actual' value shows the script of what is not in sync."); Assert.IsFalse(syncResult, "The generated script failed to synchronize all changes."); } } return(actualScript); }