public void ShouldUseValueFromCallResultResolverFactory() { // Arrange var substitutionContext = Substitute.For <ISubstitutionContext>(); var callResultsCacheFactory = Substitute.For <ICallResultCacheFactory>(); var callResultResolverFactory = Substitute.For <ICallResultResolverFactory>(); var sut = new NSubstituteRegisterCallHandlerCommand( substitutionContext, callResultsCacheFactory, callResultResolverFactory); var specimen = new object(); var specimenContext = Substitute.For <ISpecimenContext>(); var callRouter = new CallRouterStub(); substitutionContext.GetCallRouterFor(specimen).Returns(callRouter); var expectedResultResolver = Substitute.For <ICallResultResolver>(); callResultResolverFactory.Create(specimenContext).Returns(expectedResultResolver); // Act sut.Execute(specimen, specimenContext); // Assert var handler = (AutoFixtureValuesHandler)callRouter.RegisteredFactory.Invoke(Substitute.For <ISubstituteState>()); Assert.Equal(expectedResultResolver, handler.ResultResolver); }
public void ValidCallSpecificationFactoryIsPassedToHandler() { // Arrange var substitutionContext = Substitute.For <ISubstitutionContext>(); var sut = new NSubstituteRegisterCallHandlerCommand(substitutionContext); var specimen = new object(); var context = Substitute.For <ISpecimenContext>(); var substituteState = Substitute.For <ISubstituteState>(); var callRouter = new CallRouterStub(); substitutionContext.GetCallRouterFor(specimen).Returns(callRouter); var callSpecFactory = Substitute.For <ICallSpecificationFactory>(); substituteState.CallSpecificationFactory.Returns(callSpecFactory); sut.Execute(specimen, context); // Act var handler = (AutoFixtureValuesHandler)callRouter.RegisteredFactory.Invoke(substituteState); // Assert Assert.Equal(callSpecFactory, handler.CallSpecificationFactory); }
public void ResultCacheAndCallResultResolverShouldBeSameForEachHandler() { // Arrange var substitutionContext = Substitute.For <ISubstitutionContext>(); var sut = new NSubstituteRegisterCallHandlerCommand(substitutionContext); var specimen = new object(); var context = Substitute.For <ISpecimenContext>(); var substituteState = Substitute.For <ISubstituteState>(); var callRouter = new CallRouterStub(); substitutionContext.GetCallRouterFor(specimen).Returns(callRouter); sut.Execute(specimen, context); // Act var instance1 = callRouter.RegisteredFactory.Invoke(substituteState); var instance2 = callRouter.RegisteredFactory.Invoke(substituteState); // Assert var handler1 = (AutoFixtureValuesHandler)instance1; var handler2 = (AutoFixtureValuesHandler)instance2; Assert.NotSame(handler1, handler2); Assert.Same(handler1.ResultResolver, handler2.ResultResolver); Assert.Same(handler1.ResultCache, handler2.ResultCache); }
public void ShouldUseValueFromCallResultsCacheFactory() { // Fixture setup var substitutionContext = Substitute.For <ISubstitutionContext>(); var callResultsCacheFactory = Substitute.For <ICallResultCacheFactory>(); var callResultResolverFactory = Substitute.For <ICallResultResolverFactory>(); var sut = new NSubstituteRegisterCallHandlerCommand( substitutionContext, callResultsCacheFactory, callResultResolverFactory); var specimen = new object(); var specimenContext = Substitute.For <ISpecimenContext>(); var callRouter = new CallRouterStub(); substitutionContext.GetCallRouterFor(specimen).Returns(callRouter); var expectedResultsCache = Substitute.For <ICallResultCache>(); callResultsCacheFactory.CreateCache().Returns(expectedResultsCache); // Excercise system sut.Execute(specimen, specimenContext); // Verify outcome var handler = (AutoFixtureValuesHandler)callRouter.RegisteredFactory.Invoke(Substitute.For <ISubstituteState>()); Assert.Equal(expectedResultsCache, handler.ResultCache); // Teardown }
public void ShouldPassCorrectSpecimenContextToCallResultResolver() { // Arrange var substitutionContext = Substitute.For <ISubstitutionContext>(); var sut = new NSubstituteRegisterCallHandlerCommand(substitutionContext); var specimen = new object(); var context = Substitute.For <ISpecimenContext>(); var substituteState = Substitute.For <ISubstituteState>(); var callRouter = new CallRouterStub(); substitutionContext.GetCallRouterFor(specimen).Returns(callRouter); sut.Execute(specimen, context); // Act var handler = (AutoFixtureValuesHandler)callRouter.RegisteredFactory.Invoke(substituteState); // Assert Assert.Equal(context, ((CallResultResolver)handler.ResultResolver).SpecimenContext); }