public the_ribbon_factory()
 {
     viewProvider = Substitute.For<IViewProvider<TestRibbonTypes>>();
     viewModelFactory = new TestViewModelFactory();
     ribbonFactoryUnderTest = new TestRibbonFactory(
         viewModelFactory,
         () => Substitute.For<CustomTaskPaneCollection>(),
         viewProvider,
         new TestContextProvider(),
         Assembly.GetExecutingAssembly());
 }
 public the_ribbon_factory()
 {
     viewProvider = Substitute.For<IViewProvider>();
     viewModelFactory = new TestViewModelFactory();
     testAddInBase = AddInBaseFactory.Create();
     if (Core.RibbonFactory.RibbonFactory.Current == null)
     {
         ribbonFactoryUnderTest = new TestRibbonFactory(
         testAddInBase,
         viewProvider,
         new TestContextProvider(),
         "Foo",
         Assembly.GetExecutingAssembly())
         {
             ViewModelFactory = viewModelFactory
         };
     }
     else
     {
         ribbonFactoryUnderTest = (TestRibbonFactory)Core.RibbonFactory.RibbonFactory.Current;
     }
 }
        public void new_window_with_different_context_does_not_create_new_viewmodel()
        {
            // arrange
            ribbonFactoryUnderTest.ClearCurrent();
            var ribbonFactory = new TestRibbonFactory(viewModelFactory,
                () => Substitute.For<CustomTaskPaneCollection>(),
                viewProvider, new TestContextProvider(), Assembly.GetExecutingAssembly());
            ribbonFactory.SetApplication(null, AddInBaseFactory.Create());
            //Open new view to create a viewmodel for view
            var viewInstance = new TestWindow { Context = new TestWindowContext() };
            var view2Instance = new TestWindow { Context = new TestWindowContext() };

            // act

            viewProvider.NewView += Raise.EventWith(viewProvider, new NewViewEventArgs<TestRibbonTypes>(
                                                                        viewInstance, viewInstance.Context,
                                                                        TestRibbonTypes.RibbonType1));
            viewProvider.NewView += Raise.EventWith(viewProvider, new NewViewEventArgs<TestRibbonTypes>(
                                                                        view2Instance, view2Instance.Context,
                                                                        TestRibbonTypes.RibbonType1));

            // assert
            Assert.Equal(2, viewModelFactory.ViewModels.Count);
        }
        public void ribbon_factory_calls_back_to_correct_view_model()
        {
            // arrange
            ribbonFactoryUnderTest.ClearCurrent();
            var ribbonFactory = new TestRibbonFactory(
                viewModelFactory,
                () => Substitute.For<CustomTaskPaneCollection>(),
                viewProvider,
                new TestContextProvider(), Assembly.GetExecutingAssembly());
            ribbonFactory.SetApplication(null, AddInBaseFactory.Create());
            var processedRibbon = ribbonFactory.GetCustomUI(TestRibbonTypes.RibbonType1.GetEnumDescription());
            //Open new view to create a viewmodel for view
            var viewInstance = new TestWindow { Context = new TestWindowContext() };
            var view2Instance = new TestWindow { Context = new TestWindowContext() };
            viewProvider.NewView += Raise.EventWith(viewProvider, new NewViewEventArgs<TestRibbonTypes>(
                viewInstance, viewInstance.Context, TestRibbonTypes.RibbonType1));
            viewProvider.NewView += Raise.EventWith(viewProvider, new NewViewEventArgs<TestRibbonTypes>(
                view2Instance, view2Instance.Context, TestRibbonTypes.RibbonType1));
            var buttonTag = GetTag(processedRibbon, "testTogglePanelButton");

            // act
            viewModelFactory.ViewModels[1].PanelShown = true;
            var ribbonControl = GetRibbonControl("testTogglePanelButton", buttonTag, viewInstance);
            var ribbon2Control = GetRibbonControl("testTogglePanelButton", buttonTag, view2Instance);
            var isPressed = ribbonFactory.GetPressed(ribbonControl);
            var is2Pressed = ribbonFactory.GetPressed(ribbon2Control);

            // assert
            Assert.False(isPressed);
            Assert.True(is2Pressed);
        }
        public void new_window_with_same_context_does_not_create_new_viewmodel()
        {
            // arrange
            ribbonFactoryUnderTest.ClearCurrent();
            var ribbonFactory = new TestRibbonFactory(
                testAddInBase,
                viewProvider, new TestContextProvider(), "Foo", Assembly.GetExecutingAssembly());
            testAddInBase.TestAddin.OnStartup();
            //Open new view to create a viewmodel for view
            var viewInstance = new TestWindow { Context = new TestWindowContext() };
            var view2Instance = new TestWindow { Context = new TestWindowContext() };

            // act

            var viewEventArgs = new NewViewEventArgs(viewInstance, viewInstance.Context,
                TestRibbonTypes.RibbonType1.GetEnumDescription());
            viewProvider.NewView += Raise.EventWith(viewProvider, viewEventArgs);
            var newViewEventArgs = new NewViewEventArgs(view2Instance, viewInstance.Context,
                TestRibbonTypes.RibbonType1.GetEnumDescription());
            viewProvider.NewView += Raise.EventWith(viewProvider, newViewEventArgs);

            // assert
            Assert.Equal(1, viewModelFactory.ViewModels.Count);
        }