예제 #1
0
        public void AskJustOncesForTypeTest()
        {
            var typesToTest = new Func <DSPMetadata, ResourceType>[] {
                (metadata) =>
                {
                    var t = metadata.AddEntityType("EntityType", null, null, false);
                    metadata.AddKeyProperty(t, "ID", typeof(int));
                    return(t);
                },
                (metadata) => metadata.AddComplexType("ComplexType", null, null, false)
            };

            AstoriaTestNS.TestUtil.RunCombinations(
                typesToTest,
                (typeCreate) =>
            {
                var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
                var type             = typeCreate(metadataProvider);
                metadataProvider.SetReadOnly();
                var wrapper      = new DataServiceMetadataProviderWrapper(metadataProvider);
                var resourceType = wrapper.TryResolveResourceType(type.FullName);
                Assert.AreSame(type, resourceType, "The returned type is not the one expected.");
                wrapper.TryResolveResourceType(type.FullName);
                wrapper.TryResolveResourceType(type.FullName);
                Assert.AreEqual(1, metadataProvider.TryResolveResourceTypeCallCount, "The underlying metadata provider should be called just once.");
            });
        }
예제 #2
0
        private static void CreateCallCounterService(out CallCountMetadataProvider metadataProvider, out DSPServiceDefinition service)
        {
            metadataProvider = new CallCountMetadataProvider("DefaultContainer", "Default");

            var entityType = metadataProvider.AddEntityType("EntityType", null, null, false /*isAbstract*/);

            metadataProvider.AddKeyProperty(entityType, "ID", typeof(int));
            metadataProvider.AddPrimitiveProperty(entityType, "LastUpdatedAuthor", typeof(string), true /*eTag*/);

            var derivedType = metadataProvider.AddEntityType("DerivedType", null, entityType, false /*isAbstract*/);

            metadataProvider.AddPrimitiveProperty(derivedType, "LastModifiedAuthor", typeof(string), true /*eTag*/);

            metadataProvider.AddResourceSet("Customers", entityType);

            var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);

            DSPContext dataContext = new DSPContext();

            service = new DSPServiceDefinition()
            {
                Metadata             = metadataProvider,
                CreateDataSource     = (m) => dataContext,
                ForceVerboseErrors   = true,
                MediaResourceStorage = new DSPMediaResourceStorage(),
                SupportNamedStream   = true,
                Writable             = true,
                DataServiceBehavior  = new OpenWebDataServiceDefinition.OpenWebDataServiceBehavior()
                {
                    IncludeRelationshipLinksInResponse = true
                },
            };
        }
예제 #3
0
        public void AskJustOncesForServiceOperationTest()
        {
            var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
            var serviceOperation = metadataProvider.AddServiceOperation("ServiceOperation", ServiceOperationResultKind.DirectValue, ResourceType.GetPrimitiveResourceType(typeof(string)), null, "GET", new ServiceOperationParameter[0]);

            metadataProvider.SetReadOnly();
            var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);

            wrapper.TryResolveServiceOperation(serviceOperation.Name);
            wrapper.TryResolveServiceOperation(serviceOperation.Name);
            wrapper.TryResolveServiceOperation(serviceOperation.Name);
            Assert.AreEqual(1, metadataProvider.TryResolveServiceOperationCallCount, "The underlying metadata provider should be called just once.");
        }
