protected override void Arrange()
            {
                _assemblyData = new AssemblyData
                {
                    AssemblyName = "testAssembly",
                    Path         = "testFolder",
                    TemplateSet  = "standard",
                    IsExtension  = false,
                    IsProfile    = true,
                    SchemaName   = EdFiConventions.ProperCaseName
                };

                var domainModelDefinition = new DomainModelDefinitions {
                    SchemaDefinition = new SchemaDefinition("Ed-Fi", "edfi")
                };

                var domainModelDefinitionsProvider = Stub <IDomainModelDefinitionsProvider>();

                A.CallTo(() => domainModelDefinitionsProvider.GetDomainModelDefinitions())
                .Returns(domainModelDefinition);

                _domainModelDefinitionsProviders = new[] { domainModelDefinitionsProvider };

                _domainModelDefinitionsProviderProvider = Stub <IDomainModelDefinitionsProviderProvider>();

                A.CallTo(() => _domainModelDefinitionsProviderProvider.DomainModelDefinitionProviders())
                .Returns(_domainModelDefinitionsProviders);

                _templateContextProvider = new TemplateContextProvider(_domainModelDefinitionsProviderProvider);
            }
예제 #2
0
        protected override void Act()
        {
            var domainModelDefinitions = new DomainModelDefinitions(
                new SchemaDefinition("schema", "schema"),
                new[]
            {
                new AggregateDefinition(
                    new FullName("schema", "Aggregate"),
                    new[]
                {
                    new FullName("schema", "AChild")
                })
            },
                new[]
            {
                new EntityDefinition("schema", "Aggregate", new EntityPropertyDefinition[0], new EntityIdentifierDefinition[0]),
                new EntityDefinition("schema", "AChild", new EntityPropertyDefinition[0], new EntityIdentifierDefinition[0])
            },
                new AssociationDefinition[0],
                new AggregateExtensionDefinition[0]);

            var builder = new DomainModelBuilder(
                new[]
            {
                domainModelDefinitions
            });

            _domainModel = builder.Build();
        }
            protected override void Arrange()
            {
                var jsonFileProvider = A.Fake <IJsonFileProvider>();
                var assemblyMetadata = new AssemblyMetadata {
                    AssemblyModelType = TemplateSetConventions.Extension
                };

                A.CallTo(() => jsonFileProvider.Load <AssemblyMetadata>(A <string> .Ignored)).Returns(assemblyMetadata);

                var domainModelDefinitionsProvider = A.Fake <IDomainModelDefinitionsProvider>();
                var domainModelDefinition          = new DomainModelDefinitions {
                    SchemaDefinition = new SchemaDefinition("TPDM", "tpdm")
                };

                A.CallTo(() => domainModelDefinitionsProvider.GetDomainModelDefinitions()).Returns(domainModelDefinition);

                var domainModelDefinitionsProviderProvider = A.Fake <IDomainModelDefinitionsProviderProvider>();

                var domainModelDefinitionsByProjectName = new Dictionary <string, IDomainModelDefinitionsProvider>
                {
                    { "EdFi.Ods.Extensions.TPDM", domainModelDefinitionsProvider }
                };

                A.CallTo(
                    ()
                    => domainModelDefinitionsProviderProvider.DomainModelDefinitionsProvidersByProjectName())
                .Returns(domainModelDefinitionsByProjectName);

                _assemblyDataHelper = new AssemblyDataHelper(jsonFileProvider, domainModelDefinitionsProviderProvider);
            }
예제 #4
0
        private static DomainModelBuilder CreateValidDomainModel()
        {
            var entityDefinitions = new[]
            {
                new EntityDefinition(
                    "DefinedSchema",
                    "Entity1",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true)
            };

            var associationDefinitions = new AssociationDefinition[]
            { };

            var aggredateDefinitions = new[]
            {
                new AggregateDefinition(
                    new FullName("DefinedSchema", "Entity1"),
                    new FullName[]
                    { })
            };

            //  schema names do not match the names on the AggregateDefinition
            var schemaDefinition = new SchemaDefinition("logicalName", "DefinedSchema");

            var modelDefinitions = new DomainModelDefinitions(
                schemaDefinition,
                aggredateDefinitions,
                entityDefinitions,
                associationDefinitions);

            var domainModelDefinitionsProvider = MockRepository.GenerateStub <IDomainModelDefinitionsProvider>();

            domainModelDefinitionsProvider.Stub(x => x.GetDomainModelDefinitions())
            .Return(modelDefinitions);

            DomainModelBuilder builder = new DomainModelBuilder();

            builder.AddDomainModelDefinitionsList(
                new List <DomainModelDefinitions>
            {
                domainModelDefinitionsProvider.GetDomainModelDefinitions()
            });

            return(builder);
        }
