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/UnitTestEF/Entities/AlumniTest.cs

194 lines
6.8 KiB

using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
namespace UnitTestEF.Entities;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Infrastructure;
using Infrastructure.Entities;
[TestClass]
public class AlumniTest
{
[TestMethod]
public async Task AddAlumniTest()
{
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<AlumniDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new AlumniDbContext(options))
{
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
var alumnis = new List<User>(
[
new User
{
Id = "1",
FirstName = "Test",
LastName = "Test",
Email = "test@gmail.com",
EntryYear = "2021",
Password = "1234567890",
Role = "ADMIN"
},
new User
{
Id = "2",
FirstName = "Test2",
LastName = "Test2",
Email = "test2@gmail.com",
EntryYear = "2021",
Password = "1234567890",
Role = "USER",
}
]
);
await context.Alumni.AddRangeAsync(alumnis);
await context.SaveChangesAsync();
Assert.AreEqual(2, await context.Alumni.CountAsync());
var inBaseAlumni = await context.Alumni.FirstOrDefaultAsync(a => a.Id == "1");
Assert.IsNotNull(inBaseAlumni);
Assert.AreEqual("1", inBaseAlumni.Id);
Assert.AreEqual("Test", inBaseAlumni.FirstName);
Assert.AreEqual("Test", inBaseAlumni.LastName);
Assert.AreEqual("test@gmail.com", inBaseAlumni.Email);
Assert.AreEqual("2021", inBaseAlumni.EntryYear);
Assert.AreEqual("1234567890", inBaseAlumni.Password);
Assert.AreEqual("ADMIN", inBaseAlumni.Role);
var inBaseAlumni2 = await context.Alumni.FirstOrDefaultAsync(a => a.Id == "2");
Assert.IsNotNull(inBaseAlumni2);
Assert.AreEqual("2", inBaseAlumni2.Id);
Assert.AreEqual("Test2", inBaseAlumni2.FirstName);
Assert.AreEqual("Test2", inBaseAlumni2.LastName);
Assert.AreEqual("test2@gmail.com", inBaseAlumni2.Email);
Assert.AreEqual("2021", inBaseAlumni2.EntryYear);
Assert.AreEqual("1234567890", inBaseAlumni2.Password);
Assert.AreEqual("USER", inBaseAlumni2.Role);
}
}
[TestMethod]
public async Task DeleteAlumniTest()
{
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<AlumniDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new AlumniDbContext(options))
{
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
var alumni = new User
{
Id = "1",
FirstName = "Test",
LastName = "Test",
Email = "test@gmail.com",
EntryYear = "2021",
Password = "1234567890",
Role = "ADMIN"
};
await context.Alumni.AddAsync(alumni);
await context.SaveChangesAsync();
Assert.AreEqual(1, await context.Alumni.CountAsync());
var inBaseAlumni = await context.Alumni.FirstOrDefaultAsync(a => a.Id == "1");
Assert.IsNotNull(inBaseAlumni);
context.Alumni.Remove(alumni);
await context.SaveChangesAsync();
Assert.AreEqual(0, await context.Alumni.CountAsync());
}
}
[TestMethod]
public async Task UpdateAlumniTest()
{
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<AlumniDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new AlumniDbContext(options))
{
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
var alumni = new User
{
Id = "1",
FirstName = "Test",
LastName = "Test",
Email = "test@gmail.com",
EntryYear = "2021",
Password = "1234567890",
Role = "ADMIN"
};
await context.Alumni.AddAsync(alumni);
await context.SaveChangesAsync();
Assert.AreEqual(1, await context.Alumni.CountAsync());
var inBaseAlumni = await context.Alumni.FirstOrDefaultAsync(a => a.Id == "1");
Assert.IsNotNull(inBaseAlumni);
inBaseAlumni.FirstName = "Test2";
inBaseAlumni.LastName = "Test2";
inBaseAlumni.Email = "test2@gmail.com";
inBaseAlumni.EntryYear = "2022";
inBaseAlumni.Password = "0987654321";
inBaseAlumni.Role = "USER";
await context.SaveChangesAsync();
var alumniAfterUpdate = await context.Alumni.FirstOrDefaultAsync(a => a.Id == "1");
Assert.IsNotNull(alumniAfterUpdate);
Assert.AreEqual("1", alumniAfterUpdate.Id);
Assert.AreEqual("Test2", alumniAfterUpdate.FirstName);
Assert.AreEqual("Test2", alumniAfterUpdate.LastName);
Assert.AreEqual("test2@gmail.com", alumniAfterUpdate.Email);
Assert.AreEqual("2022", alumniAfterUpdate.EntryYear);
Assert.AreEqual("0987654321", alumniAfterUpdate.Password);
Assert.AreEqual("USER", alumniAfterUpdate.Role);
}
}
[TestMethod]
public void ToString_ReturnsCorrectFormat()
{
// Arrange
var alumni = new User
{
Id = "1",
FirstName = "Test",
LastName = "Test",
Email = "test@gmail.com",
EntryYear = "2021",
Password = "1234567890",
Role = "ADMIN",
Experiences = new List<ExperienceEntity>(),
Formations = new List<FormationEntity>(),
Events = new List<EventEntity>()
};
// Act
var result = alumni.ToString();
// Assert
var expected = "\t------------Alumni Id : 1 ------------- :\n\tFirstname : Test Lastname : Test Email : test@gmail.com Role : ADMIN\n\tExperiences : 0 \tFormations : 0 \t Events : 0";
Assert.AreEqual(expected, result);
}
}