Example #1
0
        public void GetComponentValidationCollectors_AbstractAndInterfaceAndOpenGenericCollectorsAndProgrammaticallyCollectorsAreFiltered()
        {
            var programmaticallyCollectorType = TypeUtility.CreateDynamicTypeWithCustomAttribute(
                typeof(FakeValidationCollector <>).MakeGenericType(typeof(Address)),
                "Remotion.Validation.UnitTests.DynamicInvalidCollector1",
                typeof(ApplyProgrammaticallyAttribute),
                new Type[0],
                new object[0]);

            _typeDescoveryServiceStub.Stub(stub => stub.GetTypes(typeof(IComponentValidationCollector), true))
            .Return(
                new[]
            {
                typeof(IPerson),
                typeof(ComponentValidationCollector <>),
                typeof(FakeValidationCollector <>),
                programmaticallyCollectorType
            });

            var typeCollectorProvider = DiscoveryServiceBasedValidationCollectorReflector.Create(
                _typeDescoveryServiceStub,
                new ClassTypeAwareValidatedTypeResolverDecorator(
                    new GenericTypeAwareValidatedTypeResolverDecorator(new NullValidatedTypeResolver())));

            var result =
                typeCollectorProvider.GetCollectorsForType(typeof(Person))
                .Concat(typeCollectorProvider.GetCollectorsForType(typeof(Person)))
                .ToArray();

            Assert.That(result.Any(), Is.False);
        }
Example #2
0
        public void GetComponentValidationCollectors_GenericTypeNotAssignableFromClassType()
        {
            var collectorType = TypeUtility.CreateDynamicTypeWithCustomAttribute(
                typeof(FakeValidationCollector <>).MakeGenericType(typeof(Address)),
                "Remotion.Validation.UnitTests.DynamicInvalidCollector2",
                typeof(ApplyWithClassAttribute),
                new[] { typeof(Type) },
                new[] { typeof(IPerson) });

            _typeDescoveryServiceStub.Stub(stub => stub.GetTypes(typeof(IComponentValidationCollector), true)).Return(new[] { collectorType });

            Assert.That(
                () =>
                DiscoveryServiceBasedValidationCollectorReflector.Create(
                    _typeDescoveryServiceStub,
                    new ClassTypeAwareValidatedTypeResolverDecorator(
                        new GenericTypeAwareValidatedTypeResolverDecorator(new NullValidatedTypeResolver()))).GetCollectorsForType(
                    typeof(IComponentValidationCollector)),
                Throws.TypeOf <InvalidOperationException>().And.Message.EqualTo(
                    "Invalid 'ApplyWithClassAttribute'-definition for collector 'Remotion.Validation.UnitTests.DynamicInvalidCollector2': "
                    + "type 'Remotion.Validation.UnitTests.TestDomain.Address' "
                    + "is not assignable from 'Remotion.Validation.UnitTests.TestDomain.IPerson'."));
        }