public void TestConfigureAction <T>(Func <DataServiceClientResponsePipelineConfiguration, ODataReaderState> setup, Action <T> verify) where T : ODataItem, new() { var item = new T(); var responsePipeline = new DataServiceClientResponsePipelineConfiguration(new DataServiceContext(new Uri("http://www.foo.com"))); var readerState = setup(responsePipeline); var reader = new TestODataReader() { new TestODataReaderItem(readerState, item) }; var odataReaderWrapper = ODataReaderWrapper.CreateForTest(reader, responsePipeline); odataReaderWrapper.Read(); verify(item); }
public void NoEventShouldBeFiredWhenReadIsFalse() { bool eventFiredIncorrectly = false; TestODataReader reader = new TestODataReader() { new TestODataReaderItem(ODataReaderState.ResourceStart, new ODataResource()) }; reader.ReadFunc = () => false; var responsePipeline = new DataServiceClientResponsePipelineConfiguration(new DataServiceContext(new Uri("http://www.foo.com"))); responsePipeline.OnEntryStarted((ReadingEntryArgs args) => eventFiredIncorrectly = true); var odataReaderWrapper = ODataReaderWrapper.CreateForTest(reader, responsePipeline); odataReaderWrapper.Read(); Assert.IsFalse(eventFiredIncorrectly); }
internal List <KeyValuePair <string, object> > TestValidReadWithAllHooked(Func <ODataReader> createOdataReader) { List <KeyValuePair <string, object> > results = new List <KeyValuePair <string, object> >(); var odataReader = createOdataReader(); DataServiceContext context = new DataServiceContext(new Uri("http://www.foo.com")); // context.EnableAtom = true; var responsePipeline = new DataServiceClientResponsePipelineConfiguration(context); responsePipeline.OnEntryEnded(args => results.Add(new KeyValuePair <string, object>("OnEntryEnded", args))); responsePipeline.OnEntryStarted(args => results.Add(new KeyValuePair <string, object>("OnEntryStarted", args))); responsePipeline.OnFeedStarted(args => results.Add(new KeyValuePair <string, object>("OnFeedStarted", args))); responsePipeline.OnFeedEnded(args => results.Add(new KeyValuePair <string, object>("OnFeedEnded", args))); responsePipeline.OnNestedResourceInfoEnded(args => results.Add(new KeyValuePair <string, object>("OnNestedResourceInfoEnded", args))); responsePipeline.OnNestedResourceInfoStarted(args => results.Add(new KeyValuePair <string, object>("OnNestedResourceInfoStarted", args))); var odataReaderTracker = ODataReaderWrapper.CreateForTest(odataReader, responsePipeline); while (odataReaderTracker.Read()) { } return(results); }
public void ValidateShortIntegrationFeedReading() { var initialFeed = new ODataResourceSet() { Id = new Uri("http://services.odata.org/OData/OData.svc/Products") }; var productItem = new ODataResource() { Id = new Uri("http://services.odata.org/OData/OData.svc/Products(0)") }; productItem.Properties = new ODataProperty[] { new ODataProperty() { Name = "Id", Value = 0 } }; var categoryNavigationLink = new ODataNestedResourceInfo() { Name = "Category" }; var categoryItem = new ODataResource() { Id = new Uri("http://services.odata.org/OData/OData.svc/Categories(0)") }; categoryItem.Properties = new ODataProperty[] { new ODataProperty() { Name = "Id", Value = 0 } }; var productsNavigationLink = new ODataNestedResourceInfo() { Name = "Products" }; var supplierNavigationLink = new ODataNestedResourceInfo() { Name = "Supplier" }; var testODataReader = new TestODataReader() { new TestODataReaderItem(ODataReaderState.ResourceSetStart, initialFeed), new TestODataReaderItem(ODataReaderState.ResourceStart, productItem), new TestODataReaderItem(ODataReaderState.NestedResourceInfoStart, categoryNavigationLink), new TestODataReaderItem(ODataReaderState.ResourceStart, categoryItem), new TestODataReaderItem(ODataReaderState.NestedResourceInfoStart, productsNavigationLink), new TestODataReaderItem(ODataReaderState.NestedResourceInfoEnd, productsNavigationLink), new TestODataReaderItem(ODataReaderState.ResourceEnd, categoryItem), new TestODataReaderItem(ODataReaderState.NestedResourceInfoEnd, categoryNavigationLink), new TestODataReaderItem(ODataReaderState.NestedResourceInfoStart, supplierNavigationLink), new TestODataReaderItem(ODataReaderState.NestedResourceInfoEnd, supplierNavigationLink), new TestODataReaderItem(ODataReaderState.ResourceEnd, productItem), new TestODataReaderItem(ODataReaderState.ResourceSetEnd, initialFeed), }; ClientEdmModel clientEdmModel = new ClientEdmModel(ODataProtocolVersion.V4); var responsePipeline = new DataServiceClientResponsePipelineConfiguration(new DataServiceContext()); var odataReaderWrapper = ODataReaderWrapper.CreateForTest(testODataReader, responsePipeline); FeedAndEntryMaterializerAdapter reader = new FeedAndEntryMaterializerAdapter(ODataFormat.Json, odataReaderWrapper, clientEdmModel, MergeOption.OverwriteChanges); int readCounter = 0; while (reader.Read()) { readCounter++; } readCounter.Should().Be(1); }