Beispiel #1
0
        public void ThatBuildChangeScriptWorks()
        {
            string expectedResult     = string.Format("Change Script Header -- CurrentVersion = 1;Current DateTime = {1};Current User = {0}\r\nScript Header -- Script Name = 1 1.sql;Script Id = 1;Script Description = 1.sql\r\n1.sql\r\nScript Footer -- String Name = 1 1.sql;Script Id = 1\r\nScript Header -- Script Name = 2 2.sql;Script Id = 2;Script Description = 2.sql\r\n2.sql\r\nScript Footer -- String Name = 2 2.sql;Script Id = 2\r\nScript Header -- Script Name = 3 3.sql;Script Id = 3;Script Description = 3.sql\r\n3.sql\r\nScript Footer -- String Name = 3 3.sql;Script Id = 3\r\nChange Script Footer -- Current DateTime = {1}\r\n", Environment.UserName, DateTime.Now.ToString("g"));
            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();

            var databaseServiceMock = new Mock <IDatabaseService>(MockBehavior.Strict);
            var 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(s);
                if (file.Id % 2 == 0)
                {
                    return(file.Description + undoToken + "Undo text.");
                }
                else
                {
                    return(file.Description);
                }
            });

            IDictionary <int, IScriptFile> changes = this.GetChanges();

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

            string result = scriptService.BuildChangeScript(changes);

            Assert.That(result, Is.EqualTo(expectedResult));
        }
Beispiel #2
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);
        }