public void CanCreateActionWithEntityReturnType() { // Arrange // Act ODataModelBuilder builder = new ODataModelBuilder(); ActionConfiguration createGoodCustomer = new ActionConfiguration(builder, "CreateGoodCustomer"); createGoodCustomer.ReturnsFromEntitySet <Customer>("GoodCustomers"); ActionConfiguration createBadCustomers = new ActionConfiguration(builder, "CreateBadCustomers"); createBadCustomers.ReturnsCollectionFromEntitySet <Customer>("BadCustomers"); // Assert IEntityTypeConfiguration customer = createGoodCustomer.ReturnType as IEntityTypeConfiguration; Assert.NotNull(customer); Assert.Equal(typeof(Customer).FullName, customer.FullName); IEntitySetConfiguration goodCustomers = builder.EntitySets.SingleOrDefault(s => s.Name == "GoodCustomers"); Assert.NotNull(goodCustomers); Assert.Same(createGoodCustomer.EntitySet, goodCustomers); ICollectionTypeConfiguration customers = createBadCustomers.ReturnType as ICollectionTypeConfiguration; Assert.NotNull(customers); customer = customers.ElementType as IEntityTypeConfiguration; Assert.NotNull(customer); IEntitySetConfiguration badCustomers = builder.EntitySets.SingleOrDefault(s => s.Name == "BadCustomers"); Assert.NotNull(badCustomers); Assert.Same(createBadCustomers.EntitySet, badCustomers); }
public void CanCreateActionWithComplexReturnType() { // Arrange // Act ODataModelBuilder builder = new ODataModelBuilder(); ActionConfiguration createAddress = new ActionConfiguration(builder, "CreateAddress"); createAddress.Returns <Address>(); ActionConfiguration createAddresses = new ActionConfiguration(builder, "CreateAddresses"); createAddresses.ReturnsCollection <Address>(); // Assert IComplexTypeConfiguration address = createAddress.ReturnType as IComplexTypeConfiguration; Assert.NotNull(address); Assert.Equal(typeof(Address).FullName, address.FullName); Assert.Null(createAddress.EntitySet); ICollectionTypeConfiguration addresses = createAddresses.ReturnType as ICollectionTypeConfiguration; Assert.NotNull(addresses); Assert.Equal(string.Format("Collection({0})", typeof(Address).FullName), addresses.FullName); address = addresses.ElementType as IComplexTypeConfiguration; Assert.NotNull(address); Assert.Equal(typeof(Address).FullName, address.FullName); Assert.Null(createAddresses.EntitySet); }
private static IEdmTypeReference GetEdmTypeReference(Dictionary <string, IEdmStructuredType> availableTypes, IEdmTypeConfiguration configuration, bool nullable) { Contract.Assert(availableTypes != null); if (configuration == null) { return(null); } EdmTypeKind kind = configuration.Kind; if (kind == EdmTypeKind.Collection) { ICollectionTypeConfiguration collectionType = configuration as ICollectionTypeConfiguration; EdmCollectionType edmCollectionType = new EdmCollectionType(GetEdmTypeReference(availableTypes, collectionType.ElementType, false)); return(new EdmCollectionTypeReference(edmCollectionType, nullable)); } else if (availableTypes.ContainsKey(configuration.FullName)) { IEdmStructuredType structuralType = availableTypes[configuration.FullName]; if (kind == EdmTypeKind.Complex) { return(new EdmComplexTypeReference(structuralType as IEdmComplexType, nullable)); } else if (kind == EdmTypeKind.Entity) { return(new EdmEntityTypeReference(structuralType as IEdmEntityType, nullable)); } else { throw Error.InvalidOperation(SRResources.UnsupportedEdmTypeKind, kind.ToString()); } } else if (configuration.Kind == EdmTypeKind.Primitive) { PrimitiveTypeConfiguration primitiveTypeConfiguration = configuration as PrimitiveTypeConfiguration; return(new EdmPrimitiveTypeReference(primitiveTypeConfiguration.EdmPrimitiveType, nullable)); } else { throw Error.InvalidOperation(SRResources.NoMatchingIEdmTypeFound, configuration.FullName); } }