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.
157 lines
5.5 KiB
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;
|
|
}
|
|
|
|
} |