예제 #1
0
        internal static void SeedTicketScenario(string testName)
        {
            MockContextFactory.TestContextFor(testName, ctx =>
            {
                var owners = new List <string>();

                for (var i = 0; i < 20; i++)
                {
                    var f = new Bogus.Faker("en");
                    owners.Add(f.Person.FullName);
                }

                var faker = new Bogus.Faker <Ticket>()
                            .RuleFor(t => t.TicketType, (f, u) => f.PickRandom("new", "open", "refused", "closed"))
                            .RuleFor(t => t.Title, (f, u) => f.Lorem.Sentence())
                            .RuleFor(t => t.Details, (f, u) => f.Lorem.Paragraph())
                            .RuleFor(t => t.IsHtml, (f, u) => false)
                            .RuleFor(t => t.TagList, (f, u) => string.Join(",", f.Commerce.Categories(3)))
                            .RuleFor(t => t.CreatedDate, (f, u) => f.Date.Recent(100))
                            .RuleFor(t => t.Owner, (f, u) => f.PickRandom(owners))
                            .RuleFor(t => t.AssignedTo, (f, u) => f.PickRandom(owners))
                            .RuleFor(t => t.TicketStatus, (f, u) => f.PickRandom(1, 2, 3))
                            .RuleFor(t => t.LastUpdateBy, (f, u) => f.Person.FullName)
                            .RuleFor(t => t.LastUpdateDate, (f, u) => f.Date.Soon(5))
                            .RuleFor(t => t.Priority, (f, u) => f.PickRandom("low", "medium", "high", "critical"))
                            .RuleFor(t => t.AffectedCustomer, (f, u) => f.PickRandom(true, false))
                            .RuleFor(t => t.Version, (f, u) => f.PickRandom("1.0.0", "1.1.0", "2.0.0"))
                            .RuleFor(t => t.ProjectId, (f, u) => f.Random.Number(100))
                            .RuleFor(t => t.DueDate, (f, u) => f.Date.Soon(5))
                            .RuleFor(t => t.EstimatedDuration, (f, u) => f.Random.Number(20))
                            .RuleFor(t => t.ActualDuration, (f, u) => f.Random.Number(20))
                            .RuleFor(t => t.TargetDate, (f, u) => f.Date.Soon(5))
                            .RuleFor(t => t.ResolutionDate, (f, u) => f.Date.Soon(5))
                            .RuleFor(t => t.Type, (f, u) => f.PickRandom(1, 2, 3))
                            .RuleFor(t => t.ParentId, () => 0)
                            .RuleFor(t => t.PreferredLanguage, (f, u) => f.PickRandom("fr", "en", "es"))
                ;

                var fakeModels = new List <Ticket>();
                for (var i = 0; i < 500; i++)
                {
                    var t      = faker.Generate();
                    t.TicketId = i + 1;
                    fakeModels.Add(t);
                }

                ctx.AddRange(fakeModels);
                ctx.SaveChanges();
            });
        }
예제 #2
0
        public static IEnumerable <T> PickRandomOrDefault <T>(this Bogus.Faker faker, IEnumerable <T> items, int quantity)
        {
            if (!items.Any())
            {
                return(new T[0]);
            }

            return(faker.PickRandom(items, quantity));
        }
        public List <CarePackageDetail> CreateCarePackageDetails(CarePackage package, int count, PackageDetailType type)
        {
            var faker      = new Bogus.Faker();
            var costPeriod = type switch
            {
                PackageDetailType.CoreCost => PaymentPeriod.Weekly,
                PackageDetailType.AdditionalNeed => faker.PickRandom(PaymentPeriod.Weekly, PaymentPeriod.OneOff),
                _ => PaymentPeriod.Weekly
            };
            var details = TestDataHelper.CreateCarePackageDetails(count, type, costPeriod);

            package.Details.AddRange(details);
            _context.SaveChanges();

            return(details);
        }
