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

100 lines
3.2 KiB

using Infrastructure.Entities;
using Microsoft.EntityFrameworkCore;
using Shared;
namespace Infrastructure.Stub;
public class StubbedContext : OptifitDbContext
{
public StubbedContext(DbContextOptions<OptifitDbContext> options) : base(options)
{
}
public StubbedContext(): this(new DbContextOptionsBuilder<OptifitDbContext>()
.UseSqlite("DataSource=:memory:")
.Options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var users = new List<User>(
[
new User
{
Id = GenerateGuid().ToString(),
Name = "Test",
Age = GenerateRandomInt(18, 99),
Height = GenerateRandomInt(150, 200),
Weight = GenerateRandomInt(50, 150),
Sexe = GenerateRandomBool(),
Logo = GenerateRandomString(10),
NbSessionPerWeek = GenerateRandomInt(1, 7),
EGoal = GenerateRandomString(10),
ESleepLevel = ESleepLevel.GOOD,
ESportLevel = ESportLevel.BEGINNER,
HashPassword = GenerateRandomString(10),
OAuthProvider = null,
OAuthId = null
},
new User
{
Id = GenerateGuid().ToString(),
Name = "Test",
Age = GenerateRandomInt(18, 99),
Height = GenerateRandomInt(150, 200),
Weight = GenerateRandomInt(50, 150),
Sexe = GenerateRandomBool(),
Logo = GenerateRandomString(10),
NbSessionPerWeek = GenerateRandomInt(1, 7),
EGoal = GenerateRandomString(10),
ESleepLevel = ESleepLevel.GOOD,
ESportLevel = ESportLevel.BEGINNER,
HashPassword = GenerateRandomString(10),
OAuthProvider = null,
OAuthId = null
}
]
);
modelBuilder.Entity<User>().HasData(users);
}
// 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;
}
}