Skip to content

emrecaglar/MockDataGenerator

Repository files navigation

MockDataGenerator

Generate mock data for POCO

NuGet Nuget AppVeyor AppVeyor tests

namespace XUnitTestProject1
{
    public class MockGeneratorTests
    {
        [Fact]
        public void Test()
        {
            var productGenerator = new MockDataGenerator<Product>()
                .Register(x => x.Name, x => x.Name())
                .Register(x => x.Explanation, x => x.LoremIpsum())
                .Register(x => x.Category, x => x.Object(
                    new MockDataGenerator<Category>()
                        .Register(cat => cat.Id, cat => cat.AutoIncrement())
                        .Register(cat => cat.Name, cat => cat.Random())
                 ))
                .Register(x => x.CategoryId, model => model.Category.Id)
                .Register(x => x.Comments, x => x.List())
                .Register(x => x.Price, x => x.Random())
                .Register(x => x.Unit, x => x.Random(5, 15))
                .Register(x => x.Amount, (model) => model.Price * model.Unit)
                .Register(x => x.Id, x => x.Guid())
                .Register(x => x.Barcodes, x => x.Array())
                .Register(x => x.CurrencySymbol, x => x.CurrencySymbol())
                .Register(x => x.Hash, x => x.MD5())
                .Register(x => x.Size, x => x.FromEnum())
                .Register(x => x.Sales, x => x.List(
                      new MockDataGenerator<Sales>()
                              .Register(sale => sale.CardNumber, sale => sale.CreditCard())
                              .Register(sale => sale.Iban, sale => sale.IBAN())
                              .Register(sale => sale.SaleDate, sale => sale.Random())
                              .Register(sale => sale.Customer, sale => sale.Object(
                                  new MockDataGenerator<Customer>()
                                        .Register(cust => cust.Email, cust => cust.Email())
                                        .Register(cust => cust.Gender, cust => cust.Gender())
                                        .Register(cust => cust.Id, cust => cust.Guid())
                                        .Register(cust => cust.Name, cust => cust.Name())
                                        .Register(cust => cust.PersonalPage, cust => cust.Url(true))
                                        .Register(cust => cust.Phone, cust => cust.Phone())
                                        .Register(cust => cust.Region, cust => cust.Region())
                                        .Register(cust => cust.Surname, cust => cust.Surname())
                              ))
                      ));


            var data = productGenerator.Generate(5);
        }
    }

    public class Customer
    {
        public Guid Id { get; set; }

        public string Name { get; set; }

        public string Surname { get; set; }

        public string Phone { get; set; }

        public string Email { get; set; }

        public string PersonalPage { get; set; }

        public string Region { get; set; }

        public string Gender { get; set; }
    }

    public class Sales
    {
        public DateTime SaleDate { get; set; }

        public Customer Customer { get; set; }

        public string Iban { get; set; }

        public string CardNumber { get; set; }
    }

    public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Product
    {
        public Guid Id { get; set; }

        public string Name { get; set; }

        public string Explanation { get; set; }

        public decimal Price { get; set; }

        public int Unit { get; set; }

        public decimal Amount { get; set; }

        public int CategoryId { get; set; }
        public Category Category { get; set; }

        public string[] Barcodes { get; set; }

        public List<Sales> Sales { get; set; }

        public List<Guid> Comments { get; set; }

        public string Hash { get; set; }

        public string CurrencySymbol { get; set; }

        public SizeCategory Size { get; set; }
    }

    public enum SizeCategory
    {
        Small,
        Medium,
        Large
    }
}

Releases

No releases published

Packages

No packages published

Languages