예제 #4
0
        /// Remover cuando sea real
        protected override void Seed()
        {
            var f = new Bogus.Faker();

            var clients = ModelFakers.ClientFaker.Generate(10).ToList();

            clients.ForEach(c => c.Address = f.PickRandom(this.addressRepository.List()));

            var firstClients = clients
                               .Take(5)
                               .ToList();

            var lastClients = clients.Skip(5).Take(5).ToList();

            firstClients.ForEach(x => lastClients.ForEach(y => this.AddCall(x, y, f.Random.Int(0, 15), DateTime.Now)));
            lastClients.ForEach(x => firstClients.ForEach(y => this.AddCall(x, y, f.Random.Int(0, 15), DateTime.Now)));
            this.Create(clients);
        }
예제 #5
0
        private void CreateMockContract(InsuranceDb context)
        {
            var faker           = new Bogus.Faker();
            var contractCompany = context.Companies.OrderBy(c => c.Id).Skip(faker.Random.UShort(0, (ushort)(context.Companies.Count() - 1))).First();
            var mockPerson      = new Bogus.Person();

            var newPerson = new EFModel.Person()
            {
                Address           = mockPerson.Address.Street,
                BirthDate         = mockPerson.DateOfBirth,
                DrivingLicenceNum = faker.Lorem.Letter().ToUpper() + faker.Lorem.Letter().ToUpper() + "-" + faker.Random.UInt(10000, 99999).ToString(),
                FatherName        = faker.Name.FirstName(),
                FirstName         = mockPerson.FirstName,
                LastName          = mockPerson.LastName,
                TaxId             = faker.Random.UInt(1000000, 9999999).ToString(),
                ZipCode           = mockPerson.Address.ZipCode,
            };

            context.Persons.Add(newPerson);
            // Create 1-3 telephone numbers
            for (var phoneIdx = 0; phoneIdx < faker.Random.UShort(1, 3); phoneIdx++)
            {
                var mockPhone = new EFModel.Phone();
                mockPhone.Person    = newPerson;
                mockPhone.Number    = faker.Phone.PhoneNumber();
                mockPhone.PhoneType = faker.PickRandom <EFModel.PhoneType>();
                context.Phones.Add(mockPhone);
            }

            //Create 1-5 contracts for the user by setting a random start date for the first contract
            //In the insurance market the cotracts a usually 6 months length

            DateTime nextStartDate = DateTime.Today.AddMonths((-1) * faker.Random.UShort(1, 24));
            // pick a random company

            string contractNumber = faker.Random.Number(1000000, 9999999).ToString();

            do
            {
                // create a contract
                EFModel.Contract contract = new EFModel.Contract();
                contract.Person         = newPerson;
                contract.Company        = contractCompany;
                contract.ContractNumber = contractNumber;
                contract.IssueDate      = nextStartDate.AddDays(-2);
                contract.ExpireDate     = nextStartDate.AddMonths(6);
                contract.GrossAmount    = faker.Random.Number(100, 1000);
                contract.TaxAmount      = (decimal)((double)contract.GrossAmount * (10d / 100d));
                contract.NetAmount      = contract.GrossAmount - contract.TaxAmount;
                contract.PlateNumber    = faker.Lorem.Letter().ToUpper() +
                                          faker.Lorem.Letter().ToUpper() +
                                          faker.Lorem.Letter().ToUpper() +
                                          "-" +
                                          faker.Random.UInt(10000, 99999).ToString();
                contract.ReceiptNumber = faker.Random.Number(10000000, 99999999).ToString();
                contract.StartDate     = nextStartDate;
                context.Contracts.Add(contract);

                nextStartDate = nextStartDate.AddMonths(6);
            } while (nextStartDate < DateTime.Today);
            context.SaveChanges();
        }
