예제 #1
0
        public void HasInverseNavigationProperty_checks_preconditions()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("PrivateNavigationProperty");
            var lightweightConfiguration =
                new ConventionNavigationPropertyConfiguration(
                    new NavigationPropertyConfiguration(navigationProperty), new ModelConfiguration());

            Assert.Throws <ArgumentNullException>(
                () => lightweightConfiguration.HasInverseNavigationProperty(null));
        }
예제 #2
0
        public void HasInverseNavigationProperty_sets_the_InverseNavigationProperty()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("ValidNavigationProperty");
            var configuration            = new NavigationPropertyConfiguration(navigationProperty);
            var modelConfiguration       = new ModelConfiguration();
            var lightweightConfiguration = new ConventionNavigationPropertyConfiguration(configuration, modelConfiguration);

            var inverseNavigationProperty1 =
                typeof(LightweighEntity).GetDeclaredProperty("ValidInverseNavigationProperty");

            lightweightConfiguration.HasInverseNavigationProperty(p => inverseNavigationProperty1);
            Assert.Same(inverseNavigationProperty1, configuration.InverseNavigationProperty);

            var inverseNavigationProperty2 = typeof(LightweighEntity).GetDeclaredProperty("PrivateNavigationProperty");

            configuration.InverseNavigationProperty = inverseNavigationProperty2;
            lightweightConfiguration.HasInverseNavigationProperty(p => inverseNavigationProperty1);
            Assert.Same(inverseNavigationProperty2, configuration.InverseNavigationProperty);
        }
예제 #3
0
        public void HasInverseNavigationProperty_throws_on_itself()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("PrivateNavigationProperty");
            var configuration            = new NavigationPropertyConfiguration(navigationProperty);
            var lightweightConfiguration = new ConventionNavigationPropertyConfiguration(configuration, new ModelConfiguration());

            Assert.Equal(
                Strings.NavigationInverseItself(navigationProperty.Name, navigationProperty.DeclaringType),
                Assert.Throws <InvalidOperationException>(
                    () => lightweightConfiguration.HasInverseNavigationProperty(p => p)).Message);
        }
예제 #4
0
        public void Methods_dont_throw_if_configuration_is_null()
        {
            var config = new ConventionNavigationPropertyConfiguration(null, null);

            Assert.Null(config.ClrPropertyInfo);
            config.HasConstraint <IndependentConstraintConfiguration>();
            config.HasDeleteAction(OperationAction.Cascade);
            config.HasInverseEndMultiplicity(RelationshipMultiplicity.ZeroOrOne);
            config.HasInverseNavigationProperty(p => new MockPropertyInfo());
            config.IsDeclaringTypePrincipal(true);
            config.HasRelationshipMultiplicity(RelationshipMultiplicity.ZeroOrOne);
        }
예제 #5
0
        public void HasInverseNavigationProperty_throws_on_invalid_nagivation_property()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("ValidNavigationProperty");
            var lightweightConfiguration =
                new ConventionNavigationPropertyConfiguration(
                    new NavigationPropertyConfiguration(navigationProperty), new ModelConfiguration());

            var inverseNavigationProperty = typeof(LightweighEntity).GetDeclaredProperty("InvalidNavigationProperty");

            Assert.Equal(
                Strings.LightweightEntityConfiguration_InvalidNavigationProperty(inverseNavigationProperty.Name),
                Assert.Throws <InvalidOperationException>(
                    () => lightweightConfiguration.HasInverseNavigationProperty(p => inverseNavigationProperty)).Message);
        }
예제 #6
0
        public void HasInverseNavigationProperty_throws_on_nonmatching_nagivation_property()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("UnrelatedNavigationProperty");
            var configuration            = new NavigationPropertyConfiguration(navigationProperty);
            var lightweightConfiguration = new ConventionNavigationPropertyConfiguration(configuration, new ModelConfiguration());

            var inverseNavigationProperty = typeof(LightweighEntity).GetDeclaredProperty("ValidNavigationProperty");

            Assert.Equal(
                Strings.LightweightEntityConfiguration_MismatchedInverseNavigationProperty(
                    typeof(ConventionNavigationPropertyConfigurationTests), navigationProperty.Name,
                    typeof(LightweighEntity), inverseNavigationProperty.Name),
                Assert.Throws <InvalidOperationException>(
                    () => lightweightConfiguration.HasInverseNavigationProperty(p => inverseNavigationProperty)).Message);
        }
예제 #7
0
        public void HasInverseNavigationProperty_throws_on_incompatible_multiplicity()
        {
            var navigationProperty       = typeof(LightweighEntity).GetDeclaredProperty("ValidNavigationProperty");
            var configuration            = new NavigationPropertyConfiguration(navigationProperty);
            var modelConfiguration       = new ModelConfiguration();
            var lightweightConfiguration = new ConventionNavigationPropertyConfiguration(configuration, modelConfiguration);

            var inverseNavigationProperty =
                typeof(LightweighEntity).GetDeclaredProperty("ValidInverseNavigationProperty");

            lightweightConfiguration.HasInverseEndMultiplicity(RelationshipMultiplicity.Many);

            Assert.Equal(
                Strings.LightweightNavigationPropertyConfiguration_IncompatibleMultiplicity(
                    "*",
                    typeof(LightweighEntity).Name + "." + "ValidInverseNavigationProperty",
                    typeof(LightweighEntity).FullName),
                Assert.Throws <InvalidOperationException>(
                    () => lightweightConfiguration.HasInverseNavigationProperty(p => inverseNavigationProperty)).Message);
        }