예제 #5
0
        internal void AddDomainModelDefinitions(DomainModelDefinitions domainModelDefinitions)
        {
            (domainModelDefinitions.AggregateDefinitions ?? new AggregateDefinition[0])
            .ForEach(AddAggregate);

            (domainModelDefinitions.EntityDefinitions ?? new EntityDefinition[0])
            .ForEach(AddEntity);

            (domainModelDefinitions.AssociationDefinitions ?? new AssociationDefinition[0])
            .ForEach(AddAssociation);

            (domainModelDefinitions.AggregateExtensionDefinitions ?? new AggregateExtensionDefinition[0])
            .ForEach(AddAggregateExtension);

            AddSchema(domainModelDefinitions.SchemaDefinition ?? new SchemaDefinition());
        }
 protected override void Act()
 {
     _domainModelDefinitions = TestSubject.GetDomainModelDefinitions();
 }
예제 #7
0
            private static DomainModelBuilder CreateFaultyDomainModel()
            {
                var entityDefinitions = new[]
                {
                    new EntityDefinition(
                        "schema1",
                        "CoreEntity",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true),
                    new EntityDefinition(
                        "schema1",
                        "Collection1Item",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true),
                        new EntityPropertyDefinition("KeyProperty2", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true)
                };

                var associationDefinitions = new[]
                {
                    new AssociationDefinition(

                        //  The line that follows contains bad data
                        new FullName("UndefinedSchemaName", "FK_CoreEntityCollection"),
                        Cardinality.OneToZeroOrMore,
                        new FullName("schema1", "CoreEntity"),
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new FullName("schema1", "Collection1Item"),
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        isIdentifying: true,
                        isRequired: true)
                };

                var aggredateDefinitions = new[]
                {
                    new AggregateDefinition(
                        new FullName("schema1", "CoreEntity"),
                        new[]
                    {
                        new FullName("schema1", "Collection1Item")
                    })
                };

                //  schema names do not match the names on the AggregateDefinition
                var schemaDefinition = new SchemaDefinition("logicalName", "schema1");

                var modelDefinitions = new DomainModelDefinitions(
                    schemaDefinition,
                    aggredateDefinitions,
                    entityDefinitions,
                    associationDefinitions);

                var domainModelDefinitionsProvider = MockRepository.GenerateStub <IDomainModelDefinitionsProvider>();

                domainModelDefinitionsProvider.Stub(x => x.GetDomainModelDefinitions())
                .Return(modelDefinitions);

                DomainModelBuilder builder = new DomainModelBuilder();

                builder.AddDomainModelDefinitionsList(
                    new List <DomainModelDefinitions>
                {
                    domainModelDefinitionsProvider.GetDomainModelDefinitions()
                });

                return(builder);
            }
예제 #8
0
 protected override void Act()
 {
     _domainModelDefinitions = domainmodelprovider.GetDomainModelDefinitions();
 }
