public void NeedToSetKeyAsSegmentShouldBeTureInAnnotaionTargetingNamespaces() { var context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithKeyAsSegmentAnnotaion, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); context.UseKeyAsSegmentUrlConvention(schemaElements.OfType <IEdmEntityContainer>().First()).Should().BeTrue(); }
public void GetSchemaElementsShouldReturnIEdmSchemaElementIfInputNamespaceExistInEdmModel() { var context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Test").ToArray(); schemaElements.Length.Should().BeGreaterThan(0); }
public void GetSchemaElementsShouldReturnEmptyIfInputNamespaceNotExistInEdmModel() { var context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Foo").ToArray(); schemaElements.Length.Should().Be(0); }
public void GetPrefixedFullNameShouldReturnFullNameWithPrefixNamespaceIfNamespacePrefixIsNotNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithKeyAsSegmentAnnotaion, "Foo"); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); IEdmEntityContainer container = schemaElements.OfType <IEdmEntityContainer>().First(); context.GetPrefixedFullName(container, container.Name, new ODataT4CodeGenerator.ODataClientCSharpTemplate(context)).Should().Be("global::Foo.Namespace1.EntityContainer"); }
public void GetPrefixedFullNameShouldReturnExpectedFullName() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithEntityHierarchy, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); IEdmEntityContainer container = schemaElements.OfType <IEdmEntityContainer>().First(); context.GetPrefixedFullName(container, container.Name, new ODataT4CodeGenerator.ODataClientCSharpTemplate(context)).Should().Be("global::Namespace1.EntityContainer"); }
public void GetEdmxStringFromMetadataPathShouldThrowExceptionIfInputIsInvalidUri() { try { Uri metadataUri = new Uri("ftp://testurl/"); ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(metadataUri, null); } catch (Exception ex) { Assert.AreEqual(ex.Message, "Only file, http, https schemes are supported for paths to metadata source locations."); } }
public UtilsTests() { this.context = new ODataT4CodeGenerator.CodeGenerationContext(@"<?xml version=""1.0"" encoding=""utf-8""?> <edmx:Edmx Version=""4.0"" xmlns:edmx=""http://docs.oasis-open.org/odata/ns/edmx""> <edmx:DataServices> <Schema Namespace=""Namespace"" xmlns=""http://docs.oasis-open.org/odata/ns/edm""> <EntityContainer Name=""EntityContainer""/> </Schema> </edmx:DataServices> </edmx:Edmx>", "NamespacePrefix"); this.template = new ODataT4CodeGenerator.ODataClientCSharpTemplate(context); }
public void NamespaceMapShouldBeEmptyIfNamespacePrefixIsNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.NamespaceMap.Count.Should().Be(0); }
public void NamespacesInModelShouldContainOneNamespaceInOneNamesapceModel() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.NamespacesInModel.Length.Should().Be(1); }
public void OnlyOneNamespaceShouldCallWriteNamespaceStartJustOnce() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(OneNamespaceAndEmptyComplexTypeEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespaces(); // Verify WriteNamespaceStart to representing WriteNamepsace template.CalledActions.FindAll(act => act == "WriteNamespaceStart(Namespace1)").Count.Should().Be(1); }
public void GetPrefixedNamespaceShouldReturnNamespaceWithoutGlobalAttached() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, "Test.Foo"); context.GetPrefixedNamespace("Test", new ODataT4CodeGenerator.ODataClientCSharpTemplate(context), false, true).Should().Be("global::Test.Foo.Test"); }
public void NeedResolveNameFromTypeShouldFalseTrueIfEdmModeHasNotInheritanceAndNamespacePrefixIsIsNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.NeedResolveNameFromType.Should().BeFalse(); }
public void ModelHasInheritanceShouldBeFalseIfEdmModelHasnotInheritance() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.ModelHasInheritance.Should().BeFalse(); }
public void NamespaceMapShouldNotBeEmptyIfNamespacePrefixIsNotNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, "Foo"); context.NamespaceMap.Count.Should().BeGreaterThan(0); }
public void NamespacesInModelShouldContainTwoNamespacesInTwoNamesapceModel() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithDifferentNamespaces, null); context.NamespacesInModel.Length.Should().Be(2); }
public void SimpleEdmxShouldCallMethodsInOrder() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(SimpleEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespace("Namespace1"); List<string> expectedActions = new List<string> { "WriteNamespaceStart(Namespace1)", "WriteClassStartForEntityContainer(EntityContainer, EntityContainer, EntityContainer)", "WriteMethodStartForEntityContainerConstructor(EntityContainer, EntityContainer)", "WriteClassEndForEntityContainerConstructor()", "WriteGeneratedEdmModel(<edmx:Edmx Version=\"\"4.0\"\" xmlns:edmx=\"\"http://docs.oasis-open.org/odata/ns/edmx\"\">\r\n <edmx:DataServices>\r\n <Schema Namespace=\"\"Namespace1\"\" xmlns=\"\"http://docs.oasis-open.org/odata/ns/edm\"\">\r\n <ComplexType Name=\"\"ComplexType\"\" />\r\n <EnumType Name=\"\"EnumType\"\" />\r\n <EntityType Name=\"\"EntityType\"\" Abstract=\"\"true\"\" />\r\n <EntityContainer Name=\"\"EntityContainer\"\" />\r\n </Schema>\r\n </edmx:DataServices>\r\n</edmx:Edmx>)", "WriteClassEndForEntityContainer()", "WriteSummaryCommentForStructuredType(ComplexType)", "WriteClassStartForStructuredType(, ComplexType, ComplexType, )", "WriteClassEndForStructuredType()", "WriteSummaryCommentForStructuredType(EntityTypeSingle)", "WriteClassStartForStructuredType(, EntityTypeSingle, EntityTypeSingle, ClassInheritDataServiceQuerySingle)", "WriteConstructorForSingleType(EntityTypeSingle, DataServiceQuerySingle)", "WriteClassEndForStructuredType()", "WriteSummaryCommentForStructuredType(EntityType)", "WriteEntityTypeAttribute()", "WriteClassStartForStructuredType(AbstractModifier, EntityType, EntityType, global::Microsoft.OData.Client.BaseEntityType)", "WriteClassEndForStructuredType()", "WriteSummaryCommentForEnumType(EnumType)", "WriteEnumDeclaration(EnumType, EnumType, )", "WriteEnumEnd()", "WriteExtensionMethodsStart()", "WriteExtensionMethodsEnd()", "WriteNamespaceEnd()" }; template.CalledActions.Should().Equal(expectedActions); }
public void OnlyEntityTypeShouldCallWriteEntityType() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(EmptyEntityTypeEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespace("Namespace1"); List<string> expectedActions = new List<string> { "WriteNamespaceStart(Namespace1)", "WriteSummaryCommentForStructuredType(EntityTypeSingle)", "WriteClassStartForStructuredType(, EntityTypeSingle, EntityTypeSingle, ClassInheritDataServiceQuerySingle)", "WriteConstructorForSingleType(EntityTypeSingle, DataServiceQuerySingle)", "WriteClassEndForStructuredType()", "WriteSummaryCommentForStructuredType(EntityType)", "WriteEntityTypeAttribute()", "WriteClassStartForStructuredType(AbstractModifier, EntityType, EntityType, global::Microsoft.OData.Client.BaseEntityType)", "WriteClassEndForStructuredType()", "WriteExtensionMethodsStart()", "WriteExtensionMethodsEnd()", "WriteNamespaceEnd()" }; template.CalledActions.Should().Equal(expectedActions); }
public void NeedResolveNameFromTypeShouldBeTrueIfEdmModelHasInheritance() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithEntityHierarchy, null); context.NeedResolveNameFromType.Should().BeTrue(); }
public void ModelHasInheritanceShouldBeTrueIfEdmModelHasInheritance() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithEntityHierarchy, null); context.ModelHasInheritance.Should().BeTrue(); }
public void GetPrefixedNamespaceShouldReturnNamespaceWithoutPrefixIfNamespacePrefixIsNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.GetPrefixedNamespace("Test", new ODataT4CodeGenerator.ODataClientCSharpTemplate(context), false, false).Should().Be("Test"); }
public void OnlyEnumTypeShouldCallWriteEnumType() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(EmptyEnumTypeEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespace("Namespace1"); List<string> expectedActions = new List<string> { "WriteNamespaceStart(Namespace1)", "WriteSummaryCommentForEnumType(EnumType)", "WriteEnumDeclaration(EnumType, EnumType, )", "WriteEnumEnd()", "WriteNamespaceEnd()" }; template.CalledActions.Should().Equal(expectedActions); }
public void NeedResolveNameFromTypeShouldBeTrueIfNamespacePrefixIsNotNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, "Foo"); context.NeedResolveNameFromType.Should().BeTrue(); }
public void TwoNamespacesShouldCallWriteNamespaceStartTwice() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(TwoNamespacesEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespaces(); // Verify WriteNamespaceStart representing WriteNamepsace template.CalledActions.FindAll(act => act.StartsWith("WriteNamespaceStart")).Count.Should().Be(2); }
public void WriteDupNamesWithCamelCase() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(DupNamesEdmx, namespacePrefix); Context.EnableNamingAlias = true; ODataClientTemplateImp template = new ODataClientTemplateImp(Context); IEdmComplexType complexType = Context.GetSchemaElements("Namespace1").OfType<IEdmComplexType>().First(); template.SetPropertyIdentifierMappingsIfNameConflicts(complexType.Name, complexType); template.WritePropertiesForStructuredType(complexType.DeclaredProperties); List<string> expectedActions = new List<string> { "WritePropertyForStructuredType(String, Name, Name2, Name2, _Name21, , False)", "WritePropertyForStructuredType(String, name, Name3, Name3, _Name3, , False)", "WritePropertyForStructuredType(String, Name1, Name1, Name1, _Name1, , False)", "WritePropertyForStructuredType(String, _Name2, _Name2, _Name2, __Name2, , False)", }; template.CalledActions.Should().Contain(expectedActions); }
public void NeedResolveTypeFromNameShouldBeFalseIfNamespacePrefixIsNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); context.NeedResolveNameFromType.Should().BeFalse(); }
public void GetPrefixedNamespaceShouldReturnFixedOriginalNamespaceWithoutPrefixIfNamespacePrefixIsNullAndNamespaceIsKeyword() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithNamespaceInKeywords, null); context.GetPrefixedNamespace("event.string.int", new ODataT4CodeGenerator.ODataClientCSharpTemplate(context), false, false).Should().Be("event.string.int"); }
public void GetPrefixedFullNameShouldReturnExpectedFullName() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithEntityHierarchy, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); IEdmEntityContainer container = schemaElements.OfType<IEdmEntityContainer>().First(); context.GetPrefixedFullName(container, container.Name, new ODataT4CodeGenerator.ODataClientCSharpTemplate(context)).Should().Be("global::Namespace1.EntityContainer"); }
public void OnlyEntityContainerShouldCallWriteEntityContainer() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(EmptyEntityContainerEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespace("Namespace1"); List<string> expectedActions = new List<string> { "WriteNamespaceStart(Namespace1)", "WriteClassStartForEntityContainer(EntityContainer, EntityContainer, EntityContainer)", "WriteMethodStartForEntityContainerConstructor(EntityContainer, EntityContainer)", "WriteClassEndForEntityContainerConstructor()", "WriteGeneratedEdmModel(<edmx:Edmx Version=\"\"4.0\"\" xmlns:edmx=\"\"http://docs.oasis-open.org/odata/ns/edmx\"\">\r\n <edmx:DataServices>\r\n <Schema Namespace=\"\"Namespace1\"\" xmlns=\"\"http://docs.oasis-open.org/odata/ns/edm\"\">\r\n <EntityContainer Name=\"\"EntityContainer\"\" />\r\n </Schema>\r\n </edmx:DataServices>\r\n</edmx:Edmx>)", "WriteClassEndForEntityContainer()", "WriteNamespaceEnd()", }; template.CalledActions.Should().Equal(expectedActions); }
public void WritePrefixConfict() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(PrefixConflictEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); IEdmComplexType complexType = Context.GetSchemaElements("Namespace1").OfType<IEdmComplexType>().First(); template.WritePropertiesForStructuredType(complexType.DeclaredProperties); List<string> expectedActions = new List<string> { "WritePropertyForStructuredType(String, Name, Name, Name, _Name1, , False)", "WritePropertyForStructuredType(String, _Name, _Name, _Name, __Name1, , False)", "WritePropertyForStructuredType(String, __Name, __Name, __Name, ___Name, , False)" }; template.CalledActions.Should().Equal(expectedActions); }
public void GetSchemaElementsShouldReturnIEdmSchemaElementIfInputNamespaceExistInEdmModel() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Test").ToArray(); schemaElements.Length.Should().BeGreaterThan(0); }
public void GetSchemaElementsShouldReturnEmptyIfInputNamespaceNotExistInEdmModel() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxSimple, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Foo").ToArray(); schemaElements.Length.Should().Be(0); }
public void GetPrefixedFullNameShouldReturnFullNameWithPrefixNamespaceIfNamespacePrefixIsNotNull() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithKeyAsSegmentAnnotaion, "Foo"); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); IEdmEntityContainer container = schemaElements.OfType<IEdmEntityContainer>().First(); context.GetPrefixedFullName(container, container.Name, new ODataT4CodeGenerator.ODataClientCSharpTemplate(context)).Should().Be("global::Foo.Namespace1.EntityContainer"); }
public void OnlyComplexTypeShouldCallWriteComplexType() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(OneNamespaceAndEmptyComplexTypeEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); template.WriteNamespace("Namespace1"); List<string> expectedActions = new List<string> { "WriteNamespaceStart(Namespace1)", "WriteSummaryCommentForStructuredType(ComplexType)", "WriteClassStartForStructuredType(, ComplexType, ComplexType, )", "WriteClassEndForStructuredType()", "WriteNamespaceEnd()" }; template.CalledActions.Should().Equal(expectedActions); }
public void NeedToSetKeyAsSegmentShouldBeTureInAnnotaionTargetingNamespaces() { ODataT4CodeGenerator.CodeGenerationContext context = new ODataT4CodeGenerator.CodeGenerationContext(EdmxWithKeyAsSegmentAnnotaion, null); IEdmSchemaElement[] schemaElements = context.GetSchemaElements("Namespace1").ToArray(); context.UseKeyAsSegmentUrlConvention(schemaElements.OfType<IEdmEntityContainer>().First()).Should().BeTrue(); }
public void WriteMembersForEnumTypeWithMembers() { string namespacePrefix = string.Empty; Context = new ODataT4CodeGenerator.CodeGenerationContext(EnumTypeWithMembersEdmx, namespacePrefix); ODataClientTemplateImp template = new ODataClientTemplateImp(Context); IEdmEnumType enumType = Context.GetSchemaElements("Namespace1").OfType<IEdmEnumType>().First(); template.WriteMembersForEnumType(enumType.Members); List<string> expectedActions = new List<string> { "WriteMemberForEnumType(Liquid = 0, Liquid, False)", "WriteMemberForEnumType(Perishable = 1, Perishable, True)" }; template.CalledActions.Should().Equal(expectedActions); }