From 4ea53b072ebc54d180d2ec202ed2b9ffce7141ab Mon Sep 17 00:00:00 2001 From: "Johnny.Ratton" Date: Sun, 17 Mar 2024 10:25:38 +0100 Subject: [PATCH] Ajout des tests de UserDataService --- .../TestEF/Service/TestUserDataService.cs | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 API_SQLuedo/TestEF/Service/TestUserDataService.cs diff --git a/API_SQLuedo/TestEF/Service/TestUserDataService.cs b/API_SQLuedo/TestEF/Service/TestUserDataService.cs new file mode 100644 index 0000000..040f600 --- /dev/null +++ b/API_SQLuedo/TestEF/Service/TestUserDataService.cs @@ -0,0 +1,152 @@ +using DbContextLib; +using DbDataManager.Service; +using Entities; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Model.OrderCriteria; + +namespace TestEF.Service; + +public class TestUserDataService +{ + private readonly UserDbContext _dbContext; + private readonly UserDataService _userDataService; + + public TestUserDataService() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + _dbContext = new UserDbContext(options); + _userDataService = new UserDataService(_dbContext); + } + + [Fact] + public void GetUsers_ReturnsCorrectNumberOfUsers() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.Users.Add(new UserEntity() { Id = 3, Username = "Test3", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + var result = _userDataService.GetUsers(1, 2, UserOrderCriteria.None); + Assert.Equal(2, result.Count()); + } + + [Fact] + public void GetUserById_ReturnsCorrectUser() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.SaveChanges(); + var result = _userDataService.GetUserById(1); + Assert.Equal("Test1", result.Username); + } + + [Fact] + public void GetUserByUsername_ReturnsCorrectUser() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.SaveChanges(); + var result = _userDataService.GetUserByUsername("Test1"); + Assert.Equal(1, result.Id); + } + + [Fact] + public void CreateUser_AddsNewUser() + { + var result = _userDataService.CreateUser("Test42", "password", "eamil@example1.com", true); + Assert.Equal(1, _dbContext.Users.Count()); + Assert.Equal("Test42", result.Username); + } + + [Fact] + public void DeleteUser_RemovesUser() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + _userDataService.DeleteUser(1); + Assert.Empty(_dbContext.Inquiries); + } + + [Fact] + public void UpdateUser_UpdatesExistingUser() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + var updatedUser = new UserEntity() { Id = 1, Username = "Updated", Email = "updated@example.com", Password = "updated", IsAdmin = false }; + var result = _userDataService.UpdateUser(1, updatedUser); + + Assert.Equal("Updated", result.Username); + Assert.Equal("updated@example.com", result.Email); + Assert.Equal("updated", result.Password); + Assert.False(result.IsAdmin); + } + + [Fact] + public void GetUsers_WithBadPage_ReturnsClassicUsers() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.SaveChanges(); + + var result = _userDataService.GetUsers(-1, 2, UserOrderCriteria.None); + + Assert.Equal(2, result.Count()); + } + + [Fact] + public void GetUsers_WithBadNumber_ReturnsClassicUsers() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false }); + _dbContext.SaveChanges(); + + var result = _userDataService.GetUsers(1, -42, UserOrderCriteria.None); + + Assert.Equal(2, result.Count()); + } + + [Fact] + public void GetUserById_WithoutId_ThrowsException() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + Assert.Throws(() => _userDataService.GetUserById(2)); + } + + [Fact] + public void GetUserByUsername_WithoutUsername_ThrowsException() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + Assert.Throws(() => _userDataService.GetUserByUsername("Test2")); + } + + [Fact] + public void DeleteUser_WithoutId_ReturnsFalse() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + var result = _userDataService.DeleteUser(2); + + Assert.False(result); + } + + [Fact] + public void UpdateUser_WithoutId_ThrowsException() + { + _dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true }); + _dbContext.SaveChanges(); + + var updatedUser = new UserEntity() { Id = 1, Username = "Updated", Email = "updated@email.com", Password = "updated", IsAdmin = false }; + + Assert.Throws(() => _userDataService.UpdateUser(2, updatedUser)); + } +} \ No newline at end of file