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); }
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'.")); }