private void SelectedXmlDependencyChanged(SelectedXmlDependencyChangedEvent ev) { XmlDependency = ev.NewValue; if (XmlDependency != null) { // Get resolver type // Todo Introduce query method GetDependencyResolver(string type) var resolverType = DependencyService.GetDependencyResolvers().Where(x => x.ReferenceName.Equals("Resolver_" + XmlDependency.Type)).FirstOrDefault(); // HACK MRI: SourceControlCopy resolver should be used for SourceControl dependencies if (resolverType == null && XmlDependency.Type.Equals("SourceControl")) { resolverType = DependencyService.GetDependencyResolvers().Where(x => x.ReferenceName.Equals("Resolver_SourceControlMapping")).FirstOrDefault(); } // Get the editor based on type if (resolverType != null) { // Clean old data context to remove binding between UI and view model if (ProviderSettingsEditor != null && ProviderSettingsEditor.DataContext != null) { ProviderSettingsEditor.DataContext = null; ProviderSettingsEditor = null; } var validDepDefFileList = DependencyService.ServiceSettings.GetSetting(ServiceValidSettings.DefaultDependencyDefinitionFilename); ProviderSettingsEditor = resolverType.GetDefinitionEditor(DependencyInjectionService.Instance, XmlDependency, validDepDefFileList, TeamProjectCollectionData.TPCUri); } } else { // reset editor ProviderSettingsEditor = null; } }
private void PublishSelectedXmlDependencyChangedEvent(IXmlDependencyViewModel oldValue, IXmlDependencyViewModel newValue) { // publish distributed event if (EventPublisher != null) { // may evaluate to null for CreateXmlDependencyViewModel types (desired) var oldXmlDependencyViewModel = oldValue as XmlDependencyViewModel; var newXmlDependencyViewModel = newValue as XmlDependencyViewModel; var theEvent = new SelectedXmlDependencyChangedEvent(oldXmlDependencyViewModel, newXmlDependencyViewModel); EventPublisher.Publish(theEvent); } }
private List <object> _InitializeViewModelDependencies() { const DependencyType usedDependencyType = DependencyType.BinaryDependency; var resolverTypeLookUp = "Resolver_" + usedDependencyType; var result = new List <object>(); // the fake editor var fakeDefinitionEditor = new TextBox(); result.Add(fakeDefinitionEditor as FrameworkElement); // create xml dependency fakes var dependencyProviderConfigFake = new Mock <IDependencyProviderConfig>(); dependencyProviderConfigFake.Setup(o => o.Type) .Returns(usedDependencyType.ToString()); result.Add(dependencyProviderConfigFake); var xmlDependencyFake = new Mock <IXmlDependency>(); xmlDependencyFake.Setup(o => o.Type) .Returns(usedDependencyType); xmlDependencyFake.Setup(o => o.ProviderConfiguration) .Returns(dependencyProviderConfigFake.Object); result.Add(xmlDependencyFake); var xmlDependencyViewModel = new XmlDependencyViewModel(xmlDependencyFake.Object, true); result.Add(xmlDependencyViewModel); // create the fake resolver var dependencyResolverTypeFake = new Mock <IDependencyResolverType>(); dependencyResolverTypeFake.Setup(o => o.ReferenceName) .Returns(resolverTypeLookUp); dependencyResolverTypeFake.Setup(o => o.GetDefinitionEditor(It.IsAny <IDependencyInjectionService>(), xmlDependencyViewModel, "component.targets", FakeTPCUrl)) .Returns(fakeDefinitionEditor); result.Add(dependencyResolverTypeFake); // create the IDependencyService fake var dependencyServiceFake = new Mock <IDependencyService>(); dependencyServiceFake.Setup(o => o.GetDependencyResolvers()) .Returns(new List <IDependencyResolverType>(new[] { dependencyResolverTypeFake.Object })); result.Add(dependencyServiceFake); // create event fakes var selectedXmlDependencyChangedEvent = new SelectedXmlDependencyChangedEvent(null, xmlDependencyViewModel); result.Add(selectedXmlDependencyChangedEvent); // create an event observable fake Action <SelectedXmlDependencyChangedEvent> eventHandler = null; var selectedXmlDependencyChangedEventObservableFake = new Mock <IObservable <SelectedXmlDependencyChangedEvent> >(); result.Add(selectedXmlDependencyChangedEventObservableFake); // use moles to stub the static extension method _hasCalledIObservableSubscribe = false; System.Moles.MObservableExtensions.SubscribeIObservableOfTSourceActionOfTSource <SelectedXmlDependencyChangedEvent>((func, action) => { _hasCalledIObservableSubscribe = true; eventHandler = action; return(null); }); // create an IEventPublisher fake var eventPublisherFake = new Mock <IEventPublisher>(); eventPublisherFake.Setup(o => o.GetEvent <SelectedXmlDependencyChangedEvent>()) .Returns(selectedXmlDependencyChangedEventObservableFake.Object); eventPublisherFake.Setup(o => o.Publish(selectedXmlDependencyChangedEvent)) .Callback <SelectedXmlDependencyChangedEvent>(o => eventHandler(o)); result.Add(eventPublisherFake); // create targets file data var targetsFileData = new TargetsFileData(); targetsFileData.LocalPath = FakePath; result.Add(targetsFileData); // create team project collection data var tpcUrlData = new TeamProjectCollectionData(); tpcUrlData.TPCUri = FakeTPCUrl; result.Add(tpcUrlData); // initialize injection service _InitializeDependenyInjectionService <ProviderSettingsEditorViewModel>(vm => { vm.DependencyService = dependencyServiceFake.Object; vm.EventPublisher = eventPublisherFake.Object; vm.TargetsFileData = targetsFileData; vm.TeamProjectCollectionData = tpcUrlData; }); return(result); }
private void SelectedXmlDependencyChanged(SelectedXmlDependencyChangedEvent ev) { XmlDependency = ev.NewValue; }