Example #1
0
    public void should_propagate_unit_tag([Values(null, "tag")] string tag)
    {
        var expected = new MemoryStream();

        // --arrange
        var buildSession = A.Fake <IBuildSession>();

        A.CallTo(() => buildSession.BuildChain).Returns(Unit.IsType <IDisposable>().Tag(tag).ToBuildChain());
        var buildUnitCall = A.CallTo(() => buildSession.BuildUnit(Unit.IsType <MemoryStream>().Tag(tag)));

        buildUnitCall.Returns(expected.ToBuildResult());

        var target = new RedirectType(typeof(MemoryStream), SpecialTag.Propagate);

        // --act
        target.Process(buildSession);

        // --assert
        buildSession.BuildResult.Value.Should().Be(expected);
        buildUnitCall.MustHaveHappenedOnceAndOnly();
    }