Beispiel #1
0
        public void NeedsMigration_WithSameVersion_False()
        {
            var migrator = new FileMigrator(10, "somefile");

            migrator.AddVersionStrategy(new VersionStrategyThatsGood(10, 10));
            Assert.That(migrator.NeedsMigration(), Is.False);
        }
Beispiel #2
0
        public void NeedsMigration_WithDifferentFileVersion_True()
        {
            var migrator = new FileMigrator(10, "somefile");

            migrator.AddVersionStrategy(new VersionStrategyThatsGood(8, 10));
            Assert.That(migrator.NeedsMigration(), Is.True);
        }
Beispiel #3
0
        public void FileVersion_OneStrategy_Correct()
        {
            var migrator = new FileMigrator(10, "somefile");

            migrator.AddVersionStrategy(new VersionStrategyThatsGood(8, 10));
            Assert.That(migrator.GetFileVersion(), Is.EqualTo(8));
        }
Beispiel #4
0
        public void FileVersion_TwoStragiesSort_UsesHigherStrategyFirst()
        {
            var migrator = new FileMigrator(10, "somefile");

            migrator.AddVersionStrategy(new VersionStrategyThatThrows(2));
            migrator.AddVersionStrategy(new VersionStrategyThatsGood(8, 10));
            Assert.That(migrator.GetFileVersion(), Is.EqualTo(8));
        }
Beispiel #5
0
        public void GetFileVersion_DataHasVersion_CorrectVersion()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);

                var migrator = new FileMigrator(7, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(1, "/configuration/@version"));

                Assert.AreEqual(1, migrator.GetFileVersion(e.TestFilePath));
            }
        }
Beispiel #6
0
        public void GetFileVersion_FileHasNoVersionUsingDefaultStrategy_ReturnsZero()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlNoVersion);

                var migrator = new FileMigrator(1, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(1, "/configuration/@version"));
                migrator.AddVersionStrategy(new DefaultVersion(0, 0));

                Assert.AreEqual(0, migrator.GetFileVersion(e.TestFilePath));
            }
        }
Beispiel #7
0
        public void GetFileVersion_FileHasNoVersionAndNoDefaultStrategy_Throws()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlNoVersion);

                var migrator = new FileMigrator(1, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(1, "/configuration/@version"));

                Assert.Throws <ApplicationException>(
                    () => migrator.GetFileVersion(e.TestFilePath)
                    );
            }
        }
Beispiel #8
0
        public void Migrate_WithBackupFileInTheWay_DoesntThrow()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);
                var migrator = new FileMigrator(3, e.TestFilePath);
                File.Copy(migrator.SourceFilePath, migrator.BackupFilePath);                 // Place the backup file in the way.
                migrator.AddVersionStrategy(new XPathVersion(3, "/configuration/@version"));
                migrator.AddMigrationStrategy(new XslStringMigrator(1, 2, EnvironmentForTest.Xsl1To2));
                migrator.AddMigrationStrategy(new XslStringMigrator(2, 3, EnvironmentForTest.Xsl2To3));

                migrator.Migrate();
            }
        }
Beispiel #9
0
        public void Migrate_MissingMigrationStrategy_ThrowsAndSourceFileSameVersion()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);
                var migrator = new FileMigrator(3, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(3, "/configuration/@version"));
                migrator.AddMigrationStrategy(new XslStringMigrator(1, 2, EnvironmentForTest.Xsl1To2));

                Assert.Throws <InvalidOperationException>(migrator.Migrate);

                AssertThatXmlIn.File(e.TestFilePath).HasAtLeastOneMatchForXpath("configuration[@version='1']");
                AssertThatXmlIn.File(e.TestFilePath).HasAtLeastOneMatchForXpath("/configuration/blah");
            }
        }
Beispiel #10
0
        public void Migrate_UsingXslAndXml_ArrviesAtVersion3()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);
                var migrator = new FileMigrator(3, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(3, "/configuration/@version"));
                migrator.AddMigrationStrategy(new XslStringMigrator(1, 2, EnvironmentForTest.Xsl1To2));
                migrator.AddMigrationStrategy(new XslStringMigrator(2, 3, EnvironmentForTest.Xsl2To3));

                migrator.Migrate();

                AssertThatXmlIn.File(e.TestFilePath).HasAtLeastOneMatchForXpath("configuration[@version='3']");
                AssertThatXmlIn.File(e.TestFilePath).HasAtLeastOneMatchForXpath("/configuration/blah");
            }
        }
Beispiel #11
0
        public void Migrate_MissingMigrationStrategy_LeavesWipFiles()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);
                var migrator = new FileMigrator(3, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(3, "/configuration/@version"));
                migrator.AddMigrationStrategy(new XslStringMigrator(1, 2, EnvironmentForTest.Xsl1To2));

                Assert.Throws <InvalidOperationException>(() => migrator.Migrate());

                var files = Directory.GetFiles(e.Path);
                Assert.That(files, Has.Some.SamePath(e.TestFilePath));
                Assert.That(files, Has.Some.SamePath(e.TestFilePath + ".bak"));
                Assert.That(files, Has.Some.SamePath(e.TestFilePath + ".Migrate_1_2"));
            }
        }
Beispiel #12
0
        // No wip files left behind
        public void Migrate_Succeeds_CleansUpWipFilesAndBackupFiles()
        {
            using (var e = new EnvironmentForTest())
            {
                e.WriteTestFile(EnvironmentForTest.XmlVersion1);
                var migrator = new FileMigrator(3, e.TestFilePath);
                migrator.AddVersionStrategy(new XPathVersion(3, "/configuration/@version"));
                migrator.AddMigrationStrategy(new XslStringMigrator(1, 2, EnvironmentForTest.Xsl1To2));
                migrator.AddMigrationStrategy(new XslStringMigrator(2, 3, EnvironmentForTest.Xsl2To3));

                migrator.Migrate();

                var files = Directory.GetFiles(e.Path);

                Assert.That(files.Length, Is.EqualTo(1));
                Assert.That(files, Has.Some.SamePath(e.TestFilePath));
            }
        }
Beispiel #13
0
 public WeSayUserConfigMigrator(string filePath)
 {
     _migrator = new FileMigrator(2, filePath);
     _migrator.AddVersionStrategy(new XPathVersion(99, "/configuration/@version"));
     _migrator.AddMigrationStrategy(new XslFromResourceMigrator(1, 2, "UserConfig.Migrate1To2.xsl"));
 }