From 43c30f52773da65a5e7e8f179f0b3c1da10f151b Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 20:59:41 +0100 Subject: [PATCH] Implementation of Unit of Work + Tests UserENtity + fix problem API userArticle --- .../.idea/.idea.Verax_API_EF/.idea/vcs.xml | 3 +- .../API/Controllers/ArticleUserController.cs | 122 ------------ .../API/Controllers/UserController.cs | 101 +++++++++- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 1 - .../API_DbDataManager/DbManager.cs | 22 ++- .../API_DbDataManager/DbManagerArticle.cs | 7 +- .../API_DbDataManager/DbManagerArticleUser.cs | 74 ------- .../API_DbDataManager/DbManagerFormulaire.cs | 4 +- .../API_DbDataManager/DbManagerUser.cs | 66 ++++++- .../API_Services/IArticleUserService.cs | 7 - .../Verax_API_EF/API_Services/IDataManager.cs | 10 + .../Verax_API_EF/API_Services/IUserService.cs | 9 + .../API_Unit_Test/API_Unit_Test.csproj | 25 +++ .../API_Unit_Test/GlobalUsings.cs | 1 + .../Verax_API_EF/API_Unit_Test/UnitTest1.cs | 9 + .../DbContextLib/LibraryContext.cs | 14 +- .../Entity_FrameWork.Article.db | Bin 0 -> 49152 bytes ..._Console_Article.cs => Test_Console_EF.cs} | 0 .../TestsArticleEntity.cs | 5 +- .../Unit_Test_EF/TestsUserEntity.cs | 182 ++++++++++++++++++ .../Unit_Test_EF.csproj} | 1 + Verax_API_EF/Verax_API_EF/Verax_API_EF.sln | 8 +- 23 files changed, 447 insertions(+), 224 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs delete mode 100644 Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db rename Verax_API_EF/Verax_API_EF/Test_Console_EF/{Test_Console_Article.cs => Test_Console_EF.cs} (100%) rename Verax_API_EF/Verax_API_EF/{TestsUnitaires => Unit_Test_EF}/TestsArticleEntity.cs (98%) create mode 100644 Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs rename Verax_API_EF/Verax_API_EF/{TestsUnitaires/TestsUnitaires.csproj => Unit_Test_EF/Unit_Test_EF.csproj} (96%) diff --git a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml index 64713b8..830a534 100644 --- a/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml +++ b/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF/.idea/vcs.xml @@ -1,7 +1,6 @@ - - + \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs deleted file mode 100644 index e02ba64..0000000 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs +++ /dev/null @@ -1,122 +0,0 @@ -using API_Mapping; -using API_Services; -using Entities; -using Microsoft.AspNetCore.Mvc; - -namespace API.Controllers; - -[Route("api/[controller]")] -[ApiController] -public class ArticleUserController : ControllerBase -{ - - private readonly IArticleUserService _us; - private readonly ILogger _logger; - public ArticleUserController(IArticleUserService us, ILogger logger) - { - this._us = us; - this._logger = logger; - } - - - [HttpGet("/articleUsers")] - public async Task GetAllArticleUsers() - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); - try - { - var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); - if (result == null) - { - return NoContent(); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpGet("/user/{pseudo}/article")] - public async Task GetArticleUser(string pseudo) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); - try - { - var result = await _us.GetArticleUser(pseudo); - if (result == null) - { - return NoContent(); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpPost("/user/{pseudo}/article")] - public async Task CreateArticleUser(ArticleUserEntity articleUser) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticleUser), articleUser); - try - { - var result = await _us.CreateArticleUser(articleUser); - if (result == null) - { - return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpDelete("/user/{pseudo}/article")] - public async Task DeleteArticleUser(string pseudo) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); - try - { - var result = await _us.DeleteArticleUser(pseudo); - if (!result) - { - return BadRequest($"ArticleUser {pseudo} does not exist"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - - [HttpPut("/user/{pseudo}/article")] - public async Task UpdateArticleUser(ArticleUserEntity articleUser) - { - _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); - try - { - var result = await _us.UpdateArticleUser(articleUser); - if (!result) - { - return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); - } - return Ok(result); - } - catch (Exception error) - { - _logger.LogError(error.Message); - return BadRequest(error.Message); - } - } - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs index b874e9e..547c1af 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -124,7 +124,106 @@ namespace API.Controllers } } - + [HttpGet("/articleUsers")] + public async Task GetAllArticleUsers() + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); + try + { + var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpGet("/user/{pseudo}/article")] + public async Task GetArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); + try + { + var result = (await _us.GetArticleUser(pseudo)).Select(a => a.ToDTO()); + if (result == null) + { + return NoContent(); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPost("/user/article")] + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticleUser), articleUser); + try + { + Console.WriteLine(articleUser); + var result = await _us.CreateArticleUser(articleUser); + if (result == null) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpDelete("/user/{pseudo}/article")] + public async Task DeleteArticleUser(string pseudo) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); + try + { + var result = await _us.DeleteArticleUser(pseudo); + if (!result) + { + return BadRequest($"ArticleUser {pseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } + + [HttpPut("/user/{pseudo}/article")] + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); + try + { + var result = await _us.UpdateArticleUser(articleUser); + if (!result) + { + return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); + } + return Ok(result); + } + catch (Exception error) + { + _logger.LogError(error.Message); + return BadRequest(error.Message); + } + } } diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db index 175a9e3bfb33888228bcc9beffeb72eedaac90e5..05efb1168e998b01e91a3dabc6673147af420471 100644 GIT binary patch delta 73 zcmZo@U~Xt&-oQA4m;W*Y6MrQG|1$nc{>sgQ0@?hNE9XbCFfcIaZoWQWOMsXECs4sl c2L6xyFZo|?7F4*wKl#~yVRoPb_TY>}05)P4tN;K2 delta 73 zcmZo@U~Xt&-oQA4mw|zSnZJ^O|1$qF{>sgQ0@?hNE9XbCXfv`gY`#8UO8}zaB?JFY a{*U}GHw!A<;Gg_#zc4!+voL3HMj`(options => builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); var app = builder.Build(); diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs index 6e4990b..d147171 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManager.cs @@ -1,12 +1,30 @@ +using API_Services; using DbContextLib; +using Model; namespace DbDataManager; -public class DbManager +public class DbManager : IDataManager { - protected LibraryContext _context; + protected LibraryContext _context { get; set; } + public DbManager() { _context = new LibraryContext(); + ArticleService = new DbManagerArticle(_context); + UserService = new DbManagerUser(_context); + FormulaireService = new DbManagerFormulaire(_context); } + + public DbManager(LibraryContext context) + { + _context = context; + ArticleService = new DbManagerArticle(_context); + UserService = new DbManagerUser(_context); + FormulaireService = new DbManagerFormulaire(_context); + } + + public IArticleService ArticleService { get; set; } + public IUserService UserService { get; set; } + public IFormulaireService FormulaireService { get; set; } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs index 81405d9..2aa2322 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs @@ -11,9 +11,7 @@ public class DbManagerArticle : IArticleService private readonly LibraryContext _context; public DbManagerArticle(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium) { List
articles = new List
(); @@ -92,6 +90,7 @@ public class DbManagerArticle : IArticleService await _context.SaveChangesAsync(); return true; } - + + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs deleted file mode 100644 index d923855..0000000 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs +++ /dev/null @@ -1,74 +0,0 @@ -using API_Services; -using DbContextLib; -using Entities; -using Microsoft.Extensions.Logging; -using Model; - -namespace DbDataManager; - -public class DbManagerArticleUser : IArticleUserService -{ - private readonly LibraryContext _context; - - public DbManagerArticleUser(LibraryContext context) - { - _context = context; - } - - public async Task> GetAllArticleUsers() - { - var entities = _context.ArticleUserSet.ToList(); - List users = new List(); - foreach( var articleUser in entities) - { - var user = _context.UserSet.FirstOrDefault(u => u.Pseudo.Equals(articleUser.UserEntityPseudo)); - if (user != null) users.Add(user); - } - if (users == null) return await Task.FromResult>(null); - return await Task.FromResult(users.Select(u => u.ToModel()).AsEnumerable()); - } - - public async Task GetArticleUser(string pseudo) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); - if (entity == null) return await Task.FromResult(null); - return await Task.FromResult(entity); - } - - - public async Task CreateArticleUser(ArticleUserEntity articleUser) - { - var result = await GetArticleUser(articleUser.UserEntityPseudo); - if (result != null) return await Task.FromResult(null); - var entity = new ArticleUserEntity() - { - ArticleEntityId = articleUser.ArticleEntityId, - UserEntityPseudo = articleUser.UserEntityPseudo - }; - if (entity == null) return await Task.FromResult(null); - _context.ArticleUserSet.Add(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(entity); - } - - public async Task DeleteArticleUser(string pseudo) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); - if (entity == null) return await Task.FromResult(false); - _context.ArticleUserSet.Remove(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(true); - } - - public async Task UpdateArticleUser(ArticleUserEntity articleUser) - { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(articleUser.UserEntityPseudo)); - if (entity == null) return await Task.FromResult(false); - entity.ArticleEntityId = articleUser.ArticleEntityId; - entity.UserEntityPseudo = articleUser.UserEntityPseudo; - await _context.SaveChangesAsync(); - return await Task.FromResult(true); - } - - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs index d84f9ba..5cd515f 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -11,9 +11,7 @@ public class DbManagerFormulaire : IFormulaireService private readonly LibraryContext _context; public DbManagerFormulaire(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAllForm(int index, int count, FormOrderCriteria orderCriteria) { diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs index b3928ae..a5a7b26 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -11,9 +11,7 @@ public class DbManagerUser: IUserService private readonly LibraryContext _context; public DbManagerUser(LibraryContext context) - { - _context = context; - } + => this._context = context; public async Task> GetAll(int index, int count, UserOrderCriteria orderCriteria) { @@ -41,6 +39,7 @@ public class DbManagerUser: IUserService public async Task GetByPseudo(string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); + if (entity == null) return await Task.FromResult(null); return await Task.FromResult(entity.ToModel()); } @@ -82,6 +81,67 @@ public class DbManagerUser: IUserService return await Task.FromResult(true); } + public async Task> GetAllArticleUsers() + { + var entities = _context.ArticleUserSet.ToList(); + List users = new List(); + foreach( var articleUser in entities) + { + var user = _context.UserSet.FirstOrDefault(u => u.Pseudo.Equals(articleUser.UserEntityPseudo)); + if (user != null) users.Add(user); + } + if (users == null) return await Task.FromResult>(null); + return await Task.FromResult(users.Select(u => u.ToModel()).AsEnumerable()); + } + + + public async Task> GetArticleUser(string pseudo) + { + var entities = _context.ArticleUserSet.Where(a => a.UserEntityPseudo.Equals(pseudo)); + List articles = new List(); + foreach (var article in entities) + { + var art = _context.ArticleSet.FirstOrDefault(a => a.Id.Equals(article.ArticleEntityId)); + if (art != null) articles.Add(art); + } + if (articles == null) return await Task.FromResult>(null); + return await Task.FromResult(articles.Select(a => a.ToModel()).AsEnumerable()); + } + + + public async Task CreateArticleUser(ArticleUserEntity articleUser) + { + var result = await GetByPseudo(articleUser.UserEntityPseudo); + if (result == null) return await Task.FromResult(false); + var entity = new ArticleUserEntity() + { + ArticleEntityId = articleUser.ArticleEntityId, + UserEntityPseudo = articleUser.UserEntityPseudo + }; + if (entity == null) return await Task.FromResult(false); + _context.ArticleUserSet.Add(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + public async Task DeleteArticleUser(string pseudo) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + if (entity == null) return await Task.FromResult(false); + _context.ArticleUserSet.Remove(entity); + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } + + public async Task UpdateArticleUser(ArticleUserEntity articleUser) + { + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(articleUser.UserEntityPseudo)); + if (entity == null) return await Task.FromResult(false); + entity.ArticleEntityId = articleUser.ArticleEntityId; + entity.UserEntityPseudo = articleUser.UserEntityPseudo; + await _context.SaveChangesAsync(); + return await Task.FromResult(true); + } diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs index 1d4118f..68cba95 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs @@ -5,12 +5,5 @@ namespace API_Services; public interface IArticleUserService { - Task> GetAllArticleUsers(); - Task GetArticleUser(string pseudo); - - Task CreateArticleUser(ArticleUserEntity articleUser); - Task DeleteArticleUser(string pseudo); - - Task UpdateArticleUser(ArticleUserEntity articleUser); } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs new file mode 100644 index 0000000..846f924 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs @@ -0,0 +1,10 @@ +namespace Model; +using API_Services; + +public interface IDataManager +{ + IArticleService ArticleService { get; } + IUserService UserService { get; } + IFormulaireService FormulaireService { get; } + +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs index 771947f..b191a32 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -12,6 +12,15 @@ namespace API_Services Task Update(User user, string pseudo); Task Delete(string pseudo); + + Task> GetAllArticleUsers(); + Task> GetArticleUser(string pseudo); + + Task CreateArticleUser(ArticleUserEntity articleUser); + + Task DeleteArticleUser(string pseudo); + + Task UpdateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj new file mode 100644 index 0000000..120fbeb --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/API_Unit_Test.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs new file mode 100644 index 0000000..dd67b24 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs @@ -0,0 +1,9 @@ +namespace API_Unit_Test; + +public class UnitTest1 +{ + [Fact] + public void Test1() + { + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 053406d..0f9f644 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -26,7 +26,7 @@ public class LibraryContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.LogTo( l => LogFile.WriteLine(l), LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); + optionsBuilder.LogTo( LogFile.WriteLine, LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -161,4 +161,16 @@ public class LibraryContext : DbContext ); */ } + + public override void Dispose() + { + base.Dispose(); + LogFile.Dispose(); + } + + public override async ValueTask DisposeAsync() + { + await base.DisposeAsync(); + await LogFile.DisposeAsync(); + } } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db new file mode 100644 index 0000000000000000000000000000000000000000..175a9e3bfb33888228bcc9beffeb72eedaac90e5 GIT binary patch literal 49152 zcmeI)&u`mQ00(gYNaH45XQV1vRW0Rj+!00ba#bOhd;kd({}zkgb9)#%;q z^~xIi2`y2(vT0FMZP~iLSFmWiW_ZhwWr}LLtdeYgRlQE)|Fc1yY~)GY+bmAb#s_1J zC-#-7q+Cnz`{{1#Y17uL4eA69%7lOQ#86)R>xatF$&x=%aL(>WBa$*R!+&to*0vhd zD}^_Tdg+$am)F()B1Q=t;@Mi9@s!moYLVnO$|S$JzD_b5`BJ%Cg6BFWW9`Q2oTo+D1{$Udg-V3952ZRM*s^n$M^u;F{S6LIwq)VCfsv1o^kR?e;B=`?+xRv3rKmXjgziRv|SvnomLlr&lZQR)jf-1FB z5B)@}W(Sk(ui&#oan5%T`ggQ=VmMw#?~k`T>r}!}KK*qtxH{ph0&lHX3#^m@HE@{x zjM`(LPm6eKJgjUac+Nd+ShpJNzkfw*+lD*e1?grf>8FeA-yU=K?fV(GIeEdnQP|&r zyrsRC<26(Nt}?iD_crRQdvBl3)pmpT#=OxCUQsY$GaO zO$u-ie_|YnmW&=kCn%C)pEb zZVGy#ZnP*#t_&?0oyxAei9ZFgY&1!!soQm(m$+<`C2`rL+D*N+L-O>FMbw6FXI1R6N92muH{00Izz00bZa0SG_<0uUG_Fd>LDy!Qqk@i;He@&|8u5S{-2m^{nL zKggfTcjXN>i2(u-fB*y_009U<00Izz00bcL@(IkdcV5PnSVAcqt-ZBmYWe&cyP$44 zb2j^4+G(}`jJNqA{G zHZwJ;?kjI@kXnJN^Hs@{jU2 z^5Yl2fXE;OAOHafKmY;|fB*y_009U<;N=#O#=0H-kk`{^U4HK*fDjeLX};6x7sh!} ziMS^TI@kXnIsN}9>=}TsVuKDB|`1o$LRiyvMPg|3fyy009U<00Izz00bZa z0SG_<0uX?}vlN&U!`x(YVaj@wqn_Nu>kAS&k22j z*~|X}1E;!y`M$u(5rLCl;NJ89f62efKg-|Z`Tu8G$%qRA5P$##AOHafKmY;|fB*y_ z@Vo@ZySMgtAO9D<$N$~;0d#H)ICv7k>HmxJ6HfkD{*#R`KmY;|fB*y_009U<00Izz X00ba#lm)u)0QAN}Se%NmI}82;LbUOm literal 0 HcmV?d00001 diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs b/Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_EF.cs similarity index 100% rename from Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_Article.cs rename to Verax_API_EF/Verax_API_EF/Test_Console_EF/Test_Console_EF.cs diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs similarity index 98% rename from Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs rename to Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs index 01cfb24..7fd74b0 100644 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsArticleEntity.cs +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsArticleEntity.cs @@ -2,11 +2,10 @@ using DbContextLib; using Entities; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -using Xunit; -namespace Tests; +namespace TestsUnitaires; -public class ArticleDB_Tests +public class TestsArticleEntity { [Fact] public void Add_Test() diff --git a/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs new file mode 100644 index 0000000..4119245 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/TestsUserEntity.cs @@ -0,0 +1,182 @@ +using DbContextLib; +using Entities; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; + +namespace Tests; + +public class TestsUserEntity +{ + [Fact] + public void Add_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + Assert.Equal(6, context.UserSet.Count()); + Assert.Equal("Blizzard", context.UserSet.First().Pseudo); + connection.Close(); + } + } + + [Fact] + public void Modify_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + var user = context.UserSet.First(u => u.Pseudo.Equals("Tofgasy")); + user.Prenom = "Tof"; + context.SaveChanges(); + string persRemove = "Tony"; + string persNew = "Tof"; + Assert.Equal(1, context.UserSet.Count(u => u.Prenom.Equals(persNew))); + Assert.Equal(0, context.UserSet.Count(u => u.Prenom.Equals(persRemove))); + connection.Close(); + + } + } + + [Fact] + public void Remove_Test() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + using (var context = new LibraryContext(options)) + { + context.Database.EnsureCreated(); + UserEntity u1 = new UserEntity + { + Pseudo = "Tofgasy", Prenom = "Tony", Nom = "Fages", Mail = "he@gmail.com", Mdp = "1234", Role = "Admin" + }; + UserEntity u2 = new UserEntity + { + Pseudo = "Blizzard", Prenom = "Louis", Nom = "Laborie", Mail = "he@gmail.com", Mdp = "1234", + Role = "Admin" + }; + UserEntity u3 = new UserEntity + { + Pseudo = "TomS", Prenom = "Tom", Nom = "Smith", Mail = "TomS@gmail.com", Mdp = "1234", Role = "User" + }; + UserEntity u4 = new UserEntity + { + Pseudo = "Siwa", Prenom = "Jean", Nom = "Marcillac", Mail = "occitan@gmail.com", Mdp = "1234", + Role = "Amin" + }; + UserEntity u5 = new UserEntity + { + Pseudo = "Sha", Prenom = "Shana", Nom = "Cascarra", Mail = "shacas@gmail.com", Mdp = "1234", + Role = "Modérator" + }; + UserEntity u6 = new UserEntity + { + Pseudo = "NoaSil", Prenom = "Noa", Nom = "Sillard", Mail = "noaSillar@gmail.com", Mdp = "1234", + Role = "Admin" + }; + context.UserSet.Add(u1); + context.UserSet.Add(u2); + context.UserSet.Add(u3); + context.UserSet.Add(u4); + context.UserSet.Add(u5); + context.UserSet.Add(u6); + context.SaveChanges(); + + Assert.Equal(6, context.UserSet.Count()); + var user = context.UserSet.First(u => u.Pseudo.Equals("Tofgasy")); + context.Remove(user); + context.SaveChanges(); + Assert.Equal(5, context.UserSet.Count()); + Assert.Equal(0, context.UserSet.Count(u => u.Pseudo.Equals("Tofgasy"))); + connection.Close(); + } + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj similarity index 96% rename from Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj rename to Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj index d068dfd..fc4de9b 100644 --- a/Verax_API_EF/Verax_API_EF/TestsUnitaires/TestsUnitaires.csproj +++ b/Verax_API_EF/Verax_API_EF/Unit_Test_EF/Unit_Test_EF.csproj @@ -7,6 +7,7 @@ false true + TestsUnitaires diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln index 6fdbffa..ce77cf8 100644 --- a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln @@ -23,7 +23,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "API", "API\API.csproj", "{6AACD337-70A0-429B-979C-1B1E004BF2E0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsUnitaires", "TestsUnitaires\TestsUnitaires.csproj", "{C1982C7C-AE09-4E96-B1A9-B6ADE4097452}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unit_Test_EF", "Unit_Test_EF\Unit_Test_EF.csproj", "{C1982C7C-AE09-4E96-B1A9-B6ADE4097452}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Unit_Test", "API_Unit_Test\API_Unit_Test.csproj", "{B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -75,6 +77,10 @@ Global {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1982C7C-AE09-4E96-B1A9-B6ADE4097452}.Release|Any CPU.Build.0 = Release|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE