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 PrivateMethodsShouldNotBeImplicitlyIncluded() { var sl = CreateDefaultContainer(); int startedCalledTimes = 0; var convFactory = new ConversationFactoryStub(delegate(string id) { IConversation result = new NoOpConversationStub(id); result.Started += (s, a) => startedCalledTimes++; return(result); }); sl.AddInstance <IConversationFactory>(convFactory); var presenter = new SamplePresenter(); //DoSomethingNoPersistent() calls to a private method that is not explicit included presenter.DoSomethingNoPersistent(); Assert.That(startedCalledTimes, Is.EqualTo(0), "The conversation should not be started."); }