public void ShouldBeASpecimenBuilderNode()
        {
            // Arrange
            var sut = new DataAnnotationsSupportNode(new DelegatingSpecimenBuilder());

            // Act & Assert
            Assert.IsAssignableFrom <ISpecimenBuilderNode>(sut);
        }
        public void ShouldStorePassedSpecimenBuilderNode()
        {
            // Arrange
            var builder = new DelegatingSpecimenBuilder();
            // Act
            var sut = new DataAnnotationsSupportNode(builder);

            // Assert
            Assert.Equal(builder, sut.Builder);
        }
        public void ShouldYieldOwnedBuilder()
        {
            // Arrange
            var builder = new DelegatingSpecimenBuilder();
            var sut     = new DataAnnotationsSupportNode(builder);
            // Act
            var enumeratedBuilders = sut.ToArray();

            // Assert
            Assert.Single(enumeratedBuilders);
            Assert.Equal(builder, enumeratedBuilders[0]);
        }
        public void ShouldComposeCorrectly()
        {
            // Arrange
            var sut        = new DataAnnotationsSupportNode(new DelegatingSpecimenBuilder());
            var newBuilder = new DelegatingSpecimenBuilder();
            // Act
            var result = sut.Compose(new [] { newBuilder });
            // Assert
            var castedResult = Assert.IsType <DataAnnotationsSupportNode>(result);

            Assert.Equal(newBuilder, castedResult.Builder);
        }
        public void ShouldDelegateCreateRequestToInnerBuilder()
        {
            // Arrange
            var request        = new object();
            var context        = new DelegatingSpecimenContext();
            var expectedResult = new object();

            var builder = new DelegatingSpecimenBuilder
            {
                OnCreate = (r, ctx) => r == request ? expectedResult : new NoSpecimen()
            };

            var sut = new DataAnnotationsSupportNode(builder);
            // Act
            var actualResult = sut.Create(request, context);

            // Assert
            Assert.Equal(expectedResult, actualResult);
        }