コード例 #1
0
        public void ThatExecuteSetupsCorrectly()
        {
            MockEnvironmentProvider mockEnvironmentProvider = new MockEnvironmentProvider();

            mockEnvironmentProvider.SetCurrentDirectory(@"c:\DbDeploy");
            EnvironmentProvider.Current = mockEnvironmentProvider;

            try
            {
                IConfigurationService configurationService = new ConfigurationService();
                Container.RegisterInstance(configurationService);

                Mock <IDeploymentService> deploymentServiceMock = new Mock <IDeploymentService>(MockBehavior.Strict);
                deploymentServiceMock.Setup(d => d.BuildDeploymentScript()).Verifiable();
                Container.RegisterInstance(deploymentServiceMock.Object);

                DbDeploy deploy = new DbDeploy();
                deploy.ConnectionString  = "Connection String";
                deploy.DatabaseType      = "mssql";
                deploy.LastChangeToApply = 500;
                deploy.OutputFile        = "Output File";
                deploy.Recursive         = true;
                deploy.RootDirectory     = "Root Directory";
                deploy.SearchPattern     = "*.sql";
                deploy.UndoFile          = "Undo File";

                deploy.Execute();

                Approvals.Verify(configurationService);

                deploy.DatabaseType = "ora";
                deploy.Execute();

                Assert.AreEqual(configurationService.DatabaseManagementSystem, DatabaseTypesEnum.Oracle);

                deploy.DatabaseType = "mysql";
                deploy.Execute();

                Assert.AreEqual(configurationService.DatabaseManagementSystem, DatabaseTypesEnum.MySql);

                deploy.DatabaseType = "BadDBType";
                bool expectedExceptionFound = false;
                try
                {
                    deploy.Execute();
                }
                catch (ArgumentException)
                {
                    expectedExceptionFound = true;
                }

                Assert.IsTrue(expectedExceptionFound, "Expected to receive an argument exception for a bad db type, but did not.");

                deploymentServiceMock.Verify(d => d.BuildDeploymentScript(), Times.Exactly(3));
            }
            finally
            {
                EnvironmentProvider.ResetToDefault();
            }
        }
コード例 #2
0
        public WindowsEnvironmentPathTests()
        {
            _reporter         = new BufferedReporter();
            _mockPathInternal = new MockPathInternal();
            var mockEnvironmentProvider   = new MockEnvironmentProvider(_mockPathInternal);
            var mockEnvironmentPathEditor = new MockEnvironmentPathEditor(_mockPathInternal);

            _windowsEnvironmentPath = new WindowsEnvironmentPath(
                _toolsPath,
                CliFolderPathCalculator.WindowsNonExpandedToolsShimPath,
                mockEnvironmentProvider,
                mockEnvironmentPathEditor,
                _reporter
                );
        }
コード例 #3
0
        public WindowsEnvironmentPathTests()
        {
            _reporter         = new BufferedReporter();
            _mockPathInternal = new MockPathInternal();
            var mockEnvironmentProvider   = new MockEnvironmentProvider(_mockPathInternal);
            var mockEnvironmentPathEditor = new MockEnvironmentPathEditor(_mockPathInternal);

            _windowsEnvironmentPath = new WindowsEnvironmentPath(
                _toolsPath,
                @"%USERPROFILE%\.dotnet\tools",
                mockEnvironmentProvider,
                mockEnvironmentPathEditor,
                _reporter
                );
        }
コード例 #4
0
        public void ThatBuildChangeScriptWorks()
        {
            DateTime dateTime = new DateTime(2014, 09, 17, 17, 42, 55);

            TimeProvider.Current = new MockTimeProvider(dateTime);
            MockEnvironmentProvider mockEnvironmentProvider = new MockEnvironmentProvider();

            mockEnvironmentProvider.SetUserName("userName");
            EnvironmentProvider.Current = mockEnvironmentProvider;
            string changeScriptHeader =
                "Change Script Header -- CurrentVersion = $(CurrentVersion);Current DateTime = $(CurrentDateTime);Current User = $(CurrentUser)";
            string scriptHeader =
                "Script Header -- Script Name = $(ScriptName);Script Id = $(ScriptId);Script Description = $(ScriptDescription)";
            string scriptFooter       = "Script Footer -- String Name = $(ScriptName);Script Id = $(ScriptId)";
            string changeScriptFooter = "Change Script Footer -- Current DateTime = $(CurrentDateTime)";
            string undoToken          = "--//@Undo";

            ScriptService constructorTest = new ScriptService();

            Mock <IDatabaseService> databaseServiceMock = new Mock <IDatabaseService>(MockBehavior.Strict);
            Mock <IFileService>     fileServiceMock     = new Mock <IFileService>(MockBehavior.Strict);

            // Database service mock setup
            databaseServiceMock.Setup(d => d.GetScriptFromFile(DatabaseScriptEnum.ChangeScriptHeader))
            .Returns(changeScriptHeader);
            databaseServiceMock.Setup(d => d.GetScriptFromFile(DatabaseScriptEnum.ScriptHeader)).Returns(scriptHeader);
            databaseServiceMock.Setup(d => d.GetScriptFromFile(DatabaseScriptEnum.ScriptFooter)).Returns(scriptFooter);
            databaseServiceMock.Setup(d => d.GetScriptFromFile(DatabaseScriptEnum.ChangeScriptFooter))
            .Returns(changeScriptFooter);
            databaseServiceMock.Setup(d => d.GetScriptFromFile(DatabaseScriptEnum.UndoToken)).Returns(undoToken);

            // file Service mock setup
            fileServiceMock.Setup(f => f.GetFileContents(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(
                (string s, bool b) =>
            {
                ScriptFile file = new ScriptFile();
                file.Parse(fileServiceMock.Object, s);
                if (file.Id % 2 == 0)
                {
                    return(file.Description + undoToken + "Undo text.");
                }
                return(file.Description);
            });

            IDictionary <decimal, IScriptFile> changes = this.GetChanges();
            Mock <IConfigurationService>       configurationService = new Mock <IConfigurationService>();

            configurationService.Setup(c => c.DatabaseService).Returns(databaseServiceMock.Object);

            IScriptService scriptService = new ScriptService(
                fileServiceMock.Object,
                new TokenReplacer(new ConfigurationService()),
                configurationService.Object);

            string result = scriptService.BuildChangeScript(changes);

            TimeProvider.ResetToDefault();
            EnvironmentProvider.ResetToDefault();
            Approvals.Verify(result);
        }