示例#1
0
 /// <summary>
 /// Specifies the response to return in sequence.
 /// </summary>
 /// <param name="setup">The setup.</param>
 /// <param name="statusCode">The status code.</param>
 /// <param name="configure">An action to further configure the response such as setting headers.</param>
 public static ISetupSequentialResult <Task <HttpResponseMessage> > ReturnsResponse(
     this ISetupSequentialResult <Task <HttpResponseMessage> > setup,
     HttpStatusCode statusCode,
     Action <HttpResponseMessage> configure = null)
 {
     return(setup.ReturnsAsync(CreateResponse(statusCode: statusCode, configure: configure)));
 }
示例#2
0
        public static ISetupSequentialResult <Task <T> > ReturnsSequenceAsync <T>(this ISetupSequentialResult <Task <T> > setup, IEnumerable <T> results)
        {
            foreach (var item in results)
            {
                setup.ReturnsAsync(item);
            }

            return(setup);
        }
 private ISetupSequentialResult <Task <HttpResponseMessage> > AdddReturnPart(ISetupSequentialResult <Task <HttpResponseMessage> > handlerPart,
                                                                             HttpStatusCode statusCode, HttpContent content)
 {
     return(handlerPart.ReturnsAsync(new HttpResponseMessage()
     {
         StatusCode = statusCode,
         Content = content
     }));
 }
        /// <summary>
        /// Specifies the response to return in sequence.
        /// </summary>
        /// <param name="setup">The setup.</param>
        /// <param name="statusCode">The status code.</param>
        /// <param name="content">The response content.</param>
        /// <param name="configure">An action to further configure the response such as setting headers.</param>
        /// <exception cref="ArgumentNullException"><paramref name="content" /> is null.</exception>
        public static ISetupSequentialResult <Task <HttpResponseMessage> > ReturnsResponse(
            this ISetupSequentialResult <Task <HttpResponseMessage> > setup,
            HttpStatusCode statusCode, HttpContent content, Action <HttpResponseMessage> configure = null)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            return(setup.ReturnsAsync(CreateResponse(statusCode, configure, content)));
        }
        /// <summary>
        /// Specifies the response to return in sequence, as <see cref="ByteArrayContent" />.
        /// </summary>
        /// <param name="setup">The setup.</param>
        /// <param name="statusCode">The status code.</param>
        /// <param name="content">The response body.</param>
        /// <param name="mediaType">The media type.</param>
        /// <param name="configure">An action to further configure the response such as setting headers.</param>
        /// <exception cref="ArgumentNullException"><paramref name="content" /> is null.</exception>
        public static ISetupSequentialResult <Task <HttpResponseMessage> > ReturnsResponse(
            this ISetupSequentialResult <Task <HttpResponseMessage> > setup,
            HttpStatusCode statusCode, byte[] content, string mediaType = null, Action <HttpResponseMessage> configure = null)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            return(setup.ReturnsAsync(CreateResponse(statusCode, configure, new ByteArrayContent(content), mediaType)));
        }
示例#6
0
        private void AndThePagesOfPublishedProviders(params IEnumerable <PublishedProvider>[] pages)
        {
            ISetupSequentialResult <Task <IEnumerable <PublishedProvider> > > reads = _cosmosFeed.SetupSequence(_ =>
                                                                                                                _.ReadNext(It.IsAny <CancellationToken>()));
            ISetupSequentialResult <bool> hasRecords = _cosmosFeed.SetupSequence(_ => _.HasMoreResults);

            foreach (IEnumerable <PublishedProvider> page in pages)
            {
                reads.ReturnsAsync(page);
                hasRecords.Returns(true);
            }
        }
        public async Task ReturnsTwentyTwoIdsWithOnlyTwoStories()
        {
            _sequentialSetup
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent("[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]"),
            });

            SetArticlesMock();

            _mockFactory.Setup(m => m.CreateClient(It.IsAny <string>()))
            .Returns(new HttpClient(_mockHttpMessageHandler.Object));

            var repository = new HackerNewsApiRepository(_configuration, _mockFactory.Object, _mockLogger.Object);

            Assert.AreEqual((await repository.GetBestStories()).Count, 1);
        }
