示例#1
0
        protected override void Initialize()
        {
            base.Initialize();

            var componentModel = this.GetService <SComponentModel, IComponentModel>();

            componentModel.DefaultCompositionService.SatisfyImportsOnce(this);

            this.trackSelection = this.GetService <SVsTrackSelectionEx, IVsTrackSelectionEx>();
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(this.trackSelection.OnSelectChange(this.selectionContainer));

            var shell = this.GetService <SVsUIShell, IVsUIShell>();

            var context = new SolutionBuilderContext
            {
                PatternManager          = this.PatternManager,
                UserMessageService      = this.UserMessageService,
                BindingFactory          = this.BindingFactory,
                NewProductDialogFactory = ctx => shell.CreateDialog <AddNewProductView>(ctx),
                NewNodeDialogFactory    = ctx => shell.CreateDialog <AddNewNodeView>(ctx),
                ShowProperties          = this.ShowProperties
            };

            this.viewModel = new SolutionBuilderViewModel(context, this.ServiceProvider);
            this.Content   = new SolutionBuilderView {
                DataContext = this.viewModel
            };
        }
示例#2
0
            public void WhenInvokingGuidanceAndGuidanceNotInstalled_ThenDisablesGuidance()
            {
                var serviceProvider = GetServiceProvider();

                var guidanceManager = Mock.Get(serviceProvider.GetService <IGuidanceManager>());

                guidanceManager.Setup(x => x.InstalledGuidanceExtensions).Returns(Enumerable.Empty <IGuidanceExtensionRegistration>());

                var target = new SolutionBuilderViewModel(this.ctx, serviceProvider);

                target.GuidanceCommand.Execute(null);
            }
示例#3
0
            public void WhenSolutionIsOpened_ThenAddNewProductIsEnabled()
            {
                var serviceProvider = GetServiceProvider();

                var solutionEvents = Mock.Get(serviceProvider.GetService <ISolutionEvents>());

                solutionEvents.Setup(x => x.IsSolutionOpened).Returns(true);

                var target = new SolutionBuilderViewModel(this.ctx, serviceProvider);

                Assert.True(target.AddNewProductCommand.CanExecute(null));
            }
示例#4
0
            public void WhenInvokingGuidanceAndGuidanceNotInstantiated_ThenInstantiatesGuidance()
            {
                var serviceProvider = GetServiceProvider();

                var guidanceManager = Mock.Get(serviceProvider.GetService <IGuidanceManager>());

                guidanceManager.Setup(x => x.InstalledGuidanceExtensions)
                .Returns(new[] { Mocks.Of <IGuidanceExtensionRegistration>().First(x => x.ExtensionId == SolutionBuilderViewModel.UsingGuidanceExtensionId) });
                guidanceManager.Setup(x => x.InstantiatedGuidanceExtensions)
                .Returns(Enumerable.Empty <IGuidanceExtension>());

                var target = new SolutionBuilderViewModel(this.ctx, serviceProvider);

                target.GuidanceCommand.Execute(null);

                guidanceManager.Verify(manager => manager.Instantiate(SolutionBuilderViewModel.UsingGuidanceExtensionId, It.IsAny <string>()), Times.Once());
            }
            public void Initialize()
            {
                var child1 = Create <ICollection, ICollectionInfo>("Bar1", Cardinality.ZeroToMany);
                var child2 = Create <IElement, IElementInfo>("Bar2", Cardinality.OneToOne);

                this.element = Create <IElement, IElementInfo>("Foo1", Cardinality.ZeroToMany, child1, child2);

                var children = (List <IAbstractElementInfo>) this.element.Info.Elements;

                children.Add(Mocks.Of <IElementInfo>().First(e =>
                                                             e.Name == "Element 1" &&
                                                             e.DisplayName == "Element 1" &&
                                                             e.IsVisible == true &&
                                                             e.AllowAddNew == true &&
                                                             e.Cardinality == Cardinality.ZeroToMany));

                children.Add(Mocks.Of <ICollectionInfo>().First(e =>
                                                                e.Name == "Collection 1" &&
                                                                e.DisplayName == "Collection 1" &&
                                                                e.IsVisible == true &&
                                                                e.AllowAddNew == true &&
                                                                e.Cardinality == Cardinality.ZeroToMany));

                var newNodeDialog = new Mock <IDialogWindow>();

                newNodeDialog.Setup(x => x.ShowDialog()).Returns(true);

                var ctx = new SolutionBuilderContext
                {
                    PatternManager       = new Mock <IPatternManager>().Object,
                    UserMessageService   = Mock.Of <IUserMessageService>(ums => ums.PromptWarning(It.IsAny <string>()) == true),
                    ShowProperties       = () => { },
                    NewNodeDialogFactory = x => newNodeDialog.Object
                };

                var serviceProvider = Mocks.Of <IServiceProvider>()
                                      .First(x => x.GetService(typeof(ISolutionEvents)) == new Mock <ISolutionEvents>().Object);
                var explorer = new SolutionBuilderViewModel(ctx, serviceProvider);

                this.target = new ElementViewModel(this.element, ctx);

                this.target.RenderHierarchyRecursive();
            }
