You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OptifitWebService/Infrastructure/Stub/StubbedContext.cs

157 lines
5.5 KiB

using Infrastructure.Entities;
using Microsoft.EntityFrameworkCore;
namespace Infrastructure.Stub;
public class StubbedContext : AlumniDbContext
{
public StubbedContext(DbContextOptions<AlumniDbContext> options) : base(options)
{
}
public StubbedContext(): this(new DbContextOptionsBuilder<AlumniDbContext>()
.UseSqlite("DataSource=:memory:")
.Options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var eventEntities = new List<EventEntity>(
[
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<User>(
[
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<ExperienceEntity>(
[
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<FormationEntity>(
[
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<ExperienceEntity>().HasData(experienceEntities);
modelBuilder.Entity<FormationEntity>().HasData(formationEntities);
modelBuilder.Entity<User>().HasData(alumniEntities);
modelBuilder.Entity<EventEntity>().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;
}
}