public void GivenChain_ThenSequenceIsCorrect() { var provider = BuildServiceProvider(); var link = provider.GetRequiredService <IMyLink>(); var links = ChainInspector.UnfoldChain(link); links.Should() .NotBeEmpty() .And.HaveCount(3); links.ElementAt(0).Should().BeOfType(typeof(MyLink1)); links.ElementAt(1).Should().BeOfType(typeof(MyLink2)); links.ElementAt(2).Should().BeOfType(typeof(MyLink3)); }
public void GivenChain_ThenLinksAreTransient() { var provider = BuildServiceProvider(); var link1 = provider.GetRequiredService <IMyLink>(); var link2 = provider.GetRequiredService <IMyLink>(); var links = new List <IMyLink>(); links.AddRange(ChainInspector.UnfoldChain(link1)); links.AddRange(ChainInspector.UnfoldChain(link2)); var uniqueLinks = links.Select(x => x.GetHashCode()); uniqueLinks.Count().Should().Be(links.Count); }
public void GivenChain_WhenDefault_ThenSequenceIsCorrect() { var provider = BuildServiceProvider(); var factory = provider.GetRequiredService <MyLinkFactory>(); var link = factory.Initialize("SINGLE"); var links = ChainInspector.UnfoldChain(link); links.Should() .NotBeEmpty() .And.HaveCount(3); links.ElementAt(0).Should().BeOfType(typeof(MyLink1)); links.ElementAt(1).Should().BeOfType(typeof(MyLink2)); links.ElementAt(2).Should().BeOfType(typeof(MyLink3)); }
public void GivenChain_ThenSequenceIsCorrect() { IChainLink <MyRequest, MyResponse> myLink1 = new MyLink1(false); IChainLink <MyRequest, MyResponse> myLink2 = new MyLink2(false); IChainLink <MyRequest, MyResponse> myLink3 = new MyLink3(false); var link = ChainFactory <MyRequest, MyResponse> .Initialize() .StartWith(myLink1) .FollowedBy(myLink2) .FollowedBy(myLink3) .Build(); var links = ChainInspector.UnfoldChain(link); links.Should() .NotBeEmpty() .And.HaveCount(3) .And.ContainInOrder(new[] { myLink1, myLink2, myLink3 }); }