private static IFixture CreateFixture(FakeCreationMode fakeCreationMode, params Type[] specimenBuilders)
        {
            var fixture = new Fixture();

            if (fakeCreationMode == FakeCreationMode.Strict)
            {
                var autoFakeItEasyCustomization = new AutoFakeItEasyCustomization
                {
                    Relay = new FakeItEasyStrictSpecimenBuilder()
                };

                fixture.Customize(autoFakeItEasyCustomization);
            }
            else
            {
                fixture.Customize(new AutoFakeItEasyCustomization());
            }

            fixture.Customize(new DefaultCustomization());

            if (specimenBuilders != null && specimenBuilders.Length > 0)
            {
                fixture.Customize(new CustomSpecimenBuildersCustomization(specimenBuilders));
            }

            return(fixture);
        }
 public void CustomizeNullFixtureThrows()
 {
     // Fixture setup
     var sut = new AutoFakeItEasyCustomization();
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         sut.Customize(null));
     // Teardown
 }
 public void SutIsCustomization()
 {
     // Fixture setup
     // Exercise system
     var sut = new AutoFakeItEasyCustomization();
     // Verify outcome
     Assert.IsAssignableFrom<ICustomization>(sut);
     // Teardown
 }
        public void ConfigureMembersIsDisabledByDefault()
        {
            // Arrange
            // Act
            var sut = new AutoFakeItEasyCustomization();

            // Assert
            Assert.False(sut.ConfigureMembers);
        }
        public void DelegatesFeatureIsDisabledByDefault()
        {
            // Arrange
            // Act
            var sut = new AutoFakeItEasyCustomization();

            // Assert
            Assert.False(sut.GenerateDelegates);
        }
        public void SetNullRelayThrows()
        {
            // Arrange
            var sut = new AutoFakeItEasyCustomization();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Relay = null);
        }
        public void CustomizeNullFixtureThrows()
        {
            // Arrange
            var sut = new AutoFakeItEasyCustomization();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Customize(null));
        }
        public void SutIsCustomization()
        {
            // Arrange
            // Act
            var sut = new AutoFakeItEasyCustomization();

            // Assert
            Assert.IsAssignableFrom <ICustomization>(sut);
        }
 public void SpecificationIsNotNullWhenInitializedWithDefaultConstructor()
 {
     // Fixture setup
     var sut = new AutoFakeItEasyCustomization();
     // Exercise system
     var result = sut.Relay;
     // Verify outcome
     Assert.IsType<FakeItEasyRelay>(result);
     // Teardown
 }
        public void SpecificationIsNotNullWhenInitializedWithDefaultConstructor()
        {
            // Arrange
            var sut = new AutoFakeItEasyCustomization();
            // Act
            var result = sut.Relay;

            // Assert
            Assert.IsType <FakeItEasyRelay>(result);
        }
        public void CustomizeNullFixtureThrows()
        {
            // Fixture setup
            var sut = new AutoFakeItEasyCustomization();

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Customize(null));
            // Teardown
        }
        public void SutIsCustomization()
        {
            // Fixture setup
            // Exercise system
            var sut = new AutoFakeItEasyCustomization();

            // Verify outcome
            Assert.IsAssignableFrom <ICustomization>(sut);
            // Teardown
        }
 public void SpecificationIsCorrectWhenInitializedWithRelay()
 {
     // Fixture setup
     var expectedRelay = new FakeItEasyRelay();
     var sut = new AutoFakeItEasyCustomization(expectedRelay);
     // Exercise system
     ISpecimenBuilder result = sut.Relay;
     // Verify outcome
     Assert.Equal(expectedRelay, result);
     // Teardown
 }
        public void SpecificationIsCorrectWhenInitializedWithRelay()
        {
            // Arrange
            var expectedRelay = new FakeItEasyRelay();
            var sut           = new AutoFakeItEasyCustomization(expectedRelay);
            // Act
            ISpecimenBuilder result = sut.Relay;

            // Assert
            Assert.Equal(expectedRelay, result);
        }
        public void SpecificationIsNotNullWhenInitializedWithDefaultConstructor()
        {
            // Fixture setup
            var sut = new AutoFakeItEasyCustomization();
            // Exercise system
            var result = sut.Relay;

            // Verify outcome
            Assert.IsType <FakeItEasyRelay>(result);
            // Teardown
        }
        public void SpecificationIsCorrectWhenInitializedWithRelay()
        {
            // Fixture setup
            var expectedRelay = new FakeItEasyRelay();
            var sut           = new AutoFakeItEasyCustomization(expectedRelay);
            // Exercise system
            ISpecimenBuilder result = sut.Relay;

            // Verify outcome
            Assert.Equal(expectedRelay, result);
            // Teardown
        }
        public void SpecificationIsCorrectWhenRelayIsSetViaProperty()
        {
            // Arrange
            var expectedRelay = new FakeItEasyRelay();
            // Act
            var sut = new AutoFakeItEasyCustomization {
                Relay = expectedRelay
            };
            // Assert
            ISpecimenBuilder result = sut.Relay;

            Assert.Equal(expectedRelay, result);
        }
        public void CustomizeAddsAppropriateResidueCollector()
        {
            // Arrange
            var residueCollectors = new List <ISpecimenBuilder>();
            var fixtureStub       = new Fake <IFixture>();

            fixtureStub.CallsTo(c => c.ResidueCollectors).Returns(residueCollectors);

            var sut = new AutoFakeItEasyCustomization();

            // Act
            sut.Customize(fixtureStub.FakedObject);
            // Assert
            Assert.Contains(sut.Relay, residueCollectors);
        }
        public void CustomizeAddsAppropriateResidueCollector()
        {
            // Fixture setup
            var residueCollectors = new List <ISpecimenBuilder>();
            var fixtureStub       = new Fake <IFixture>();

            fixtureStub.CallsTo(c => c.ResidueCollectors).Returns(residueCollectors);

            var sut = new AutoFakeItEasyCustomization();

            // Exercise system
            sut.Customize(fixtureStub.FakedObject);
            // Verify outcome
            Assert.Contains(sut.Relay, residueCollectors);
            // Teardown
        }
        public void CustomizeAddsAppropriateCustomizations()
        {
            // Fixture setup
            var customizations = new List<ISpecimenBuilder>();
            var fixtureStub = new Fake<IFixture>();
            fixtureStub.CallsTo(c => c.Customizations).Returns(customizations);

            var sut = new AutoFakeItEasyCustomization();
            // Exercise system
            sut.Customize(fixtureStub.FakedObject);
            // Verify outcome
            var postprocessor = customizations.OfType<FakeItEasyBuilder>().Single();
            var ctorInvoker = Assert.IsAssignableFrom<MethodInvoker>(postprocessor.Builder);
            Assert.IsAssignableFrom<FakeItEasyMethodQuery>(ctorInvoker.Query);
            // Teardown
        }
        public void CustomizeAddsAppropriateCustomizations()
        {
            // Arrange
            var customizations = new List <ISpecimenBuilder>();
            var fixtureStub    = new Fake <IFixture>();

            fixtureStub.CallsTo(c => c.Customizations).Returns(customizations);

            var sut = new AutoFakeItEasyCustomization();

            // Act
            sut.Customize(fixtureStub.FakedObject);
            // Assert
            var postprocessor = customizations.OfType <FakeItEasyBuilder>().Single();
            var ctorInvoker   = Assert.IsAssignableFrom <MethodInvoker>(postprocessor.Builder);

            Assert.IsAssignableFrom <FakeItEasyMethodQuery>(ctorInvoker.Query);
        }
        public void WithConfigureMembers_CustomizeAddsPostprocessorWithFakeBuilderAndCommandsToCustomizations()
        {
            // Arrange
            var fixtureStub = new FixtureStub();
            var sut         = new AutoFakeItEasyCustomization {
                ConfigureMembers = true
            };

            // Act
            sut.Customize(fixtureStub);
            // Assert
            var postprocessor     = fixtureStub.Customizations.OfType <Postprocessor>().Single();
            var fakeItEasyBuilder = Assert.IsAssignableFrom <FakeItEasyBuilder>(postprocessor.Builder);
            var methodInvoker     = Assert.IsAssignableFrom <MethodInvoker>(fakeItEasyBuilder.Builder);

            Assert.IsAssignableFrom <FakeItEasyMethodQuery>(methodInvoker.Query);

            var compositeCommand = Assert.IsAssignableFrom <CompositeSpecimenCommand>(postprocessor.Command);

            Assert.Contains(compositeCommand.Commands, command => command is ConfigureSealedMembersCommand);
            Assert.Contains(compositeCommand.Commands, command => command is ConfigureFakeMembersCommand);
        }
 public void CustomizeAddsAppropriateResidueCollector()
 {
     // Fixture setup
     var residueCollectors = new List<ISpecimenBuilder>();
     var fixtureStub = new Fake<IFixture>();
     fixtureStub.CallsTo(c => c.ResidueCollectors).Returns(residueCollectors);
     
     var sut = new AutoFakeItEasyCustomization();
     // Exercise system
     sut.Customize(fixtureStub.FakedObject);
     // Verify outcome
     Assert.Contains(sut.Relay, residueCollectors);
     // Teardown
 }