public void CustomizeCodeDomIsIntersect() { var ents = new TestMetadata(filterService); var testMany = new EntityMetadata { LogicalName = "ee_testmany", DisplayName = "Test Many".AsLabel() }.Set(x => x.IsIntersect, true); testMany.AddManyToMany(filterService, new ManyToManyRelationshipMetadata { Entity1LogicalName = "ee_testparent", Entity1IntersectAttribute = "ee_testparentid", Entity2LogicalName = "ee_test", Entity2IntersectAttribute = "ee_testid", SchemaName = "schema" }); ents.Add(testMany); organizationMetadata.Entities.Returns(ents.ToArray()); var codeCompileUnit = new CodeCompileUnit { Namespaces = { new CodeNamespace("Test Many") { Types = { new CodeTypeDeclaration { CustomAttributes = { Build <EntityLogicalNameAttribute>("ee_testmany") }, Members = { new CodeMemberProperty { Name = "Schema", CustomAttributes ={ Build <RelationshipSchemaNameAttribute>("schema") } } } } } } } }; var sut = new CodeCustomistationService(parameters); sut.CustomizeCodeDom(codeCompileUnit, serviceProvider); var members = codeCompileUnit.Namespaces.Cast <CodeNamespace>().First().Types.Cast <CodeTypeDeclaration>().First().Members.OfType <CodeMemberProperty>(); Assert.IsNull(members.FirstOrDefault(x => x.Name == "Schema")); }
public void CustomizeCodeDomOptionCreatesMissingMultiSelectOptionSet() { var ents = new TestMetadata(filterService); organizationMetadata.Entities.Returns(ents.ToArray()); ents.Test.AddAttribute(new MultiSelectPicklistAttributeMetadata { LogicalName = "ee_log", OptionSet = new OptionSetMetadata { Name = "option_name" } }); var namingService = Substitute.For <INamingService>(); serviceProvider.GetService(typeof(INamingService)).Returns(namingService); namingService.GetNameForOptionSet(Arg.Any <EntityMetadata>(), Arg.Any <OptionSetMetadataBase>(), serviceProvider) .Returns("TestEnum"); var codeCompileUnit = new CodeCompileUnit { Namespaces = { new CodeNamespace("Test") { Types = { new CodeTypeDeclaration { CustomAttributes = { Build <EntityLogicalNameAttribute>("ee_test") }, Members = { new CodeMemberProperty { CustomAttributes = { Build <AttributeLogicalNameAttribute>("ee_log") }, HasSet = true } } } } } } }; var sut = new CodeCustomistationService(parameters); sut.CustomizeCodeDom(codeCompileUnit, serviceProvider); var types = codeCompileUnit.Namespaces.Cast <CodeNamespace>().First().Types.Cast <CodeTypeDeclaration>(); Assert.IsNotNull(types.First(x => x.Name == "TestEnum")); }
public void TestInitialise() { metadataProviderService = Substitute.For <IMetadataProviderService>(); organizationMetadata = Substitute.For <IOrganizationMetadata>(); metadataProviderService.LoadMetadata().Returns(organizationMetadata); serviceProvider.GetService(typeof(IMetadataProviderService)).Returns(metadataProviderService); namingService = Substitute.For <INamingService>(); parameters = new Dictionary <string, string> { { "UseDisplayNames", true.ToString() } }; testMetadata = new TestMetadata(filterService); organizationMetadata.Entities.Returns(testMetadata.ToArray()); sut = new CodeNamingService(namingService, parameters); }
public void CustomizeCodeDomOptionLogicalAndRelation() { var ents = new TestMetadata(filterService); organizationMetadata.Entities.Returns(ents.ToArray()); var codeCompileUnit = new CodeCompileUnit { Namespaces = { new CodeNamespace("Test") { Types = { new CodeTypeDeclaration { CustomAttributes = { Build <EntityLogicalNameAttribute>("ee_test")}, Members = { new CodeMemberProperty { Name = "ManyToOne", Type = new CodeTypeReference("Test.Blah"), CustomAttributes = { Build <AttributeLogicalNameAttribute>("ee_log"), Build <RelationshipSchemaNameAttribute>("ee_rel") }, HasSet = true } } } } } } }; var sut = new CodeCustomistationService(parameters); sut.CustomizeCodeDom(codeCompileUnit, serviceProvider); var types = codeCompileUnit.Namespaces.Cast <CodeNamespace>().First().Types.Cast <CodeTypeDeclaration>(); var prop = types.First().Members.OfType <CodeMemberProperty>().First(x => x.Name == "ManyToOne"); Assert.AreEqual("Blah", prop.Type.BaseType); }