Example #1
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetBindings_SingleViewWithMultipleAttributes()
        {
            // Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();
            var hosts    = new object[0];
            var view1    = new View1();
            var views    = new [] { view1 };

            // Act
            var results = strategy.GetBindings(hosts, views).ToArray();

            // Assert
            CollectionAssert.AreEqual(new[]
            {
                new PresenterDiscoveryResult
                (
                    new[] { view1 },
                    @"AttributeBasedPresenterDiscoveryStrategy:
- found a [PresenterBinding] attribute on view instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+View1 (presenter type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+Presenter1, view type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+View1, binding mode: Default)
- found a [PresenterBinding] attribute on view instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+View1 (presenter type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+Presenter2, view type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithMultipleAttributes+View1, binding mode: Default)",
                    new[]
                {
                    new PresenterBinding(typeof(Presenter1), typeof(View1), BindingMode.Default, new[] { view1 }),
                    new PresenterBinding(typeof(Presenter2), typeof(View1), BindingMode.Default, new[] { view1 }),
                }
                )
            },
                                      results
                                      );
        }
Example #2
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetBindings_SingleAttributeOnHostScopedToViewType()
        {
            // Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();
            var hosts    = new [] { new Host1() };
            var view1    = new View1();
            var views    = new[] { view1 };

            // Act
            var results = strategy.GetBindings(hosts, views).ToArray();

            // Assert
            CollectionAssert.AreEqual(new[]
            {
                new PresenterDiscoveryResult
                (
                    new[] { view1 },
                    @"AttributeBasedPresenterDiscoveryStrategy:
- could not find a [PresenterBinding] attribute on view instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleAttributeOnHostScopedToViewTypeWithSingleView+View1
- found a [PresenterBinding] attribute on host instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleAttributeOnHostScopedToViewTypeWithSingleView+Host1 (presenter type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleAttributeOnHostScopedToViewTypeWithSingleView+Presenter1, view type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleAttributeOnHostScopedToViewTypeWithSingleView+View1, binding mode: Default)",
                    new[]
                {
                    new PresenterBinding(typeof(Presenter1), typeof(View1), BindingMode.Default, new[] { view1 }),
                }
                )
            },
                                      results
                                      );
        }
        public void AttributeBasedPresenterDiscoveryStrategy_GetBindings_SingleViewWithNoAttribute()
        {
            // Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();
            var hosts    = new object[0];
            var view1    = new View1();
            var views    = new [] { view1 };

            // Act
            var results = strategy.GetBindings(hosts, views).ToArray();

            // Assert
            CollectionAssert.AreEqual(new[]
            {
                new PresenterDiscoveryResult
                (
                    new[] { view1 },
                    @"AttributeBasedPresenterDiscoveryStrategy:
- could not find a [PresenterBinding] attribute on view instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_SingleViewWithNoAttribute+View1",
                    new PresenterBinding[0]
                )
            },
                                      results
                                      );
        }
Example #4
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetBindings_MultipleViewInstancesWithSharedPresenterOnHost()
        {
            // Arrange
            var strategy      = new AttributeBasedPresenterDiscoveryStrategy();
            var hosts         = new[] { new Host1() };
            var viewInstance1 = new View1();
            var viewInstance2 = new View1();
            var viewInstances = new[] { viewInstance1, viewInstance2 };

            // Act
            var results = strategy.GetBindings(hosts, viewInstances).ToArray();

            // Assert
            CollectionAssert.AreEqual(new[]
            {
                new PresenterDiscoveryResult
                (
                    new[] { viewInstance1, viewInstance2 },
                    @"AttributeBasedPresenterDiscoveryStrategy:
- could not find a [PresenterBinding] attribute on view instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_MultipleViewInstancesWithSharedPresenterOnHost+View1
- found a [PresenterBinding] attribute on host instance WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_MultipleViewInstancesWithSharedPresenterOnHost+Host1 (presenter type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_MultipleViewInstancesWithSharedPresenterOnHost+Presenter1, view type: WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_MultipleViewInstancesWithSharedPresenterOnHost+IViewInterface1, binding mode: SharedPresenter)
- including 1 more view instances in the binding because the binding mode is SharedPresenter and they are compatible with the view type WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetBindings_MultipleViewInstancesWithSharedPresenterOnHost+IViewInterface1",
                    new[]
                {
                    new PresenterBinding(typeof(Presenter1), typeof(IViewInterface1), BindingMode.SharedPresenter, new[] { viewInstance1, viewInstance2 }),
                }
                )
            },
                                      results
                                      );
        }
        public void AttributeBasedPresenterDiscoveryStrategy_GetAttributes_ShouldThrowExceptionForSharedPresenterWithoutExplicitViewType()
        {
            var cache = new Dictionary <RuntimeTypeHandle, IEnumerable <PresenterBindingAttribute> >();
            var ex    = Assert.Throws <NotSupportedException>(
                () => AttributeBasedPresenterDiscoveryStrategy.GetAttributes(cache, typeof(Host1)));
            const string expectedMessage = "When a PresenterBindingAttribute is applied with BindingMode=SharedPresenter, the ViewType must be explicitly specified. One of the bindings on WebFormsMvp.UnitTests.Binder.AttributeBasedPresenterDiscoveryStrategyTests.GetAttributes_SharedPresenterWithoutExplicitViewType+Host1 violates this restriction.";

            Assert.AreEqual(expectedMessage, ex.Message);
        }
