public void GetComponentValidationCollectors_WithFakeTypeDiscoveryService()
        {
            var appliedWithAttributeTypes = new[]
            {
                typeof(CustomerMixinTargetValidationCollector1), typeof(CustomerMixinIntroducedValidationCollector1),
                typeof(CustomerMixinIntroducedValidationCollector2),
                typeof(PersonValidationCollector1)
            };

            _typeDescoveryServiceStub.Stub(stub => stub.GetTypes(typeof(IComponentValidationCollector), true)).Return(appliedWithAttributeTypes);

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

            Assert.That(
                typeCollectorProvider.GetCollectorsForType(typeof(ICustomerIntroduced)),
                Is.EqualTo(new[] { typeof(CustomerMixinIntroducedValidationCollector2) }));

            Assert.That(
                typeCollectorProvider.GetCollectorsForType(typeof(CustomerMixin)),
                Is.EquivalentTo(new[] { typeof(CustomerMixinTargetValidationCollector1), typeof(CustomerMixinIntroducedValidationCollector1) }));
            //ApplyWithMixin attribute!
        }
コード例 #2
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);
        }
コード例 #3
0
        public void GetComponentValidationCollectors_NoValidatedTypeFound_ExceptionIsThrown()
        {
            _typeDescoveryServiceStub.Stub(stub => stub.GetTypes(typeof(IComponentValidationCollector), true))
            .Return(new[] { typeof(CustomerValidationCollector1) });

            var validatedTypeResolverStub = MockRepository.GenerateStub <IValidatedTypeResolver>();

            validatedTypeResolverStub.Stub(stub => stub.GetValidatedType(typeof(CustomerValidationCollector1))).Return(null);

            var typeCollectorProvider = DiscoveryServiceBasedValidationCollectorReflector.Create(_typeDescoveryServiceStub, validatedTypeResolverStub);

            typeCollectorProvider.GetCollectorsForType(typeof(Customer));
        }
コード例 #4
0
        public void GetComponentValidationCollectors_InvalidCollectorWithoutGenericArgument()
        {
            _typeDescoveryServiceStub.Stub(stub => stub.GetTypes(typeof(IComponentValidationCollector), true)).Return(new[] { typeof(Person) });

            var validatedTypeResolverStub = MockRepository.GenerateStub <IValidatedTypeResolver>();

            validatedTypeResolverStub.Stub(stub => stub.GetValidatedType(typeof(Person))).Return(null);

            Assert.That(
                () =>
                DiscoveryServiceBasedValidationCollectorReflector.Create(
                    _typeDescoveryServiceStub,
                    validatedTypeResolverStub).GetCollectorsForType(
                    typeof(IComponentValidationCollector)),
                Throws.InvalidOperationException.And.Message.EqualTo(
                    "No validated type could be resolved for collector 'Remotion.Validation.UnitTests.TestDomain.Person'."));
        }
コード例 #5
0
        public void GetComponentValidationCollectors_WithRemotionDiscoveryService()
        {
            var typeCollectorProvider = new DiscoveryServiceBasedValidationCollectorReflector(
                new ClassTypeAwareValidatedTypeResolverDecorator(
                    new GenericTypeAwareValidatedTypeResolverDecorator(new NullValidatedTypeResolver())));

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

            Assert.That(result.Count(), Is.EqualTo(2));
            Assert.That(
                result,
                Is.EquivalentTo(
                    new[]
            {
                typeof(IPersonValidationCollector2), typeof(PersonValidationCollector1)
            }));
        }
コード例 #6
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'."));
        }