public void ShouldSupportsImplicitMethodsInclusion() { ServiceLocatorStub sl = CreateDefaultContainer(); bool resumedCalled = false; bool startedCalled = false; var convFactory = new ConversationFactoryStub(delegate(string id) { IConversation result = new NoOpConversationStub(id); result.Resumed += ((s, a) => resumedCalled = true); result.Started += ((s, a) => startedCalled = true); return(result); }); sl.AddInstance <IConversationFactory>(convFactory); var conversationContainer = CurrentConversationContainer; var presenter = new SamplePresenter(); presenter.GetProduct(Guid.NewGuid()); Assert.That(startedCalled, "An implicit method inclusion don't start the conversation."); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1), "Should have one active conversation because the default mode is continue."); resumedCalled = false; startedCalled = false; presenter.GetProduct(Guid.NewGuid()); Assert.That(resumedCalled, "An implicit method inclusion don't resume the conversation."); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1), "Should have one active conversation because the default mode is continue."); resumedCalled = false; presenter.DoSomethingNoPersistent(); Assert.That(!resumedCalled, "An explicit method exclusion resume the conversation; shouldn't"); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1), "Should have one active conversation because the default mode is continue."); string value = presenter.PropertyOutConversation; Assert.That(!resumedCalled, "An explicit method exclusion resume the conversation; shouldn't"); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1), "Should have one active conversation because the default mode is continue."); value = presenter.PropertyInConversation; Assert.That(resumedCalled, "An implicit method inclusion don't resume the conversation."); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(1), "Should have one active conversation because the default mode is continue."); resumedCalled = false; presenter.AcceptAll(); Assert.That(resumedCalled, "An explicit method inclusion should resume the conversation"); Assert.That(conversationContainer.BindedConversationCount, Is.EqualTo(0), "Should have NO active conversation because the method AcceptAll end the conversation."); }
public void ShouldUnbindOnEndException() { ServiceLocatorStub sl = CreateDefaultContainer(); var convFactory = new ConversationFactoryStub(delegate(string id) { IConversation result = new ExceptionOnFlushConversationStub(id); result.OnException += ((sender, args) => args.ReThrow = false); return(result); }); sl.AddInstance <IConversationFactory>(convFactory); var presenter = new SamplePresenter(); presenter.GetProduct(Guid.NewGuid()); Assert.That(CurrentConversationContainer.BindedConversationCount, Is.EqualTo(1), "One conversation should be binded."); presenter.AcceptAll(); Assert.That(CurrentConversationContainer.BindedConversationCount, Is.EqualTo(0), "Don't unbind the conversation with exception catch by custom event handler"); }