/// <summary> /// Creates a new RegisteredEventBuilder, but keeps the previous RegisteredEventBuilder linked so a call to build, will build the previous objects in the chain. /// </summary> /// <param name="stage"></param> /// <param name="messageTypes"></param> /// <returns></returns> public RegisteredEventBuilder And(PipelineStage stage, params MessageType[] messageTypes) { var builder = new RegisteredEventBuilder(stage, messageTypes) { PreviousBuilder = this }; return(builder); }
public void RegisteredEventBuilder_NoMessage_Should_UseAnyMessage() { TestStage(PipelineStage.PreValidation); TestStage(PipelineStage.PreOperation); TestStage(PipelineStage.PostOperation); void TestStage(PipelineStage stage) { var sut = new RegisteredEventBuilder(stage).Build().Single(); Assert.AreEqual(RegisteredEvent.Any, sut.Message); Assert.AreEqual(stage, sut.Stage); } }
public void RegisteredEventBuilder_WithAnd_Should_CreateMultipleRegisteredEvents() { // Previous Syntax var events = new RegisteredEventBuilder(PipelineStage.PreOperation, MessageType.Create).Build(); events.AddRange(new RegisteredEventBuilder(PipelineStage.PostOperation, MessageType.Update).Build()); // New Syntax var values = new RegisteredEventBuilder(PipelineStage.PreOperation, MessageType.Create) .And(PipelineStage.PostOperation, MessageType.Update) .Build(); Assert.AreEqual(2, values.Count, "Two events should have been created, a single Pre Operation Registered Event and a Single Post Operation Event."); var pre = values.Single(v => v.Stage == PipelineStage.PreOperation); var post = values.Single(v => v.Stage == PipelineStage.PostOperation); Assert.AreEqual(MessageType.Create, pre.Message); Assert.AreEqual(MessageType.Update, post.Message); }
// Create Extension Method to Accept the Custom PluginContext public static RegisteredEventBuilder WithExecuteAction(this RegisteredEventBuilder builder, Action <ExtendedPluginContext> execute) { builder.WithExecuteAction(execute); return(builder); }