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