private ScenarioContext CreateScenarioContext(Action <IObjectContainer> registerTestThreadMocks = null, Action <IObjectContainer> registerGlobalMocks = null)
        {
            IObjectContainer testThreadContainer;

            testRunner = TestObjectFactories.CreateTestRunner(out testThreadContainer, registerTestThreadMocks, registerGlobalMocks);
            return(new ScenarioContext(new ObjectContainer(testThreadContainer), new ScenarioInfo("sample scenario", "sample scenario description", new string[0]), testThreadContainer.Resolve <ITestObjectResolver>()));
        }
Exemplo n.º 2
0
        public void ShouldReportCorrectCurrentTopLevelStepIfWeHaveStepsMoreThan1Deep()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();
            var firstStepInfo  = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty);

            contextManager.InitializeStepContext(firstStepInfo);
            Assert.AreEqual(firstStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            contextManager.CleanupStepContext();
            var secondStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise twice", null, string.Empty);

            contextManager.InitializeStepContext(secondStepInfo);
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            var thirdStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a third time", null, string.Empty);

            contextManager.InitializeStepContext(thirdStepInfo); //Call sub step
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            var fourthStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a forth time", null, string.Empty);

            contextManager.InitializeStepContext(fourthStepInfo); //call sub step of sub step
            contextManager.CleanupStepContext();                  // return from sub step of sub step
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            contextManager.CleanupStepContext();                  // return from sub step
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            contextManager.CleanupStepContext();                  // finish 2nd step
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            var fifthStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a fifth time", null, string.Empty);

            contextManager.InitializeStepContext(fifthStepInfo);
            Assert.AreEqual(fifthStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
        }
Exemplo n.º 3
0
        private ScenarioContext CreateScenarioContext(Action <IObjectContainer> registerMocks = null)
        {
            IObjectContainer container;

            testRunner = TestObjectFactories.CreateTestRunner(out container, registerMocks);
            return(new ScenarioContext(new ScenarioInfo("sample scenario", new string[0]), container));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a test thread object container and registers the provided test tracer.
        /// </summary>
        /// <param name="testTracer">The test tracer that will be registered.</param>
        /// <returns>An object that implements <see cref="IObjectContainer"/>.</returns>
        private IObjectContainer CreateTestThreadObjectContainer(ITestTracer testTracer)
        {
            IObjectContainer container;

            TestObjectFactories.CreateTestRunner(
                out container,
                objectContainer => objectContainer.RegisterInstanceAs <ITestTracer>(testTracer));
            return(container);
        }
        public void TopLevelStepShouldBeNullInitially()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();

            Assert.IsNull(contextManager.CurrentTopLevelStepDefinitionType);
        }
Exemplo n.º 6
0
        public void ShouldTraceWarningWhenCleanedUpWithoutBeingInitialised()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();

            contextManager.CleanupStepContext();
            mockTracer.Verify(x => x.TraceWarning("The previous ScenarioStepContext was already disposed."));
        }
Exemplo n.º 7
0
        public void ShouldNotTraceWarningWhenInitialisedTwice()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();

            contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty));
            contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise twice", null, string.Empty));
            mockTracer.Verify(x => x.TraceWarning(It.IsAny <String>()), Times.Never());
        }
        public void ShouldBeAbleToDisposeContextManagerAfterAnInconsistentState()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();
            var firstStepInfo  = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty);

            contextManager.InitializeStepContext(firstStepInfo);
            contextManager.CleanupStepContext();

            ((IDisposable)contextManager).Dispose();
        }
Exemplo n.º 9
0
        public void ShouldTraceWarningWhenInitialisedTwiceThenCleanedUp3Times()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();

            contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty));
            contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise twice", null, string.Empty));
            contextManager.CleanupStepContext();
            contextManager.CleanupStepContext();
            contextManager.CleanupStepContext();
            mockTracer.Verify(x => x.TraceWarning("The previous ScenarioStepContext was already disposed."), Times.Once());
        }
        public void ScenarioStartShouldResetTopLevelStep()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();
            var firstStepInfo  = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty);

            contextManager.InitializeStepContext(firstStepInfo);
            // do not call CleanupStepContext to simulate inconsistent state

            contextManager.InitializeScenarioContext(new ScenarioInfo("my scenario"));

            Assert.IsNull(contextManager.CurrentTopLevelStepDefinitionType);
        }
        protected TestRunner GetTestRunnerFor(Action <IObjectContainer> registerMocks, params Type[] bindingTypes)
        {
            return(TestObjectFactories.CreateTestRunner(
                       container =>
            {
                container.RegisterTypeAs <DummyTestTracer, ITestTracer>();
                container.RegisterInstanceAs(ContextManagerStub);

                var builder = (RuntimeBindingRegistryBuilder)container.Resolve <IRuntimeBindingRegistryBuilder>();
                foreach (var bindingType in bindingTypes)
                {
                    builder.BuildBindingsFromType(bindingType);
                }

                registerMocks?.Invoke(container);
            }));
        }
Exemplo n.º 12
0
        public void ShouldReportCorrectCurrentTopLevelStepIfWeHaveExecutedMoreThan1Step()
        {
            IObjectContainer container;
            var mockTracer = new Mock <ITestTracer>();

            TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object));
            var contextManager = container.Resolve <IContextManager>();
            var firstStepInfo  = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty);

            contextManager.InitializeStepContext(firstStepInfo);
            Assert.AreEqual(firstStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            contextManager.CleanupStepContext();
            var secondStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise twice", null, string.Empty);

            contextManager.InitializeStepContext(secondStepInfo);
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
            contextManager.CleanupStepContext();
            Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo);
        }