using Infrastructure.Entities; using Microsoft.EntityFrameworkCore; namespace Infrastructure.Stub; public class StubbedContext : AlumniDbContext { public StubbedContext(DbContextOptions options) : base(options) { } public StubbedContext(): this(new DbContextOptionsBuilder() .UseSqlite("DataSource=:memory:") .Options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); var eventEntities = new List( [ new EventEntity { Id = GenerateGuid().ToString(), Title = "Laser Game", Description = "Venez vous amuser et faire du networking lors d'une partie de Laser Game avec vos camarades de promo et d'anciens étudiants !", Date = GenerateRandomDate(), nbPlaces = GenerateRandomInt(1, 100) }, new EventEntity { Id = GenerateGuid().ToString(), Title = "Afterwork Raclette", Description = "Venez déguster de la raclette et boire un verre lors de notre afterwork recherche de stage et alternance !", Date = GenerateRandomDate(), nbPlaces = GenerateRandomInt(1, 100) }, new EventEntity { Id = GenerateGuid().ToString(), Title = "Conférence : Développeur & IA ?", Description = "Venez assister à une conférence qui vous permettra de découvrir comment l'IA doit être prise en compte dans le développement d'applications !", Date = GenerateRandomDate(), nbPlaces = GenerateRandomInt(1, 100) } ] ); var alumniEntities = new List( [ new User { Id = GenerateGuid().ToString(), FirstName = "Test", LastName = "Test", Email = "test@gmail.com", EntryYear = "2021", Password = "1234567890", Role = "ADMIN" }, new User { Id = GenerateGuid().ToString(), FirstName = "Test2", LastName = "Test2", Email = "test2@gmail.com", EntryYear = "2021", Password = "1234567890", Role = "USER", } ] ); var experienceEntities = new List( [ new ExperienceEntity { Id = GenerateGuid().ToString(), Title = "Data Scientist", StartDate = GenerateRandomDate(), CompanyName = "Michelin", IsCurrent = GenerateRandomBool() }, new ExperienceEntity { Id = GenerateGuid().ToString(), Title = "Développeur C# .NET", StartDate = GenerateRandomDate(), CompanyName = "CGI", IsCurrent = GenerateRandomBool() } ] ); var formationEntities = new List( [ new FormationEntity { Id = GenerateGuid().ToString(), SchoolName = "IUT Clermont-Ferrand", Name = "BUT Informatique", StartDate = GenerateRandomDate(), IsCurrent = GenerateRandomBool() }, new FormationEntity { Id = GenerateGuid().ToString(), SchoolName = "Isima", Name = "Ingénieur Informatique", StartDate = GenerateRandomDate(), IsCurrent = GenerateRandomBool() } ] ); modelBuilder.Entity().HasData(experienceEntities); modelBuilder.Entity().HasData(formationEntities); modelBuilder.Entity().HasData(alumniEntities); modelBuilder.Entity().HasData(eventEntities); } // Methods to generate random data to stub the database public Guid GenerateGuid() { return Guid.NewGuid(); } public string GenerateRandomString(int length) { var random = new Random(); const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; return new string(Enumerable.Repeat(chars, length) .Select(s => s[random.Next(s.Length)]).ToArray()); } public int GenerateRandomInt(int min, int max) { var random = new Random(); return random.Next(min, max); } public DateTime GenerateRandomDate() { var random = new Random(); var start = new DateTime(1995, 1, 1); var range = (DateTime.Today - start).Days; return start.AddDays(random.Next(range)); } public bool GenerateRandomBool() { var random = new Random(); return random.Next(0, 2) > 0; } }