예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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;
 }