/// <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))); }
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))); }
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); }
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 }));; }
/// <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))); }
/// <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))); }
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); }
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); } }