public void RetargetWithMetadataConverter_replaces_source_document_with_document_returned_from_converter()
        {
            const string convertedModelXml = "<newModel><parts /></newModel>";
            var          model             = new XDocument(new XElement("root"));

            var mockConverter = new Mock <MetadataConverterDriver>();

            mockConverter
            .Setup(c => c.Convert(It.IsAny <XmlDocument>(), It.IsAny <Version>()))
            .Returns(
                (XmlDocument doc, Version version) =>
            {
                var convertedModel = new XmlDocument();
                convertedModel.LoadXml(convertedModelXml);
                return(convertedModel);
            });

            RetargetXmlNamespaceCommand.RetargetWithMetadataConverter(model, EntityFrameworkVersion.Version2, mockConverter.Object);
            Assert.True(XNode.DeepEquals(XDocument.Parse("<!---->\n" + convertedModelXml), model));
        }
        public void RetargetWithMetadataConverter_does_not_modify_xml_if_converter_returns_null()
        {
            foreach (var schemaVersion in EntityFrameworkVersion.GetAllVersions())
            {
                var model = new XDocument(new XElement("root"));
                model.Changed +=
                    (sender, args) => { throw new InvalidOperationException("Unexpected changes to model."); };

                var mockConverter = new Mock <MetadataConverterDriver>();
                mockConverter
                .Setup(c => c.Convert(It.IsAny <XmlDocument>(), It.IsAny <Version>()))
                .Returns(
                    (XmlDocument doc, Version version) =>
                {
                    Assert.Same(schemaVersion, version);
                    return(null);
                });

                RetargetXmlNamespaceCommand.RetargetWithMetadataConverter(model, schemaVersion, mockConverter.Object);
            }
        }