示例#6
0
            public void WhenInvokingGuidanceAndGuidanceInstantiated_ThenActivatesGuidance()
            {
                var serviceProvider = GetServiceProvider();

                var extension = Mocks.Of <IGuidanceExtension>().First(x => x.ExtensionId == SolutionBuilderViewModel.UsingGuidanceExtensionId);

                var guidanceManager = Mock.Get(serviceProvider.GetService <IGuidanceManager>());

                guidanceManager.Setup(x => x.InstalledGuidanceExtensions)
                .Returns(new[] { Mocks.Of <IGuidanceExtensionRegistration>().First(x => x.ExtensionId == SolutionBuilderViewModel.UsingGuidanceExtensionId) });
                guidanceManager.Setup(x => x.InstantiatedGuidanceExtensions)
                .Returns(new[] { extension });

                var target = new SolutionBuilderViewModel(this.ctx, serviceProvider);

                target.GuidanceCommand.Execute(null);

                guidanceManager.VerifySet(x => x.ActiveGuidanceExtension = extension);
            }
示例#7
0
            public void Initialize()
            {
                var serviceProvider = GetServiceProvider();

                this.patternManager = new Mock <IPatternManager>();
                this.patternManager.Setup(p => p.IsOpen).Returns(true);

                var products = Mocks.Of <IProduct>().Where(p =>
                                                           p.Views == GetViews() &&
                                                           p.CurrentView == GetViews().FirstOrDefault(v => v.Info.IsDefault) &&
                                                           p.InstanceName == Path.GetRandomFileName() &&
                                                           p.Info == new Mock <IPatternInfo>().Object&&
                                                           p.BeginTransaction() == new Mock <ITransaction>().Object)
                               .Take(2)
                               .ToList();

                this.patternManager.Setup(p => p.Products).Returns(products);
                this.patternManager.Setup(p => p.DeleteProduct(It.IsAny <IProduct>()))
                .Callback <IProduct>((p) =>
                {
                    products.Remove(p);
                    this.patternManager.Raise(m => m.ElementDeleted += null, new ValueEventArgs <IProductElement>(p));
                })
                .Returns(true);

                this.solutionEvents = Mock.Get(serviceProvider.GetService <ISolutionEvents>());
                this.solutionEvents.Setup(e => e.IsSolutionOpened).Returns(true);

                var ctx = new SolutionBuilderContext
                {
                    PatternManager          = this.patternManager.Object,
                    NewProductDialogFactory = x => new Mock <IDialogWindow>().Object,
                    NewNodeDialogFactory    = x => new Mock <IDialogWindow>().Object,
                    ShowProperties          = () => { },
                    UserMessageService      = new Mock <IUserMessageService>().Object
                };

                this.target = new SolutionBuilderViewModel(ctx, serviceProvider);
            }
