public void ThatNoScriptsDoesntFail() { var databaseServiceMock = new Mock <IDatabaseService>(MockBehavior.Strict); var configurationServiceMock = new Mock <IConfigurationService>(MockBehavior.Strict); var scriptServiceMock = new Mock <IScriptService>(MockBehavior.Strict); var fileServiceMock = new Mock <IFileService>(MockBehavior.Strict); var scriptMessageFormatterMock = new Mock <IScriptMessageFormatter>(MockBehavior.Strict); IDictionary <int, IScriptFile> availableScripts = new Dictionary <int, IScriptFile>(); IDictionary <int, IChangeLog> changeLogs = new Dictionary <int, IChangeLog>(); string changeScript = "Change Script"; // FileService Setup fileServiceMock.Setup(file => file.CleanupPastRuns()).Verifiable(); fileServiceMock.Setup(file => file.GetScriptFiles()).Returns(availableScripts).Verifiable(); fileServiceMock.Setup(file => file.WriteChangeScript(It.Is <string>(s => s == changeScript))).Verifiable(); fileServiceMock.Setup(file => file.WriteScriptList(It.IsAny <Dictionary <int, IScriptFile> >())).Verifiable(); // Database Service Setup databaseServiceMock.Setup(db => db.GetAppliedChanges()).Returns(changeLogs).Verifiable(); // Configuration Service Setup configurationServiceMock.Setup(config => config.LastChangeToApply).Returns(1000).Verifiable(); configurationServiceMock.Setup(config => config.OutputFile).Returns("File Location").Verifiable(); configurationServiceMock.Setup(config => config.ScriptListFile).Returns("ScriptListFileLocation").Verifiable(); configurationServiceMock.Setup(config => config.RootDirectory).Returns("Root Directory").Verifiable(); // Script Formatter setup scriptMessageFormatterMock.Setup(fm => fm.FormatCollection(It.IsAny <ICollection <int> >())).Returns("String Formatted.").Verifiable(); // Script Service Setup scriptServiceMock.Setup(script => script.BuildChangeScript(It.IsAny <IDictionary <int, IScriptFile> >())).Returns(changeScript).Verifiable(); DeploymentService deploymentService = new DeploymentService(databaseServiceMock.Object, configurationServiceMock.Object, scriptServiceMock.Object, fileServiceMock.Object, scriptMessageFormatterMock.Object); deploymentService.BuildDeploymentScript(); // File Verifies fileServiceMock.Verify(file => file.CleanupPastRuns(), Times.Exactly(1)); fileServiceMock.Verify(file => file.GetScriptFiles(), Times.Exactly(1)); fileServiceMock.Verify(file => file.WriteChangeScript(It.Is <string>(s => s == changeScript)), Times.Never()); fileServiceMock.Verify(file => file.WriteScriptList(It.IsAny <Dictionary <int, IScriptFile> >()), Times.Never()); // Database Verifies databaseServiceMock.Verify(db => db.GetAppliedChanges(), Times.Exactly(0)); // Configuration Service Verifies configurationServiceMock.Verify(config => config.LastChangeToApply, Times.Never()); configurationServiceMock.Verify(config => config.OutputFile, Times.Never()); configurationServiceMock.Verify(config => config.ScriptListFile, Times.Never()); configurationServiceMock.Verify(config => config.RootDirectory, Times.AtLeastOnce()); // Script Formamter Verifies. scriptMessageFormatterMock.Verify(fm => fm.FormatCollection(It.IsAny <ICollection <int> >()), Times.Never()); // Script Service Verifies scriptServiceMock.Verify(script => script.BuildChangeScript(It.IsAny <IDictionary <int, IScriptFile> >()), Times.Never()); }
public void ThatLastChangesToApplyDetected() { var databaseServiceMock = new Mock <IDatabaseService>(MockBehavior.Strict); var configurationServiceMock = new Mock <IConfigurationService>(MockBehavior.Strict); var scriptServiceMock = new Mock <IScriptService>(MockBehavior.Strict); var fileServiceMock = new Mock <IFileService>(MockBehavior.Strict); var scriptMessageFormatterMock = new Mock <IScriptMessageFormatter>(MockBehavior.Strict); IDictionary <int, IScriptFile> availableScripts = this.GetScripts(); IDictionary <int, IChangeLog> changeLogs = this.GetChangeLogs(); string changeScript = "Change Script"; // FileService Setup fileServiceMock.Setup(file => file.CleanupPastRuns()).Verifiable(); fileServiceMock.Setup(file => file.GetScriptFiles()).Returns(availableScripts).Verifiable(); fileServiceMock.Setup(file => file.WriteChangeScript(It.Is <string>(s => s == changeScript))).Verifiable(); fileServiceMock.Setup(file => file.WriteUndoScript(It.Is <string>(s => s == changeScript))).Verifiable(); fileServiceMock.Setup(file => file.WriteScriptList(It.IsAny <Dictionary <int, IScriptFile> >())).Verifiable(); // Database Service Setup databaseServiceMock.Setup(db => db.GetAppliedChanges()).Returns(changeLogs).Verifiable(); // Configuration Service Setup configurationServiceMock.Setup(config => config.LastChangeToApply).Returns(7).Verifiable(); configurationServiceMock.Setup(config => config.OutputFile).Returns("File Location").Verifiable(); configurationServiceMock.Setup(config => config.UndoOutputFile).Returns("File Location").Verifiable(); configurationServiceMock.Setup(config => config.ScriptListFile).Returns("ScriptListFileLocation").Verifiable(); // Script Formatter setup scriptMessageFormatterMock.Setup(fm => fm.FormatCollection(It.IsAny <ICollection <int> >())).Returns("String Formatted.").Verifiable(); // Script Service Setup int passedCount = 0; scriptServiceMock.Setup(script => script.BuildChangeScript(It.IsAny <IDictionary <int, IScriptFile> >())).Callback <IDictionary <int, IScriptFile> >((files => passedCount = files.Count)).Returns(changeScript).Verifiable(); scriptServiceMock.Setup(script => script.BuildUndoScript(It.IsAny <IDictionary <int, IScriptFile> >())).Callback <IDictionary <int, IScriptFile> >((files => passedCount = files.Count)).Returns(changeScript).Verifiable(); DeploymentService deploymentService = new DeploymentService(databaseServiceMock.Object, configurationServiceMock.Object, scriptServiceMock.Object, fileServiceMock.Object, scriptMessageFormatterMock.Object); deploymentService.BuildDeploymentScript(); // File Verifies fileServiceMock.Verify(file => file.CleanupPastRuns(), Times.Exactly(1)); fileServiceMock.Verify(file => file.GetScriptFiles(), Times.Exactly(1)); fileServiceMock.Verify(file => file.WriteChangeScript(It.Is <string>(s => s == changeScript)), Times.Exactly(1)); fileServiceMock.Verify(file => file.WriteScriptList(It.IsAny <Dictionary <int, IScriptFile> >()), Times.Exactly(1)); // Database Verifies databaseServiceMock.Verify(db => db.GetAppliedChanges(), Times.Exactly(1)); // Configuration Service Verifies configurationServiceMock.Verify(config => config.LastChangeToApply, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.OutputFile, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.UndoOutputFile, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.ScriptListFile, Times.AtLeastOnce()); // Script Formamter Verifies. scriptMessageFormatterMock.Verify(fm => fm.FormatCollection(It.IsAny <ICollection <int> >()), Times.AtLeastOnce()); // Script Service Verifies scriptServiceMock.Verify(script => script.BuildChangeScript(It.IsAny <IDictionary <int, IScriptFile> >()), Times.Exactly(1)); scriptServiceMock.Verify(script => script.BuildUndoScript(It.IsAny <IDictionary <int, IScriptFile> >()), Times.Exactly(1)); Assert.That(passedCount, Is.EqualTo(2)); }
public void ThatBuildScriptDeploymentWorks() { Mock <IDatabaseService> databaseServiceMock = new Mock <IDatabaseService>(MockBehavior.Strict); Mock <IConfigurationService> configurationServiceMock = new Mock <IConfigurationService>(MockBehavior.Strict); Mock <IScriptService> scriptServiceMock = new Mock <IScriptService>(MockBehavior.Strict); Mock <IFileService> fileServiceMock = new Mock <IFileService>(MockBehavior.Strict); Mock <IScriptMessageFormatter> scriptMessageFormatterMock = new Mock <IScriptMessageFormatter>(MockBehavior.Strict); IDictionary <decimal, IScriptFile> availableScripts = this.GetScripts(); IDictionary <decimal, IChangeLog> changeLogs = this.GetChangeLogs(); string changeScript = "Change Script"; // FileService Setup fileServiceMock.Setup(file => file.CleanupPastRuns()).Verifiable(); fileServiceMock.Setup(file => file.GetScriptFiles()).Returns(availableScripts).Verifiable(); fileServiceMock.Setup(file => file.WriteChangeScript(It.Is <string>(s => s == changeScript))).Verifiable(); fileServiceMock.Setup(file => file.WriteUndoScript(It.Is <string>(s => s == changeScript))).Verifiable(); fileServiceMock.Setup(file => file.WriteScriptList(It.IsAny <Dictionary <decimal, IScriptFile> >())) .Verifiable(); // Database Service Setup databaseServiceMock.Setup(db => db.GetAppliedChanges()).Returns(changeLogs).Verifiable(); // Configuration Service Setup configurationServiceMock.Setup(config => config.LastChangeToApply).Returns(1000).Verifiable(); configurationServiceMock.Setup(config => config.OutputFile).Returns("File Location").Verifiable(); configurationServiceMock.Setup(config => config.UndoOutputFile).Returns("File Location").Verifiable(); configurationServiceMock.Setup(config => config.ScriptListFile) .Returns("ScriptListFileLocation") .Verifiable(); // Script Formatter setup scriptMessageFormatterMock.Setup(fm => fm.FormatCollection(It.IsAny <ICollection <decimal> >())) .Returns("String Formatted.") .Verifiable(); // Script Service Setup scriptServiceMock.Setup(script => script.BuildChangeScript(It.IsAny <IDictionary <decimal, IScriptFile> >())) .Returns(changeScript) .Verifiable(); scriptServiceMock.Setup(script => script.BuildUndoScript(It.IsAny <IDictionary <decimal, IScriptFile> >())) .Returns(changeScript) .Verifiable(); configurationServiceMock.Setup(c => c.DatabaseService).Returns(databaseServiceMock.Object); DeploymentService deploymentService = new DeploymentService( configurationServiceMock.Object, scriptServiceMock.Object, fileServiceMock.Object, scriptMessageFormatterMock.Object); deploymentService.BuildDeploymentScript(); // File Verifies fileServiceMock.Verify(file => file.CleanupPastRuns(), Times.Exactly(1)); fileServiceMock.Verify(file => file.GetScriptFiles(), Times.Exactly(1)); fileServiceMock.Verify( file => file.WriteChangeScript(It.Is <string>(s => s == changeScript)), Times.Exactly(1)); fileServiceMock.Verify( file => file.WriteUndoScript(It.Is <string>(s => s == changeScript)), Times.Exactly(1)); fileServiceMock.Verify( file => file.WriteScriptList(It.IsAny <Dictionary <decimal, IScriptFile> >()), Times.Exactly(1)); // Database Verifies databaseServiceMock.Verify(db => db.GetAppliedChanges(), Times.Exactly(1)); // Configuration Service Verifies configurationServiceMock.Verify(config => config.LastChangeToApply, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.OutputFile, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.UndoOutputFile, Times.AtLeastOnce()); configurationServiceMock.Verify(config => config.ScriptListFile, Times.AtLeastOnce()); // Script Formamter Verifies. scriptMessageFormatterMock.Verify( fm => fm.FormatCollection(It.IsAny <ICollection <decimal> >()), Times.AtLeastOnce()); // Script Service Verifies scriptServiceMock.Verify( script => script.BuildChangeScript(It.IsAny <IDictionary <decimal, IScriptFile> >()), Times.Exactly(1)); scriptServiceMock.Verify( script => script.BuildUndoScript(It.IsAny <IDictionary <decimal, IScriptFile> >()), Times.Exactly(1)); }