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() .UseSqlite(connection) .Options; using (var context = new AlumniDbContext(options)) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); var alumnis = new List( [ 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() .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() .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(), Formations = new List(), Events = new List() }; // 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); } }