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 ); }
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 ); }
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); }
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); } }
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()); }
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); }