예제 #4
0
        public void AskJustOncesForResourceSetTest()
        {
            var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
            var type             = metadataProvider.AddEntityType("Entity", null, null, false);

            metadataProvider.AddKeyProperty(type, "ID", typeof(int));
            var resourceSet = metadataProvider.AddResourceSet("Entities", type);

            metadataProvider.SetReadOnly();
            var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);

            wrapper.TryResolveResourceSet(resourceSet.Name);
            wrapper.TryResolveResourceSet(resourceSet.Name);
            wrapper.TryResolveResourceSet(resourceSet.Name);
            Assert.AreEqual(1, metadataProvider.TryResolveResourceSetCallCount, "The underlying metadata provider should be called just once.");
        }
        public void AskJustOncesForTypeTest()
        {
            var typesToTest = new Func<DSPMetadata, ResourceType>[] {
                (metadata) =>
                {
                    var t = metadata.AddEntityType("EntityType", null, null, false);
                    metadata.AddKeyProperty(t, "ID", typeof(int));
                    return t;
                },
                (metadata) => metadata.AddComplexType("ComplexType", null, null, false)
            };

            AstoriaTestNS.TestUtil.RunCombinations(
                typesToTest,
                (typeCreate) =>
                {
                    var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
                    var type = typeCreate(metadataProvider);
                    metadataProvider.SetReadOnly();
                    var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);
                    var resourceType = wrapper.TryResolveResourceType(type.FullName);
                    Assert.AreSame(type, resourceType, "The returned type is not the one expected.");
                    wrapper.TryResolveResourceType(type.FullName);
                    wrapper.TryResolveResourceType(type.FullName);
                    Assert.AreEqual(1, metadataProvider.TryResolveResourceTypeCallCount, "The underlying metadata provider should be called just once.");
                });
        }
        private static void CreateCallCounterService(out CallCountMetadataProvider metadataProvider, out DSPServiceDefinition service)
        {
            metadataProvider = new CallCountMetadataProvider("DefaultContainer", "Default");

            var entityType = metadataProvider.AddEntityType("EntityType", null, null, false /*isAbstract*/);
            metadataProvider.AddKeyProperty(entityType, "ID", typeof(int));
            metadataProvider.AddPrimitiveProperty(entityType, "LastUpdatedAuthor", typeof(string), true /*eTag*/);

            var derivedType = metadataProvider.AddEntityType("DerivedType", null, entityType, false /*isAbstract*/);
            metadataProvider.AddPrimitiveProperty(derivedType, "LastModifiedAuthor", typeof(string), true /*eTag*/);

            metadataProvider.AddResourceSet("Customers", entityType);

            var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);

            DSPContext dataContext = new DSPContext();

            service = new DSPServiceDefinition()
            {
                Metadata = metadataProvider,
                CreateDataSource = (m) => dataContext,
                ForceVerboseErrors = true,
                MediaResourceStorage = new DSPMediaResourceStorage(),
                SupportNamedStream = true,
                Writable = true,
                DataServiceBehavior = new OpenWebDataServiceDefinition.OpenWebDataServiceBehavior() { IncludeRelationshipLinksInResponse = true },
            };
        }
 public void AskJustOncesForServiceOperationTest()
 {
     var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
     var serviceOperation = metadataProvider.AddServiceOperation("ServiceOperation", ServiceOperationResultKind.DirectValue, ResourceType.GetPrimitiveResourceType(typeof(string)), null, "GET", new ServiceOperationParameter[0]);
     metadataProvider.SetReadOnly();
     var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);
     wrapper.TryResolveServiceOperation(serviceOperation.Name);
     wrapper.TryResolveServiceOperation(serviceOperation.Name);
     wrapper.TryResolveServiceOperation(serviceOperation.Name);
     Assert.AreEqual(1, metadataProvider.TryResolveServiceOperationCallCount, "The underlying metadata provider should be called just once.");
 }
 public void AskJustOncesForResourceSetTest()
 {
     var metadataProvider = new CallCountMetadataProvider("Test", "TestNS");
     var type = metadataProvider.AddEntityType("Entity", null, null, false);
     metadataProvider.AddKeyProperty(type, "ID", typeof(int));
     var resourceSet = metadataProvider.AddResourceSet("Entities", type);
     metadataProvider.SetReadOnly();
     var wrapper = new DataServiceMetadataProviderWrapper(metadataProvider);
     wrapper.TryResolveResourceSet(resourceSet.Name);
     wrapper.TryResolveResourceSet(resourceSet.Name);
     wrapper.TryResolveResourceSet(resourceSet.Name);
     Assert.AreEqual(1, metadataProvider.TryResolveResourceSetCallCount, "The underlying metadata provider should be called just once.");
 }