예제 #6
0
        public async Task <IActionResult> GenerateTestData()
        {
            var faker = new Bogus.Faker("en");

            BuilderSetup.DisablePropertyNamingFor <Product, int>(x => x.Id);
            BuilderSetup.DisablePropertyNamingFor <Profile, int>(x => x.Id);
            BuilderSetup.DisablePropertyNamingFor <Transaction, int>(x => x.Id);
            BuilderSetup.DisablePropertyNamingFor <ProductType, int>(x => x.Id);

            int productTypeCount = 3;
            var productTypes     = Builder <ProductType> .CreateListOfSize(productTypeCount)
                                   .All()
                                   .With(p => p.Name      = faker.Commerce.Categories(1)[0])
                                   .With(p => p.SortOrder = faker.Random.Number(0, productTypeCount))
                                   .Build().ToList();

            _context.ProductTypes.AddRange(productTypes);
            await _context.SaveChangesAsync();

            var products = Builder <Product> .CreateListOfSize(20)
                           .All()
                           .With(p => p.ProductTypeId = faker.PickRandom(productTypes.Select(x => x.Id)))
                           .With(p => p.Name          = faker.Commerce.ProductName())
                           .With(p => p.Description   = faker.Commerce.ProductAdjective())
                           .With(p => p.ImageUrl      = $"https://i.picsum.photos/id/" + p.Id + "/400/400.jpg")
                           .Build().ToList();

            _context.Products.AddRange(products);
            await _context.SaveChangesAsync();


            var profiles = Builder <Profile> .CreateListOfSize(300)
                           .All()
                           .With(p => p.FirstName         = faker.Name.FirstName())
                           .With(p => p.LastName          = faker.Name.LastName())
                           .With(p => p.Address           = faker.Address.StreetAddress())
                           .With(p => p.City              = faker.Address.City())
                           .With(p => p.State             = faker.Address.State())
                           .With(p => p.ZipCode           = faker.Address.ZipCode())
                           .With(p => p.Bio               = faker.Name.JobDescriptor())
                           .With(p => p.Email             = faker.Internet.Email())
                           .With(p => p.IsDropOffPoint    = false)
                           .With(p => p.IsSelfQuarantined = false)
                           .With(p => p.Phone             = faker.Phone.PhoneNumber())
                           .With(p => p.Latitude          = faker.Address.Latitude(33.0075, 36.4997))    // min&max of Arkansas
                           .With(p => p.Longitude         = faker.Address.Longitude(-94.6198, -89.6594)) // min&max of Arkansas
                           .With(p => p.Location          = new Point(faker.Address.Longitude(-94.6198, -89.6594), faker.Address.Latitude(33.0075, 36.4997))
            {
                SRID = 4326
            })                                                                                                                                                // min&max of Arkansas
                           .Random(10)
                           .With(p => p.CompanyName == faker.Company.CompanyName())
                           .Random(30)
                           .With(p => p.CompanyName == faker.Company.CompanyName())
                           .With(p => p.IsDropOffPoint == true)
                           .Random(5)
                           .With(p => p.IsSelfQuarantined == true)
                           .Build();

            _context.Profiles.AddRange(profiles);
            await _context.SaveChangesAsync();


            var transactions = Builder <Transaction> .CreateListOfSize(1000)
                               .All()
                               .With(t => t.Product         = faker.PickRandom(products))
                               .With(t => t.Amount          = faker.Random.Number(3, 10000))
                               .With(t => t.Status          = faker.PickRandom <TransactionStatus>())
                               .With(t => t.TransactionType = TransactionType.Stock)
                               .With(t => t.From            = null)
                               .With(t => t.To = faker.PickRandom(profiles))
                               .With(t => t.TransactionDate = faker.Date.Between(new DateTime(2020, 04, 01), DateTime.Now))
                               .With(t => t.NeedId          = null)
                               .Build();

            var transactions2 = Builder <Transaction> .CreateListOfSize(200)
                                .All()
                                .With(t => t.Product         = faker.PickRandom(products))
                                .With(t => t.Amount          = faker.Random.Number(3, 10000))
                                .With(t => t.Status          = faker.PickRandom <TransactionStatus>())
                                .With(t => t.TransactionType = TransactionType.Delivery)
                                .With(t => t.From            = faker.PickRandom(profiles))
                                .With(t => t.To = faker.PickRandom(profiles))
                                .With(t => t.TransactionDate = faker.Date.Between(new DateTime(2020, 04, 01), DateTime.Now))
                                .With(t => t.NeedId          = null)
                                .Build();

            _context.Transactions.AddRange(transactions);
            _context.Transactions.AddRange(transactions2);
            await _context.SaveChangesAsync();

            return(Ok("Populated"));
        }