Example #6
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetAttributes_ShouldDefaultViewTypeToSourceType()
        {
            var cache = new Dictionary <RuntimeTypeHandle, IEnumerable <PresenterBindingAttribute> >();

            var sourceType = typeof(Host1);
            var results    = AttributeBasedPresenterDiscoveryStrategy.GetAttributes(cache, sourceType);

            Assert.AreEqual(sourceType, results.Single().ViewType);
        }
        public void Get_Binding_When_Both_Binding_Mechansims_Used()
        {
            //  Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();
            IView <CreateTaskModel> createTaskView = new CreateTaskView();

            //Act
            var actualBinding = strategy.GetBinding(createTaskView);

            //  Assert
            Assert.IsTrue(actualBinding.Bindings.Any());
            Assert.IsTrue(actualBinding.Bindings.First().PresenterType == typeof(CreateTaskPresenter));
        }
        public void GetBinding_When_Valid_View_Passed_In()
        {
            //  Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();
            IView <MainFormModel> mainView = new MainView();

            //  Act
            var actualBinding = strategy.GetBinding(mainView);

            //  Assert
            Assert.IsTrue(actualBinding.Bindings.Any());
            Assert.IsTrue(actualBinding.Bindings.First().PresenterType == typeof(MainEntryMenuPresenter));
        }
        public void AttributeBasedPresenterDiscoveryStrategy_GetBindings_ShouldGuardNullViewInstances()
        {
            // Arrange
            var strategy = new AttributeBasedPresenterDiscoveryStrategy();

            try
            {
                // Act
                strategy.GetBindings(new object[0], null).ToArray();

                // Assert
                Assert.Fail("Expected exception not thrown");
            }
            catch (ArgumentNullException ex)
            {
                // Assert
                Assert.AreEqual("viewInstances", ex.ParamName);
            }
        }
Example #10
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetViewInstancesToBind_Can_Return_Zero_Matched_Instances()
        {
            var viewInstance         = new ViewToBind();
            var pendingViewInstances = new []
            {
                MockRepository.GenerateMock <IView>(),
                MockRepository.GenerateMock <IView>()
            };

            var matchedInstances = AttributeBasedPresenterDiscoveryStrategy.GetViewInstancesToBind(
                pendingViewInstances,
                viewInstance,
                typeof(IBoundView),
                new List <string>(),
                GetBinding(viewInstance));


            Assert.AreEqual(0, matchedInstances.Count());
        }
Example #11
0
        public void AttributeBasedPresenterDiscoveryStrategy_GetViewInstancesToBind_Only_Binds_Views_With_Matching_Interface()
        {
            var viewInstance         = new ViewToBind();
            var matchedView          = MockRepository.GenerateMock <IBoundView>();
            var pendingViewInstances = new []
            {
                matchedView,
                MockRepository.GenerateMock <IView>(),
                MockRepository.GenerateMock <IView>()
            };

            var matchedInstances = AttributeBasedPresenterDiscoveryStrategy.GetViewInstancesToBind(
                pendingViewInstances,
                viewInstance,
                typeof(IBoundView),
                new List <string>(),
                GetBinding(viewInstance));


            var boundView = matchedInstances.SingleOrDefault();

            Assert.AreEqual(matchedView, boundView);
        }