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.
100 lines
3.2 KiB
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 = EDifficulty.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 = EDifficulty.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;
|
|
}
|
|
|
|
} |