using ApplicationLayer.InfrastructureServicesInterfaces; using Bogus; using Domains; using Domains.ApplicantDomain; using Domains.Users; namespace VisaApi.Fakers { public sealed class ApplicantFaker : Faker { public ApplicantFaker(User user, IDateTimeProvider dateTimeProvider) { RuleFor(a => a.Citizenship, f => f.Address.Country()); RuleFor(a => a.Gender, f => f.Random.Enum()); RuleForType(typeof(Name), f => new Name { FirstName = f.Name.LastName(), Surname = f.Name.LastName(), Patronymic = f.Name.FirstName() }); RuleFor(a => a.BirthDate, f => f.Date.Past(60, dateTimeProvider.Now())); RuleFor(a => a.Passport, f => new Passport { Issuer = f.Company.CompanyName(), Number = f.Random.String(ConfigurationConstraints.PasswordLength), ExpirationDate = f.Date.Future(4, dateTimeProvider.Now()), IssueDate = f.Date.Past(4, dateTimeProvider.Now()) }); RuleFor(a => a.JobTitle, f => f.Name.JobTitle()); RuleFor(a => a.MaritalStatus, f => f.Random.Enum()); RuleFor(a => a.UserId, () => user.Id); RuleFor(a => a.CitizenshipByBirth, f => f.Address.Country()); RuleFor(a => a.CityOfBirth, f => f.Address.City()); RuleFor(a => a.IsNonResident, f => f.Random.Bool()); RuleFor(a => a.PlaceOfWork, f => new PlaceOfWork { Address = new Address { Country = f.Address.Country(), City = f.Address.City(), Street = f.Address.StreetName(), Building = f.Address.BuildingNumber() }, Name = f.Company.CompanyName(), PhoneNum = f.Phone.PhoneNumber() }); } } }