示例#1
0
        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"));
        }
示例#2
0
        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"));
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }