public void Generate_UsingCallback_FilledCorrectly()
        {
            // arrange
            var configuration = new ObjectFill <Employee>()
                                .For(p => p.Id, new IdProvider(IdType.Base58))
                                .For(p => p.FirstName, new NameProvider(NameType.Given, Gender.Male))
                                .For(p => p.LastName, new NameProvider(NameType.Surname, Gender.NotApplicable))
                                .For(p => p.HourlyRate, new MoneyProvider(1, 165))
                                .For(p => p.Age,
                                     new IntegerProvider(18, 65),
                                     (target, generator) =>
            {
                var age = (int)generator.Generate();
                target.SetAge(-age);             // test by making the age negative
            });

            // act
            var result = configuration.Generate(10).ToList();

            // assert
            Assert.All(result, a =>
            {
                Assert.True(a.Age < 0);
            });
        }
        //[Fact]
        public void AsJson()
        {
            var filler = new ObjectFill <Employee>()
                         .For((System.Linq.Expressions.Expression <Func <Employee, object> >)(p => p.FirstName), new StaticNameProvider("Peter"));

            var objects = filler.Generate(5).ToList();
            var json    = JsonConvert.SerializeObject(objects);
        }
        public void Using_a_specific_provider()
        {
            // arrange
            var configuration = new ObjectFill <Employee>()
                                .For(p => p.FirstName, new NameProvider(NameType.Given, Gender.Both))
                                .For(p => p.LastName, new NameProvider(NameType.Surname, Gender.NotApplicable))
                                .For(p => p.HourlyRate, new MoneyProvider(1, 165));

            // act
            var result = configuration.Generate(10).ToList();

            // assert
            Assert.Equal(10, result.Count());
        }
        public void Test()
        {
            // arrange
            var filler = new ObjectFill <ObjectWithComplexProperties>().FillUnmappedProperties();

            // act
            var results = filler.Generate(2).ToList();

            // assert
            Assert.All(results, properties =>
            {
                Assert.NotNull(properties.Prop1);
                Assert.NotNull(properties.Prop2);
                Assert.NotNull(properties.Prop2.Foo);
                Assert.False(properties.Prop2.Bar == default);
                Assert.Equal(2, properties.Prop3.Count);
            });
        }
        public void Generate_FilledCorrectly()
        {
            // arrange
            var configuration = new ObjectFill <Employee>()
                                .For(p => p.Id, new IdProvider(IdType.Base58))
                                .For(p => p.FirstName, new NameProvider(NameType.Given, Gender.Male))
                                .For(p => p.LastName, new NameProvider(NameType.Surname, Gender.NotApplicable))
                                .For(p => p.HourlyRate, new MoneyProvider(1, 165));

            // act
            var result = configuration.Generate(10).ToList();

            // assert
            Assert.All(result, a =>
            {
                Assert.NotNull(a.Id);
                Assert.Contains(a.FirstName, NameSource.GivenMale);
                Assert.Contains(a.LastName, NameSource.Surnames);
            });
        }
        public void Using_customprovider()
        {
            // arrange
            var configuration = new ObjectFill <Employee>()
                                .For(p => p.Id, new CustomGenerator <string>(() => "Im an Id!"))
                                .For(p => p.FirstName, new CustomGenerator <string>(() => "Jon"))
                                .For(p => p.LastName, new CustomGenerator <string>(() => "Snuh"))
                                .For(p => p.HourlyRate, new CustomGenerator <decimal>(() => 1.09m));

            // act
            var result = configuration.Generate(10).ToList();

            // assert
            Assert.All(result, a =>
            {
                Assert.Equal("Im an Id!", a.Id);
                Assert.Equal("Jon", a.FirstName);
                Assert.Equal("Snuh", a.LastName);
                Assert.Equal(1.09m, a.HourlyRate);
            });
        }