public void ShouldPersistValuesOnImplementationTechnologyChangeRule() { Store store = new Store(typeof(CoreDesignSurfaceDomainModel), typeof(Microsoft.Practices.ServiceFactory.DataContracts.DataContractDslDomainModel)); DataContractModel dcModel; DataContract dcElement; using (Transaction transaction = store.TransactionManager.BeginTransaction()) { dcModel = store.ElementFactory.CreateElement(DataContractModel.DomainClassId) as DataContractModel; dcElement = store.ElementFactory.CreateElement(DataContract.DomainClassId) as DataContract; dcModel.Contracts.Add(dcElement); dcModel.ImplementationTechnology = new DataContractAsmxExtensionProvider(); Assert.IsNotNull(dcElement, "DataContract is null"); Assert.IsNotNull(dcElement.DataContractModel.ImplementationTechnology, "ImplementationTechnology is null"); // fire rules on commit transaction.Commit(); } AsmxDataContract asmxExtender = dcElement.ObjectExtender as AsmxDataContract; Assert.IsNotNull(asmxExtender, "ObjectExtender is null"); // store some value to compare later asmxExtender.OrderParts = true; using (Transaction transaction = store.TransactionManager.BeginTransaction()) { dcModel.ImplementationTechnology = new DataContractWcfExtensionProvider(); // fire rules on commit transaction.Commit(); } // now we should have the WCF extender WCFDataContract wcfExtender = dcElement.ObjectExtender as WCFDataContract; Assert.IsNotNull(wcfExtender, "ObjectExtender is null"); // get back the ASMX extender and check values using (Transaction transaction = store.TransactionManager.BeginTransaction()) { dcModel.ImplementationTechnology = new DataContractAsmxExtensionProvider(); // fire rules on commit transaction.Commit(); } asmxExtender = dcElement.ObjectExtender as AsmxDataContract; Assert.IsNotNull(asmxExtender, "ObjectExtender is null"); Assert.IsTrue(asmxExtender.OrderParts, "OrderParts in ASMX extender was not persisted"); // check for ObjectExtenderContainer final state Assert.IsNotNull(dcElement.ObjectExtenderContainer, "ObjectExtenderContainer is null"); Assert.AreEqual <int>(2, dcElement.ObjectExtenderContainer.ObjectExtenders.Count, "Extender count is not 2"); }
protected override ModelElement ResolveModelElement(string instanceNamespace) { using (Transaction transaction = DataContractStore.TransactionManager.BeginTransaction()) { DataContract dc = new DataContract(DataContractStore); dc.DataContractModel = new DataContractModel(DataContractStore); dc.DataContractModel.ProjectMappingTable = "ASMX"; dc.Name = "FooDC"; AsmxDataContract extender = new AsmxDataContract(); dc.ObjectExtender = extender; extender.ModelElement = dc; transaction.Commit(); return(dc); } }
protected override ModelElement ResolveModelElement(string instanceNamespace) { using (Transaction transaction = DataContractStore.TransactionManager.BeginTransaction()) { DataContract dc = new DataContract(DataContractStore); dc.DataContractModel = new DataContractModel(DataContractStore); dc.DataContractModel.ProjectMappingTable = "ASMX"; dc.Name = "FooDC"; AsmxDataContract extender = new AsmxDataContract(); dc.ObjectExtender = extender; extender.ModelElement = dc; transaction.Commit(); return dc; } }