예제 #9
0
        internal static IDomainModelDefinitionsProvider BuildCoreModelEntityDefinitionsProvider()
        {
            var edfiSchema      = EdFiConventions.PhysicalSchemaName;
            var edfiLogicalName = EdFiConventions.LogicalName;

            var entityDefinitions = new[]
            {
                new EntityDefinition(
                    edfiSchema,
                    "CoreEntity",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true),
                new EntityDefinition(
                    edfiSchema,
                    "Collection1Item",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true),
                    new EntityPropertyDefinition("KeyProperty2", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true),
                new EntityDefinition(
                    edfiSchema,
                    "EmbeddedObject1",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1"
                    },
                        isPrimary: true)
                },
                    true)
            };

            var associationDefinitions = new[]
            {
                new AssociationDefinition(
                    new FullName(edfiSchema, "FK_CoreEntityEmbeddedObject"),
                    Cardinality.OneToOne,
                    new FullName(edfiSchema, "CoreEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new FullName(edfiSchema, "EmbeddedObject1"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    isIdentifying: true,
                    isRequired: true),
                new AssociationDefinition(
                    new FullName(edfiSchema, "FK_CoreEntityCollection"),
                    Cardinality.OneToZeroOrMore,
                    new FullName(edfiSchema, "CoreEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new FullName(edfiSchema, "Collection1Item"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    isIdentifying: true,
                    isRequired: true)
            };

            var aggredateDefinitions = new[]
            {
                new AggregateDefinition(
                    new FullName(edfiSchema, "CoreEntity"),
                    new[]
                {
                    new FullName(edfiSchema, "Collection1Item"), new FullName(edfiSchema, "EmbeddedObject1")
                })
            };

            var schemaDefinition = new SchemaDefinition(edfiLogicalName, edfiSchema);

            var modelDefinitions = new DomainModelDefinitions(
                schemaDefinition,
                aggredateDefinitions,
                entityDefinitions,
                associationDefinitions);

            var domainModelDefinitionsProvider = MockRepository.GenerateStub <IDomainModelDefinitionsProvider>();

            domainModelDefinitionsProvider.Stub(x => x.GetDomainModelDefinitions())
            .Return(modelDefinitions);

            return(domainModelDefinitionsProvider);
        }
예제 #10
0
        internal static IDomainModelDefinitionsProvider BuildTestExtensionDefinitionsProvider()
        {
            var aggredateDefinitions2 = new[]
            {
                new AggregateDefinition(
                    new FullName("ExtensionPhysical", "ExtensionAggregate"),
                    new[]
                {
                    new FullName("ExtensionPhysical", "ExtensionEntity")
                })
            };

            var entityDefinitions2 = new[]
            {
                new EntityDefinition(
                    "ExtensionPhysical",
                    "ExtensionAggregate",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true),
                new EntityDefinition(
                    "ExtensionPhysical",
                    "ExtensionEntity",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true)
            };

            var associationDefinitions2 = new[]
            {
                new AssociationDefinition(
                    new FullName("ExtensionPhysical", "FK_ExtensionEntity"),
                    Cardinality.OneToOneExtension,
                    new FullName(EdFiConventions.PhysicalSchemaName, "CoreEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new FullName("ExtensionPhysical", "ExtensionEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    isIdentifying: true,
                    isRequired: true)
            };

            var schemaDefinition2 = new SchemaDefinition("Extension-Logical", "ExtensionPhysical");

            var modelDefinitions2 = new DomainModelDefinitions(
                schemaDefinition2,
                aggredateDefinitions2,
                entityDefinitions2,
                associationDefinitions2);

            var domainModelDefinitionsProvider = MockRepository.GenerateStub <IDomainModelDefinitionsProvider>();

            domainModelDefinitionsProvider.Stub(x => x.GetDomainModelDefinitions())
            .Return(modelDefinitions2);

            return(domainModelDefinitionsProvider);
        }
예제 #11
0
            private static DomainModelBuilder CreateFaultyDomainModel()
            {
                var entityDefinitions = new[]
                {
                    new EntityDefinition(
                        "DefinedSchema",
                        "RootEntity",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true),

                    // The line that follows is causing the failure.  The 1st value should be "schema1", not "schema2"
                    new EntityDefinition(
                        "UndefinedSchema",
                        "ChildEntity",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true)
                };

                var associationDefinitions = new AssociationDefinition[0];

                var aggregateDefinitions = new[]
                {
                    new AggregateDefinition(
                        new FullName("DefinedSchema", "RootEntity"),
                        new[]
                    {
                        new FullName("UndefinedSchema", "ChildEntity")
                    })
                };

                var schemaDefinition = new SchemaDefinition("logicalName", "DefinedSchema");

                var modelDefinitions = new DomainModelDefinitions(
                    schemaDefinition,
                    aggregateDefinitions,
                    entityDefinitions,
                    associationDefinitions);

                var domainModelDefinitionsProvider = A.Fake <IDomainModelDefinitionsProvider>();

                A.CallTo(() => domainModelDefinitionsProvider.GetDomainModelDefinitions())
                .Returns(modelDefinitions);

                DomainModelBuilder builder = new DomainModelBuilder();

                builder.AddDomainModelDefinitionsList(
                    new List <DomainModelDefinitions>
                {
                    domainModelDefinitionsProvider.GetDomainModelDefinitions()
                });

                return(builder);
            }
            private static DomainModelBuilder CreateValidDomainModel()
            {
                var entityDefinitions = new[]
                {
                    new EntityDefinition(
                        "schema1",
                        "CoreEntity",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true),
                    new EntityDefinition(
                        "schema1",
                        "Collection1Item",
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true),
                        new EntityPropertyDefinition("KeyProperty2", new PropertyType(DbType.Int32), null, true)
                    },
                        new[]
                    {
                        new EntityIdentifierDefinition(
                            "PK",
                            new[]
                        {
                            "KeyProperty1", "KeyProperty2"
                        },
                            isPrimary: true)
                    },
                        true)
                };

                var associationDefinitions = new[]
                {
                    new AssociationDefinition(
                        new FullName("schema1", "FK_CoreEntityCollection"),
                        Cardinality.OneToZeroOrMore,
                        new FullName("schema1", "CoreEntity"),
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        new FullName("schema1", "Collection1Item"),
                        new[]
                    {
                        new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                    },
                        isIdentifying: true,
                        isRequired: true)
                };

                var aggredateDefinitions = new[]
                {
                    new AggregateDefinition(
                        new FullName("schema1", "CoreEntity"),
                        new[]
                    {
                        new FullName("schema1", "Collection1Item")
                    })
                };

                // schema names do not match the names on the AggregateDefinition
                var schemaDefinition = new SchemaDefinition("logicalName", "schema1");

                var modelDefinitions = new DomainModelDefinitions(
                    schemaDefinition,
                    aggredateDefinitions,
                    entityDefinitions,
                    associationDefinitions);

                var domainModelDefinitionsProvider = A.Fake <IDomainModelDefinitionsProvider>();

                A.CallTo(() => domainModelDefinitionsProvider.GetDomainModelDefinitions())
                .Returns(modelDefinitions);

                DomainModelBuilder builder = new DomainModelBuilder();

                builder.AddDomainModelDefinitionsList(
                    new List <DomainModelDefinitions>
                {
                    domainModelDefinitionsProvider.GetDomainModelDefinitions()
                });

                return(builder);
            }
