public void ShouldDetectMissingBehaviorForRootContext() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Child", typeof(ChildBehaviorOfChildContext), "desc")) .Build(typeof(IParentContext)); var ex = Assert.Throws <Exception>(() => builder.Build()); Assert.AreEqual("Can't find any behaviors/connectors for the root context (NServiceBus.Core.Tests.Pipeline.PipelineModelBuilderTests+IParentContext)", ex.Message); }
public void ShouldOnlyAllowReplacementOfExistingRegistrations() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root1", typeof(RootBehavior), "desc")) .Replace(new ReplaceStep("DoesNotExist", typeof(RootBehavior), "desc")) .Build(typeof(IParentContext)); var ex = Assert.Throws <Exception>(() => builder.Build()); Assert.AreEqual("Multiple replacements of the same pipeline behaviour is not supported. Make sure that you only register a single replacement for 'DoesNotExist'.", ex.Message); }
public void ShouldDetectConflictingStepRegistrations() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root1", typeof(RootBehavior), "desc")) .Register(RegisterStep.Create("Root1", typeof(ChildBehaviorOfChildContextNotInheritedFromParentContext), "desc")) .Build(typeof(IParentContext)); var ex = Assert.Throws <Exception>(() => builder.Build()); Assert.AreEqual("Step registration with id 'Root1' is already registered for 'NServiceBus.Core.Tests.Pipeline.PipelineModelBuilderTests+RootBehavior'.", ex.Message); }
public void ShouldDetectConflictingStageConnectors() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root1", typeof(RootBehavior), "desc")) .Register(RegisterStep.Create("ParentContextToChildContextConnector", typeof(ParentContextToChildContextConnector), "desc")) .Register(RegisterStep.Create("ParentContextToChildContextNotInheritedFromParentContextConnector", typeof(ParentContextToChildContextNotInheritedFromParentContextConnector), "desc")) .Build(typeof(IParentContext)); var ex = Assert.Throws <Exception>(() => builder.Build()); Assert.AreEqual("Multiple stage connectors found for stage 'NServiceBus.Core.Tests.Pipeline.PipelineModelBuilderTests+IParentContext'. Remove one of: 'NServiceBus.Core.Tests.Pipeline.PipelineModelBuilderTests+ParentContextToChildContextConnector', 'NServiceBus.Core.Tests.Pipeline.PipelineModelBuilderTests+ParentContextToChildContextNotInheritedFromParentContextConnector'", ex.Message); }
public void ShouldDetectRegistrationsWithContextsNotReachableFromTheRootContext() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root", typeof(RootBehavior), "desc")) .Register(RegisterStep.Create("ParentContextToChildContextConnector", typeof(ParentContextToChildContextConnector), "desc")) .Register(RegisterStep.Create("Child", typeof(ChildBehaviorOfChildContextNotInheritedFromParentContext), "desc")) .Build(typeof(IParentContext)); var model = builder.Build(); Assert.AreEqual(2, model.Count); }
public void ShouldHandleTheTerminator() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root1", typeof(RootBehavior), "desc")) .Register(RegisterStep.Create("ParentContextToChildContextConnector", typeof(ParentContextToChildContextConnector), "desc")) .Register(RegisterStep.Create("Child", typeof(ChildBehaviorOfChildContextNotInheritedFromParentContext), "desc")) .Register(RegisterStep.Create("Terminator", typeof(Terminator), "desc")) .Build(typeof(IParentContext)); var model = builder.Build(); Assert.AreEqual(3, model.Count); }
public void ShouldAddWhenAddingOrReplacingABehaviorThatDoesntExist() { var builder = ConfigurePipelineModelBuilder.Setup() .Register(RegisterStep.Create("Root1", typeof(RootBehavior), "desc")) .RegisterOrReplace(RegisterOrReplaceStep.Create("SomeBehaviorOfParentContext", typeof(SomeBehaviorOfParentContext), "desc")) .Build(typeof(IParentContext)); var model = builder.Build(); Assert.That(model.Count, Is.EqualTo(2)); var addedBehavior = model.FirstOrDefault(x => x.StepId == "SomeBehaviorOfParentContext"); Assert.That(addedBehavior, Is.Not.Null); Assert.That(addedBehavior.BehaviorType, Is.EqualTo(typeof(SomeBehaviorOfParentContext))); }
public void ShouldDetectNonExistingInsertAfterRegistrations() { var someBehaviorRegistration = RegisterStep.Create("SomeBehaviorOfParentContext", typeof(SomeBehaviorOfParentContext), "desc"); var anotherBehaviorRegistration = RegisterStep.Create("AnotherBehaviorOfParentContext", typeof(AnotherBehaviorOfParentContext), "desc"); anotherBehaviorRegistration.InsertAfter("DoesNotExist"); var builder = ConfigurePipelineModelBuilder.Setup() .Register(someBehaviorRegistration) .Register(anotherBehaviorRegistration) .Build(typeof(IParentContext)); var ex = Assert.Throws <Exception>(() => builder.Build()); Assert.AreEqual("Registration 'DoesNotExist' specified in the insertafter of the 'AnotherBehaviorOfParentContext' step does not exist. Current StepIds: 'SomeBehaviorOfParentContext', 'AnotherBehaviorOfParentContext'", ex.Message); }