コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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());
        }
コード例 #6
0
 public TransactionalChangesetRequestItem(ChangeSetRequestItem changeSetRequestItem, ApiDbContext dbContext)
 {
     _changeSetRequestItem = changeSetRequestItem;
     _dbContext            = dbContext;
 }