public void Migrate_MigrationScriptDefinitionNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => CalculationConfigurationMigrator.Migrate(new XDocument(), null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("migrationScriptDefinition", exception.ParamName);
        }
        public void Migrate_XmlDocumentNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => CalculationConfigurationMigrator.Migrate(null, "");

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("xmlDocument", exception.ParamName);
        }
        public void Migrate_EmptyMigrationScript_MigratesXmlDocument()
        {
            // Setup
            string    xslt        = File.ReadAllText(Path.Combine(testDirectoryPath, "EmptyMigrationScript.xslt"));
            XDocument xmlDocument = GetDefaultXDocument();

            // Call
            XDocument migratedXDocument = CalculationConfigurationMigrator.Migrate(xmlDocument, xslt);

            // Assert
            Assert.IsTrue(XNode.DeepEquals(xmlDocument, migratedXDocument));
        }
        public void Migrate_InvalidMigrationScript_ThrowsCalculationConfigurationMigrationException()
        {
            // Setup
            string    xslt        = File.ReadAllText(Path.Combine(testDirectoryPath, "InvalidMigrationScript.xslt"));
            XDocument xmlDocument = GetDefaultXDocument();

            // Call
            void Call() => CalculationConfigurationMigrator.Migrate(xmlDocument, xslt);

            // Assert
            var exception = Assert.Throws <CalculationConfigurationMigrationException>(Call);

            Assert.IsInstanceOf <InvalidOperationException>(exception.InnerException);
            Assert.AreEqual(exception.InnerException.Message, exception.Message);
        }
        public void Migrate_WithMigrationScript_MigratesXmlDocument()
        {
            // Setup
            string    xslt        = File.ReadAllText(Path.Combine(testDirectoryPath, "MigrationScript.xslt"));
            XDocument xmlDocument = GetDefaultXDocument();

            // Call
            XDocument migratedXDocument = CalculationConfigurationMigrator.Migrate(xmlDocument, xslt);

            // Assert
            XDocument expectedXmlDocument = GetDefaultXDocument();
            var       attribute           = new XAttribute("test", true);

            expectedXmlDocument.Root.Add(attribute);
            var newNode = new XElement("newNode");

            expectedXmlDocument.Root.Add(newNode);

            Assert.IsTrue(XNode.DeepEquals(expectedXmlDocument, migratedXDocument));
        }