Exemplo n.º 1
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();
            }
        }
Exemplo n.º 2
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");
            }
        }
Exemplo n.º 3
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));
            }
        }
Exemplo n.º 4
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");
            }
        }
Exemplo n.º 5
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"));
            }
        }
Exemplo n.º 6
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"));
 }