示例#8
0
            public void Initialize()
            {
                var serviceProvider = GetServiceProvider();

                IProduct product = null;

                this.patternManager = new Mock <IPatternManager>();
                this.patternManager.Setup(p => p.CreateProduct(It.IsAny <IInstalledToolkitInfo>(), It.IsAny <string>(), true))
                .Callback(() =>
                {
                    product = Mocks.Of <IProduct>().First(p =>
                                                          p.Info.Name == "Foo" &&
                                                          p.Views == GetViews() &&
                                                          p.CurrentView == GetViews().FirstOrDefault(v => v.Info.IsDefault) &&
                                                          p.InstanceName == Path.GetRandomFileName());
                    this.patternManager.Setup(p => p.Products).Returns(new[] { product });
                    this.patternManager.Raise(p => p.ElementCreated      += null, new ValueEventArgs <IProductElement>(product));
                    this.patternManager.Raise(p => p.ElementInstantiated += null, new ValueEventArgs <IProductElement>(product));
                })
                .Returns(() => product);

                var solutionListener = Mock.Get(serviceProvider.GetService <ISolutionEvents>());

                solutionListener.Setup(sl => sl.IsSolutionOpened).Returns(true);

                this.dialog = new Mock <IDialogWindow>();

                this.context = new SolutionBuilderContext
                {
                    PatternManager          = patternManager.Object,
                    NewProductDialogFactory = x => this.dialog.Object,
                    NewNodeDialogFactory    = x => new Mock <IDialogWindow>().Object,
                    UserMessageService      = new Mock <IUserMessageService>().Object,
                    ShowProperties          = () => { }
                };

                this.target = new SolutionBuilderViewModel(this.context, serviceProvider);
            }
示例#9
0
            public void WhenSolutionIsNotOpen_ThenAddNewProductIsDisabled()
            {
                var target = new SolutionBuilderViewModel(this.ctx, GetServiceProvider());

                Assert.False(target.AddNewProductCommand.CanExecute(null));
            }
示例#10
0
            public void Initialize()
            {
                var hiddenView = CreateView("HiddenView", false);

                Mock.Get(hiddenView.Info).Setup(x => x.IsVisible).Returns(false);

                var views = new[]
                {
                    CreateView("View1", false, Create <IElement, IElementInfo>("Element1", Cardinality.OneToOne)),
                    CreateView("View2", true, Create <ICollection, ICollectionInfo>("Collection2", Cardinality.OneToOne), Create <IElement, IElementInfo>("Element2", Cardinality.ZeroToMany)),
                    hiddenView,
                };

                var view1Children = (List <IAbstractElementInfo>)views[0].Info.Elements;

                Mock.Get((IElementInfo)view1Children[0])
                .Setup(e => e.Parent)
                .Returns(views[0].Info);

                var view2Children = (List <IAbstractElementInfo>)views[1].Info.Elements;

                Mock.Get((ICollectionInfo)view2Children[0])
                .Setup(e => e.Parent)
                .Returns(views[1].Info);
                Mock.Get((IElementInfo)view2Children[1])
                .Setup(e => e.Parent)
                .Returns(views[1].Info);
                view2Children.Add(Mocks.Of <IElementInfo>().First(e =>
                                                                  e.Name == "Foo1" &&
                                                                  e.IsVisible == true &&
                                                                  e.AllowAddNew == true &&
                                                                  e.DisplayName == "Foo1" &&
                                                                  e.Cardinality == Cardinality.ZeroToMany));
                view2Children.Add(Mocks.Of <ICollectionInfo>().First(e =>
                                                                     e.Name == "Foo2" &&
                                                                     e.IsVisible == true &&
                                                                     e.AllowAddNew == true &&
                                                                     e.DisplayName == "Foo2" &&
                                                                     e.Cardinality == Cardinality.ZeroToMany));

                this.product = Mocks.Of <IProduct>().First(p =>
                                                           p.InstanceName == "Foo" &&
                                                           p.Views == views &&
                                                           p.CurrentView == views.FirstOrDefault(v => v.Info.IsDefault) &&
                                                           p.Info == new Mock <IPatternInfo>().Object);

                this.patternManager = Mocks.Of <IPatternManager>()
                                      .First(x => x.InstalledToolkits == Enumerable.Empty <IInstalledToolkitInfo>());

                var newNodeDialog = new Mock <IDialogWindow>();

                newNodeDialog.Setup(x => x.ShowDialog()).Returns(true);

                this.context = new SolutionBuilderContext
                {
                    PatternManager       = this.patternManager,
                    UserMessageService   = Mock.Of <IUserMessageService>(ums => ums.PromptWarning(It.IsAny <string>()) == true),
                    ShowProperties       = () => { },
                    NewNodeDialogFactory = x => newNodeDialog.Object,
                };

                var serviceProvider = Mocks.Of <IServiceProvider>()
                                      .First(x => x.GetService(typeof(ISolutionEvents)) == new Mock <ISolutionEvents>().Object);
                var explorer = new SolutionBuilderViewModel(context, serviceProvider);

                this.target = new ProductViewModel(this.product, context);

                this.target.RenderHierarchyRecursive();
            }