Ejemplo n.º 1
0
        public async Task HandlersTest()
        {
            var configureHeaderCalled    = false;
            var configureParameterCalled = false;
            var parseFailureResultCalled = false;
            var parseSuccessResultCalled = false;
            var expectedParameter        = new object();
            var expectedParameterBag     = new StubParameterBag();
            var expectedHeaderBag        = new StubHeaderBag();
            var expectedStatusCode       = HttpStatusCode.OK;
            var expectedRequestResult    = new StubRequestResult();
            var expectedSuccessResult    = new object();
            var expectedFailureResult    = new object();

            var request = new DelegateRequest <object, object, object>(HttpMethod.Post, string.Empty)
            {
                ConfigureHeaderAsyncHandler = (headerBag, parameter) => {
                    Assert.AreEqual(expectedHeaderBag, headerBag);
                    Assert.AreEqual(expectedParameter, parameter);
                    configureHeaderCalled = true;

                    return(Task.FromResult(0));
                },
                ConfigureParameterAsyncHandler = (parameterBag, parameter) => {
                    Assert.AreEqual(expectedParameterBag, parameterBag);
                    Assert.AreEqual(expectedParameter, parameter);
                    configureParameterCalled = true;

                    return(Task.FromResult(0));
                },
                ParseSuccessResultAsyncHandler = (statusCode, requestResult) => {
                    Assert.AreEqual(expectedStatusCode, statusCode);
                    Assert.AreEqual(expectedRequestResult, requestResult);
                    parseSuccessResultCalled = true;

                    return(Task.FromResult <object>(expectedSuccessResult));
                },
                ParseFailureResultAsyncHandler = (statusCode, requestResult) => {
                    Assert.AreEqual(expectedStatusCode, statusCode);
                    Assert.AreEqual(expectedRequestResult, requestResult);
                    parseFailureResultCalled = true;

                    return(Task.FromResult <object>(expectedFailureResult));
                },
            };

            await request.ConfigureHeaderAsync(expectedHeaderBag, expectedParameter);

            await request.ConfigureParameterAsync(expectedParameterBag, expectedParameter);

            var successResult = await request.ParseSuccessResultAsync(expectedStatusCode, expectedRequestResult);

            var failureResult = await request.ParseFailureResultAsync(expectedStatusCode, expectedRequestResult);

            Assert.IsTrue(configureHeaderCalled);
            Assert.IsTrue(configureParameterCalled);
            Assert.IsTrue(parseSuccessResultCalled);
            Assert.IsTrue(parseFailureResultCalled);

            Assert.AreEqual(expectedSuccessResult, successResult);
            Assert.AreEqual(expectedFailureResult, failureResult);
        }