예제 #1
0
        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);
        }
예제 #3
0
        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
        }
예제 #5
0
        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);
        }