public void Dispose_DisposesAllHttpRequestMessages() { ChangeSetRequestItem requestItem = new ChangeSetRequestItem(new MockHttpRequestMessage[] { new MockHttpRequestMessage(), new MockHttpRequestMessage(), new MockHttpRequestMessage() }); requestItem.Dispose(); Assert.Equal(3, requestItem.Requests.Count()); foreach (var request in requestItem.Requests) { Assert.True(((MockHttpRequestMessage)request).IsDisposed); } }
public override async Task <IList <ODataBatchRequestItem> > ParseBatchRequestsAsync(HttpRequestMessage parentRequest, CancellationToken cancellationToken) { IList <ODataBatchRequestItem> requestItems = await base.ParseBatchRequestsAsync(parentRequest, cancellationToken); // For each ChangeSet in a batch request, set up a ChangeSetContext to support committing the entire ChangeSet at once. for (int i = 0; i < requestItems.Count; ++i) { ChangeSetRequestItem changeSetRequest = requestItems[i] as ChangeSetRequestItem; if (changeSetRequest != null) { // Replace the ChangeSetRequestItem with a BatchChangeSetRequestItem requestItems[i] = new BatchChangeSetRequestItem(changeSetRequest, parentRequest); } } return(requestItems); }
public void GetResourcesForDisposal_ReturnsResourcesRegisteredForDispose() { var disposeObject1 = new StringContent("foo"); var request1 = new HttpRequestMessage(HttpMethod.Get, "http://example.com"); request1.RegisterForDispose(disposeObject1); var disposeObject2 = new StringContent("bar"); var request2 = new HttpRequestMessage(HttpMethod.Post, "http://example.com"); request2.RegisterForDispose(disposeObject2); ChangeSetRequestItem requestItem = new ChangeSetRequestItem(new HttpRequestMessage[] { request1, request2 }); var resourcesForDisposal = requestItem.GetResourcesForDisposal(); Assert.Equal(2, resourcesForDisposal.Count()); Assert.Contains(disposeObject1, resourcesForDisposal); Assert.Contains(disposeObject2, resourcesForDisposal); }
public async Task SendRequestAsync_ReturnsChangeSetResponse() { // Arrange HttpContext[] contexts = new HttpContext[] { HttpContextHelper.Create("Get", "http://example.com"), HttpContextHelper.Create("Post", "http://example.com") }; ChangeSetRequestItem requestItem = new ChangeSetRequestItem(contexts); RequestDelegate handler = context => Task.FromResult(context.Response); // Act ODataBatchResponseItem response = await requestItem.SendRequestAsync(handler); // Assert ChangeSetResponseItem changesetResponse = Assert.IsType <ChangeSetResponseItem>(response); Assert.Equal(2, changesetResponse.Contexts.Count()); }
public void SendRequestAsync_ReturnsChangeSetResponse() { HttpRequestMessage[] requests = new HttpRequestMessage[] { new HttpRequestMessage(HttpMethod.Get, "http://example.com"), new HttpRequestMessage(HttpMethod.Post, "http://example.com") }; ChangeSetRequestItem requestItem = new ChangeSetRequestItem(requests); Mock <HttpMessageInvoker> invoker = new Mock <HttpMessageInvoker>(new HttpServer()); invoker.Setup(i => i.SendAsync(It.IsAny <HttpRequestMessage>(), CancellationToken.None)) .Returns(() => { return(Task.FromResult(new HttpResponseMessage())); }); var response = requestItem.SendRequestAsync(invoker.Object, CancellationToken.None).Result; var changesetResponse = Assert.IsType <ChangeSetResponseItem>(response); Assert.Equal(2, changesetResponse.Responses.Count()); }
public TransactionalChangesetRequestItem(ChangeSetRequestItem changeSetRequestItem, ApiDbContext dbContext) { _changeSetRequestItem = changeSetRequestItem; _dbContext = dbContext; }