public void Handle_WithNancyContext_AddHandledRequestIsCalledOnTheMockProviderRepository()
        {
            var expectedRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/"
            };
            var actualRequest = new ProviderServiceRequest
            {
                Method = HttpVerb.Get,
                Path   = "/",
                Body   = new {}
            };
            var expectedResponse = new ProviderServiceResponse();

            var handler = GetSubject();

            var nancyContext = new NancyContext
            {
                Request = new Request("GET", "/", "HTTP")
            };

            var interaction = new ProviderServiceInteraction {
                Request = expectedRequest, Response = expectedResponse
            };

            _mockProviderRepository.GetMatchingTestScopedInteraction(Arg.Any <ProviderServiceRequest>())
            .Returns(interaction);

            _mockRequestMapper.Convert(nancyContext.Request).Returns(actualRequest);

            handler.Handle(nancyContext);

            _mockProviderRepository.Received(1).AddHandledRequest(Arg.Is <HandledRequest>(x => x.ActualRequest == actualRequest && x.MatchedInteraction == interaction));
        }
        public void Handle_WithTheTestContextHeaderAttached_SetsTestContextOnTheRepository()
        {
            const string testContext = "EventsApiConsumerTests.GetAllEvents_WhenCalled_ReturnsAllEvents";
            var          headers     = new Dictionary <string, IEnumerable <string> >
            {
                { Constants.AdministrativeRequestTestContextHeaderKey, new List <string> {
                      testContext
                  } }
            };

            var context = new NancyContext
            {
                Request = new Request("DELETE", new Url
                {
                    Path   = "/interactions",
                    Scheme = "http"
                }, null, headers)
            };

            var handler = GetSubject();

            handler.Handle(context);

            _mockProviderRepository.Received(1).TestContext = testContext;
        }
        public void Handle_WithADeleteRequestToInteractions_ClearHandledRequestsIsCalledOnTheMockProviderRepository()
        {
            var context = new NancyContext
            {
                Request = new Request("DELETE", "/interactions", "http")
            };

            var handler = GetSubject();

            handler.Handle(context);

            _mockProviderRepository.Received(1).ClearHandledRequests();
        }