public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline() { pipeline.AddItemToEndOfPipeline(r => null); pipeline.AddItemToEndOfPipeline(r => CreateResponse()); var pipeline2 = new BeforePipeline(); pipeline2.AddItemToEndOfPipeline(r => null); pipeline2.AddItemToEndOfPipeline(r => CreateResponse()); pipeline += pipeline2; Assert.Equal(4, pipeline.PipelineItems.Count()); Assert.Same(pipeline2.PipelineDelegates.ElementAt(0), pipeline.PipelineDelegates.ElementAt(2)); Assert.Same(pipeline2.PipelineDelegates.ElementAt(1), pipeline.PipelineDelegates.Last()); }
public void Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines() { var item1Called = false; Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); }; var item2Called = false; Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(null); }; var item3Called = false; Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); }; var item4Called = false; Func <NancyContext, Response> item4 = (r) => { item4Called = true; return(null); }; pipeline += item1; pipeline += item2; var subPipeline = new BeforePipeline(); subPipeline += item3; subPipeline += item4; pipeline.AddItemToEndOfPipeline(subPipeline); pipeline.Invoke(CreateContext()); Assert.True(item1Called); Assert.True(item2Called); Assert.True(item3Called); Assert.True(item4Called); }
public async Task Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines() { // Given var item1Called = false; Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); }; var item2Called = false; Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(null); }; var item3Called = false; Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); }; var item4Called = false; Func <NancyContext, Response> item4 = (r) => { item4Called = true; return(null); }; pipeline += item1; pipeline += item2; var subPipeline = new BeforePipeline(); subPipeline += item3; subPipeline += item4; // When pipeline.AddItemToEndOfPipeline(subPipeline); await pipeline.Invoke(CreateContext(), new CancellationToken()); // Then Assert.True(item1Called); Assert.True(item2Called); Assert.True(item3Called); Assert.True(item4Called); }
public void Pipeline_containing_another_pipeline_will_invoke_items_in_both_pipelines() { // Given var item1Called = false; Func<NancyContext, Response> item1 = (r) => { item1Called = true; return null; }; var item2Called = false; Func<NancyContext, Response> item2 = (r) => { item2Called = true; return null; }; var item3Called = false; Func<NancyContext, Response> item3 = (r) => { item3Called = true; return null; }; var item4Called = false; Func<NancyContext, Response> item4 = (r) => { item4Called = true; return null; }; pipeline += item1; pipeline += item2; var subPipeline = new BeforePipeline(); subPipeline += item3; subPipeline += item4; // When pipeline.AddItemToEndOfPipeline(subPipeline); pipeline.Invoke(CreateContext(), new CancellationToken()); // Then Assert.True(item1Called); Assert.True(item2Called); Assert.True(item3Called); Assert.True(item4Called); }
public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline() { // Given pipeline.AddItemToEndOfPipeline(r => null); pipeline.AddItemToEndOfPipeline(r => CreateResponse()); var pipeline2 = new BeforePipeline(); pipeline2.AddItemToEndOfPipeline(r => null); pipeline2.AddItemToEndOfPipeline(r => CreateResponse()); // When pipeline += pipeline2; // Then Assert.Equal(4, pipeline.PipelineItems.Count()); Assert.Same(pipeline2.PipelineDelegates.ElementAt(0), pipeline.PipelineDelegates.ElementAt(2)); Assert.Same(pipeline2.PipelineDelegates.ElementAt(1), pipeline.PipelineDelegates.Last()); }
public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline() { Func<NancyContext, Response> item1 = (r) => { return null; }; Func<NancyContext, Response> item2 = (r) => { return CreateResponse(); }; pipeline.AddItemToEndOfPipeline(item1); pipeline.AddItemToEndOfPipeline(item2); Func<NancyContext, Response> item3 = (r) => { return null; }; Func<NancyContext, Response> item4 = (r) => { return CreateResponse(); }; var pipeline2 = new BeforePipeline(); pipeline2.AddItemToEndOfPipeline(item3); pipeline2.AddItemToEndOfPipeline(item4); pipeline += pipeline2; Assert.Equal(4, pipeline.PipelineDelegates.Count()); Assert.Same(item3, pipeline.PipelineDelegates.ElementAt(2)); Assert.Same(item4, pipeline.PipelineDelegates.Last()); }
public void PlusEquals_with_another_pipeline_adds_those_pipeline_items_to_end_of_pipeline() { Func <NancyContext, Response> item1 = (r) => { return(null); }; Func <NancyContext, Response> item2 = (r) => { return(CreateResponse()); }; pipeline.AddItemToEndOfPipeline(item1); pipeline.AddItemToEndOfPipeline(item2); Func <NancyContext, Response> item3 = (r) => { return(null); }; Func <NancyContext, Response> item4 = (r) => { return(CreateResponse()); }; var pipeline2 = new BeforePipeline(); pipeline2.AddItemToEndOfPipeline(item3); pipeline2.AddItemToEndOfPipeline(item4); pipeline += pipeline2; Assert.Equal(4, pipeline.PipelineItems.Count()); Assert.Same(item3, pipeline.PipelineItems.ElementAt(2)); Assert.Same(item4, pipeline.PipelineItems.Last()); }
/// <summary> /// Use wechat browser filter in a NancyController/NancyModule /// </summary> /// <param name="pipeline"></param> /// <param name="optionAction"></param> /// <returns></returns> public static BeforePipeline UseWeChatBrowserOnly(this BeforePipeline pipeline, Action <WeChatBrowserOnlyOptions> optionAction) { if (pipeline == null) { throw new ArgumentNullException(nameof(pipeline)); } var options = new WeChatBrowserOnlyOptions(); optionAction?.Invoke(options); pipeline.AddItemToEndOfPipeline(ctx => { if (!Internal.RequestHelper.IsWeChatBrowser(ctx.Request)) { return(Internal.ResponseHelper.DoWeChatBrowserOnlyOption(ctx, options)); } return(null); }); return(pipeline); }
public void When_invoked_pipeline_member_returning_a_response_stops_pipeline_execution() { var item1Called = false; Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); }; var item2Called = false; Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(CreateResponse()); }; var item3Called = false; Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); }; pipeline.AddItemToEndOfPipeline(item1); pipeline.AddItemToEndOfPipeline(item2); pipeline.AddItemToEndOfPipeline(item3); pipeline.Invoke(CreateContext()); Assert.True(item1Called); Assert.True(item2Called); Assert.False(item3Called); }
public async Task When_invoked_pipeline_member_returning_a_response_stops_pipeline_execution() { // Given var item1Called = false; Func <NancyContext, Response> item1 = (r) => { item1Called = true; return(null); }; var item2Called = false; Func <NancyContext, Response> item2 = (r) => { item2Called = true; return(CreateResponse()); }; var item3Called = false; Func <NancyContext, Response> item3 = (r) => { item3Called = true; return(null); }; pipeline.AddItemToEndOfPipeline(item1); pipeline.AddItemToEndOfPipeline(item2); pipeline.AddItemToEndOfPipeline(item3); // When await pipeline.Invoke(CreateContext(), new CancellationToken()); // Then Assert.True(item1Called); Assert.True(item2Called); Assert.False(item3Called); }