예제 #13
0
        internal static IDomainModelDefinitionsProvider BuildCoreModelEntityDefinitionsProvider()
        {
            string schema = "edfi";

            var entityDefinitions = new[]
            {
                new EntityDefinition(
                    schema,
                    "CoreEntity",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true),
                new EntityDefinition(
                    schema,
                    "Collection1Item",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true),
                    new EntityPropertyDefinition("KeyProperty2", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1", "KeyProperty2"
                    },
                        isPrimary: true)
                },
                    true),
                new EntityDefinition(
                    schema,
                    "EmbeddedObject1",
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new[]
                {
                    new EntityIdentifierDefinition(
                        "PK",
                        new[]
                    {
                        "KeyProperty1"
                    },
                        isPrimary: true)
                },
                    true)
            };

            var associationDefinitions = new[]
            {
                new AssociationDefinition(
                    new FullName(schema, "FK_CoreEntityEmbeddedObject"),
                    Cardinality.OneToOne,
                    new FullName(schema, "CoreEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new FullName(schema, "EmbeddedObject1"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    isIdentifying: true,
                    isRequired: true),
                new AssociationDefinition(
                    new FullName(schema, "FK_CoreEntityCollection"),
                    Cardinality.OneToZeroOrMore,
                    new FullName(schema, "CoreEntity"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    new FullName(schema, "Collection1Item"),
                    new[]
                {
                    new EntityPropertyDefinition("KeyProperty1", new PropertyType(DbType.Int32), null, true)
                },
                    isIdentifying: true,
                    isRequired: true)
            };

            var aggredateDefinitions = new[]
            {
                new AggregateDefinition(
                    new FullName(schema, "CoreEntity"),
                    new[]
                {
                    new FullName(schema, "Collection1Item"), new FullName(schema, "EmbeddedObject1")
                })
            };

            var schemaDefinition = new SchemaDefinition(schema, schema);

            var modelDefinitions = new DomainModelDefinitions(
                schemaDefinition,
                aggredateDefinitions,
                entityDefinitions,
                associationDefinitions);

            var domainModelDefinitionsProvider = A.Fake <IDomainModelDefinitionsProvider>();

            A.CallTo(() => domainModelDefinitionsProvider.GetDomainModelDefinitions())
            .Returns(modelDefinitions);

            return(domainModelDefinitionsProvider);
        }