public void Should_throw_when_factory_method_is_null()
        {
            // Arrange
            var violationConfiguration = TestDataFactory.CreatedValidViolationConfiguration();
            var configuration          = new ViolationHandlerConfiguration(violationConfiguration, x => true);

            // Act & assert
            Assert.Throws <ArgumentNullException>(() => configuration.IsHandledBy <DefaultPolicyViolationHandler>(null));
        }
        public void Should_add_convention_for_predicate_to_instance()
        {
            // Arrange
            var conventions            = new List <IConvention>();
            var violationConfiguration = TestDataFactory.CreatedValidViolationConfiguration(conventions);
            var configuration          = new ViolationHandlerConfiguration <IgnorePolicy>(violationConfiguration);

            // Act
            configuration.IsHandledBy(() => new DefaultPolicyViolationHandler());

            // Assert
            Assert.That(conventions.Single(), Is.InstanceOf <PolicyTypeToPolicyViolationHandlerInstanceConvention <IgnorePolicy, DefaultPolicyViolationHandler> >());
        }
        public void Should_add_convention_for_predicate_to_instance()
        {
            // Arrange
            Func <PolicyResult, bool> expectedPredicate = x => true;
            var conventions            = new List <IConvention>();
            var violationConfiguration = TestDataFactory.CreatedValidViolationConfiguration(conventions);
            var configuration          = new ViolationHandlerConfiguration(violationConfiguration, expectedPredicate);

            // Act
            configuration.IsHandledBy(() => new DefaultPolicyViolationHandler());

            // Assert
            Assert.That(conventions.Single().As <PredicateToPolicyViolationHandlerInstanceConvention <DefaultPolicyViolationHandler> >().Predicate, Is.EqualTo(expectedPredicate));
        }