示例#8
0
 public static ISetupSequentialResult <Task <ExecuteResult> > SetupExecution(this ISetupSequentialResult <Task <ExecuteResult> > current)
 {
     return(current.ReturnsAsync(new ExecuteResult {
         RowsModified = 1, Succeeded = true
     })
            .ReturnsAsync(new ExecuteResult {
         RowsModified = 2, Succeeded = true
     })
            .ReturnsAsync(new ExecuteResult {
         RowsModified = 0, Succeeded = true
     })
            .ReturnsAsync(new ExecuteResult {
         Succeeded = false
     }));;
 }
示例#9
0
        /// <summary>
        /// Specifies the response to return in sequence, as <see cref="StreamContent" /> with <see
        /// cref="HttpStatusCode.OK" />. If the stream is seekable, it will be wrapped to allow for reuse across
        /// multiple requests (each request maintains an independent stream position).
        /// </summary>
        /// <param name="setup">The setup.</param>
        /// <param name="content">The response body.</param>
        /// <param name="mediaType">The media type.</param>
        /// <param name="configure">An action to further configure the response such as setting headers.</param>
        /// <exception cref="ArgumentNullException"><paramref name="content" /> is null.</exception>
        public static ISetupSequentialResult <Task <HttpResponseMessage> > ReturnsResponse(
            this ISetupSequentialResult <Task <HttpResponseMessage> > setup,
            Stream content,
            string mediaType = null,
            Action <HttpResponseMessage> configure = null)
        {
            if (content is null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            return(setup.ReturnsAsync(CreateResponse(
                                          content: CreateStreamContent(content),
                                          mediaType: mediaType,
                                          configure: configure)));
        }
示例#10
0
        /// <summary>
        /// Specifies the response to return in sequence, as <see cref="StringContent" />.
        /// </summary>
        /// <param name="setup">The setup.</param>
        /// <param name="statusCode">The status code.</param>
        /// <param name="content">The response body.</param>
        /// <param name="mediaType">The media type. Defaults to text/plain.</param>
        /// <param name="encoding">The character encoding. Defaults to <see cref="Encoding.UTF8" />.</param>
        /// <param name="configure">An action to further configure the response such as setting headers.</param>
        /// <exception cref="ArgumentNullException"><paramref name="content" /> is null.</exception>
        public static ISetupSequentialResult <Task <HttpResponseMessage> > ReturnsResponse(
            this ISetupSequentialResult <Task <HttpResponseMessage> > setup,
            HttpStatusCode statusCode,
            string content,
            string mediaType  = null,
            Encoding encoding = null,
            Action <HttpResponseMessage> configure = null)
        {
            if (content is null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            return(setup.ReturnsAsync(CreateResponse(
                                          statusCode: statusCode,
                                          content: new StringContent(content, encoding, mediaType),
                                          configure: configure)));
        }
示例#11
0
        protected ICosmosDbFeedIterator <TDocument> NewFeedIterator <TDocument>(params IEnumerable <TDocument>[] pages)
            where TDocument : IIdentifiable
        {
            Mock <ICosmosDbFeedIterator <TDocument> > feedIterator = new Mock <ICosmosDbFeedIterator <TDocument> >();

            ISetupSequentialResult <bool> hasResultsSequence = feedIterator.SetupSequence(_ => _.HasMoreResults);
            ISetupSequentialResult <Task <IEnumerable <TDocument> > > pagesSequence = feedIterator.SetupSequence(_ =>
                                                                                                                 _.ReadNext(It.IsAny <CancellationToken>()));

            foreach (IEnumerable <TDocument> page in pages)
            {
                hasResultsSequence.Returns(true);
                pagesSequence.ReturnsAsync(page);
            }

            hasResultsSequence.Returns(false);

            return(feedIterator.Object);
        }
示例#12
0
        public void MockRequest(
            string url,
            HttpMethod method,
            params HttpResponseMessage[] httpResponses)
        {
            if (httpResponses.Length == 0)
            {
                throw new ArgumentException("At least one HTTP response must be provided.");
            }

            ISetupSequentialResult <Task <HttpResponseMessage> > setupSequence =
                handlerMock.Protected()
                .SetupSequence <Task <HttpResponseMessage> >(
                    "SendAsync",
                    ItExpr.Is <HttpRequestMessage>(httpRequest =>
                                                   httpRequest.Method == method &&
                                                   httpRequest.RequestUri.ToString().Equals(url)),
                    ItExpr.IsAny <CancellationToken>());

            foreach (var httpResponse in httpResponses)
            {
                setupSequence.ReturnsAsync(httpResponse);
            }
        }