From 80b429936f68d27121a12ff8ed6ef20e43e07b8e Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 15:34:52 +0100 Subject: [PATCH 01/10] fix Tests --- .../API/Controllers/ArticleUserController.cs | 3 +- .../API/Entity_FrameWork.Article.db | Bin 4096 -> 45056 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 0 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 94792 -> 0 bytes Verax_API_EF/Verax_API_EF/API/Program.cs | 4 +- Verax_API_EF/Verax_API_EF/API/log.txt | 0 .../API_DbDataManager/DbManagerArticleUser.cs | 13 ++- .../API_Services/IArticleUserService.cs | 3 +- .../Verax_API_EF/DbContextLib/Class1.cs | 89 ++++++++++++++++++ .../DbContextLib/LibraryContext.cs | 6 ++ .../Entity_FrameWork.Article.db | Bin 45056 -> 0 bytes .../TestsUnitaires/TestsArticleEntity.cs | 18 ++-- .../.idea.Verax_API_EF.dir/.idea/.gitignore | 15 +++ .../.idea/indexLayout.xml | 8 ++ .../.idea.Verax_API_EF.dir/.idea/vcs.xml | 6 ++ 15 files changed, 149 insertions(+), 16 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm delete mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal create mode 100644 Verax_API_EF/Verax_API_EF/API/log.txt create mode 100644 Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs delete mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/Entity_FrameWork.Article.db create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/.gitignore create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/indexLayout.xml create mode 100644 Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs index d8baa78..e02ba64 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleUserController.cs @@ -1,3 +1,4 @@ +using API_Mapping; using API_Services; using Entities; using Microsoft.AspNetCore.Mvc; @@ -24,7 +25,7 @@ public class ArticleUserController : ControllerBase _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); try { - var result = await _us.GetAllArticleUsers(); + var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); if (result == null) { return NoContent(); 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 9a472209435d88229f65ab7a0ca30d67df87a462..3cd9f2fccd0232de535751d05a4a7a8a6200ad97 100644 GIT binary patch literal 45056 zcmeI)&u`mQ00(gYNSYs|Gtv~SsZ4v##AvksO0uoM4lHZk5v@r>lA`v2A~$($tR{A6 zJCq(k>Nde&z>zD61AhfK4j>M2;xGv&1PEz}@k4?G&yJJE`7wInux?)~sr~$Z`F-BA z6F0U?udix0CEJGCRBe*xp5+9AyG97daRPgfvv+3-v4ubM^f_CJ2?7v+00bcLBncSNkbHHLKa6R5jlP}TsI0J$ z*b=oX>lQT?-PY`bY|UFYzEo5)Wrbw(%gP3ck4PLRYk3m)vc$=Bytkxy;&40?lCuf^ zFxjawW7=A^L7im%75k&21NHmkecRmL41a>bt+{h19Fiv|`S&8Wy49fGR(rFES6?}E zeO2jgQk1YMo~^|hMOnF_6iI%qO!Diit7K^{Un&m>0FI+O*KxYG_r})(m}kqE$`b9UfD#Xsc!n zkMniSKx5kV_qJ%I+alMxzq{gOWv!@WZ{*!(_V+v~Dl1A+$uB7-;tmRy-RTkLm~h6- zva+hM(Y2H*EoGLKXyVShV<9<_;NM?#`^Mju{!qx@Q~pR+N89)~t&MwmJ41i4iw9L$ zKlj(z+uhRxWzMwQ->oAtSSFM9m)QwA<^$X4XYY?r_~gCVN8%r6dxq_=|L*{}8XA+= z5U2W1CmNRjCMhwYQQ~cfYy?ZPhX-8u&;47)KXS4_7@eiv<8Ep&WGg1 zMgDfy<*HPam7KO?x<`5IHO;aO^I+&o!H+mJO?NPNi*!b{uLb=dRwK&k8Q@-f3Z_wO zRqZ#ZX$^iLMH5+JOn!55)P6g(mP&HyYLR`_3Oir7CfJ*ozT?;n69gat0SG_<0uX=z z1Rwwb2tWV=Cs$yS7t?ZTA$4gXolGXvsno)iO4Hm)zBIQmmx{7>@zReRdtrhA1Rwwb z2tWV=5P$##AOHafK;WbcJSV0jL;eZi{QfVV`ht@_kWy@h2?7v+00bZa0SG_<0uX=z z1R!t%1h&KwH~Y?1aJi&{3R){Uys zV0VTQ`W7|W8FOlOfxWJ@ODNKsDulTC{VDz&yR*!#K`Yb^os#6`ffb``*>kh_YY@vu zla!j8UDx;!mu<2tuA5Zd)$|>br~4LB8k(hUQM*o3WLcv%r#^O93Dt?QO%#2n;k2g4 zB8Y9&)C0n9=y#f>?ocPe%a@NDBXp~B&;O-wIO&1(9h+f-00bZa0SG_<0uX=z1Rwwb z2teS(2#ky3B=0?JM;sSezzRZUav%-L#p@!C$4Jw$S@YBb$^b7Gi_#pKg3OtC8pa!y9~`T{3#A$Pu$ zG-uR4`-DBV&@iV3FMW*ta$j;c#JNy_1#F{vt&`q4$)DxJoE(#53At?O2P;m}6?O%H z<%DeZ?%R;|`Tspm`dfM^{UZG!-FvFK7>$Jh1Rwwb2tWV=5P$##AOHafJP`uHpvd#0 z7zl_FUJQy(KnMzKCa^zZB;q{(FDQNMod5qO{VaXY7BN8p0uX=z1Rwwb2tWV=5P$## zAaH^NLIK`6_YaN*cy{t1aD##0_Wl36ob;vip|pE~8i!4V00bZa0SG_< z0uX=z1Rwwb2t1ww3+&;96Uo^#?v42*O_r%uHMKokGxU1h-g{+!e%mmcY3CjR=hl6a z78lr~29I*EhyD%Ck?Q713G?j9fliKyTS9U~j$}7Svi)_a@x;Sc zK>z{}fB*y_009U<00Izz00bcL9|G<@0N$Md&NBP$pWO}+5WVaFMd^Wa{{IJ?VS)ez hAOHafKmY;|fB*y_009U<;0X|DKMtV%PXOoq|6kjVw2c4& delta 33 ncmZp8z|^2HL7J73fq{W>Vxv7bBZFSrD_$UvL143>z%+gUg|7!D diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm deleted file mode 100644 index 67763877c3f8b4cc80189ea59cd995e0bc955bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI)J4!=Q5C-7UsELV>_y}YZ?!cvJV`Z6M8*3{|_v0o6D|-4zY3;=Me)u_u z!{y$4z6H$u`6Mb^*|mu2EZ1>%I9n_p&MxBo<>vPC>i+Tc`swZUeR4Pd<@5Qfuhe@# zR`PxPv*fp9Jv+#5WH+<*Ps8jeyPd87s(r2X+;U&*a=&_>$3lPr0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAn>OJYU+d#=qXV1R)j!LfkEuXQO~Qpb$fxDu_Xk03erNKABR!1*o6QA0t5&UAV7cs0RjXF5FkK+ Z009C72oNAZfB*pk1PBlyK;VA}d;;u!D3$;K diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal deleted file mode 100644 index 99a315d53ffcba3377dd9209595afde6969a70e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94792 zcmeI*eQXHfRbNb!wQ<*?bsDRiI9*ucq_Hbn)KM<>llWHq z&b2SeLe*8-3kdCxsTD;`LI?@y=%j*>wu)&mX`(Py&E#31P=d?4OUHV=r~=)m2(y zuU2{$>$ToW!abvx8yY7CZ~Y#j@ehrM8U`C5S|K!i%3G*E$2MVs00bZa0SG|g|4iV3 z*W>RFh|{YzJw+eu+qJis{VyX<&AmGdG#}MX&72x4(D9UEZ})W%M5KJ5cah*c zCj`l0j0Ek|f@EE=I>lgU+F$SS?+A(0ky7rFys0HKlpk8F5YFA+S!HqVpH+uqk(>wB zF4>blkH;Sfh)?e`)sYOfYhl0C+xaFU+xnxGRrC?I1p87!#*>I{j}DXAV1mSU_V<(S z!B{*o9AVo@aOmNZa*zxS_YFjbcaw*syGdkcVz4j95+8`h5*@|F5^0*HL6V5>VhP!a z*}HmFlMaoKWVEDeYKC6>pngr?S9{N_=BSlPWwCq9#kOE;wNH@r4h~2Aw#Tgc)M|1v z9PNz`M`PX5II*q>mJDx#;zbq=@r$M>+8kD3}^c} z*Xo>2OuSD;!RMiQH$+RNyJ*VI?KuiUN)!EoqsSS3f9L)VSk4GdbC#^Hw|mO z1X3zemy^yjJt157_LJS#4X9eC_F2P5rutLE7wUA?`6Ge3)a+94?Xusv*-yH9{?l$qs`IzEi^ZGI z#xBtP<5W-5s#V#cSG9AUu4ZWmJ2Uh|hv@OQwTVxys=T4uH8^uMN{*CD_f7FKUHHfB zOnM9Wq}9w>W_GLf&_Xh=<>vmBEq@dj(v*Gr*ZQ>Xr%7`>PZJvdIIsTkVCNGVH`7MG z>U>{_wE_PtZKD;3u?%cq>HWyPErYTkO2niToG`K^ zp4H5>CVGUvEX!hBo~rvaeT>BDWPwC8T0tG5W}1Xak495GKh}jpbz+Q?s6LkAwMnrZ z#57Xs6k&hp=hafjC_mu7O*55|%2}~Sm3hOK#u2;~{^hC5Ctf?r`voNBqM%%5->^Uc z0uX=z1Rwwb2tWV=5P$##Ah28oR!DL{w1=a~jiTHp&J19)%3M4Pjj=sX>~LEgM6GHZ2kS8t(Zo3Yw1WH zOtDG!G&SFScb7k&R{3$=Y9XoS^J?jpZMNQ4rQazP({Ez~7Y6uw)-VRXvSwgaDg6N> z^{eA~)im-%^t3bwni~8uLyc=0t3X;Nqvlg=gH>SGpggFfJYL}UE1!-%^xM%t@d*Un z%A106UAdzCO*zlrVu1hzAOHafKmY;|fB*y_009Ux7by{s>A0EEcXkn+P35HT`x_(SR5~KhW86xR{o;At(;l%6-NOf z009U<00Izz00bZa0SG_<0(Z86$6e|GaM?WotSi9o9FTmH+#(h`1EhLU_Is_)0|w^d zXr(xUSAX2|v#qcH(ce%tCQL_65ye{udzku~%h*H16$$uO^_S&Pr zIKjsY$jX$!dIXNK7c3Bf00bZa0SG_<0uX=z1Rwwb2rQ;RyIdzUbagiI2?5DQQt`OL zblS{qS-*ai?bygCE?~dww@VcVvxgDPJlnA1;Be_+vEtyaIS%f!4`x;J@@kd(1={vM z`$6tIjc=Fd7x+;5K>4fk9_ANV%*IDr5P$##AOHafKmY;|fB*y_0D;>jP+tlWC`~UQ z+tUkJ^9>Y-5zIssuu||Y0AHzJVCO44^j$A(xu0*8l}m#1k#dc_V1WPxAOHafKmY;| zfB*y_009UFE%SIxwDmmf^ZhYN5)ZTaGiw(+ILE>=)EQ$be1k1VM zQFaJG00Izz00bZa0SG_<0uWe|0=F-YfK|7%9HFp)I0DCbfvbJ{zx()$J1+W^k66C| z8!x~{3t+s!lDvXYC^8q+Aq~tLz&V2tWV=5P$##AOHafKmY;|fB*!RtH26L4v2hu!#FivjiTHp zM)IbX%uu$@`ve?u1Shw@aQtvx`v{LCu%1W2;|S0*uw2_7<%R$RAOHafKmY;|fB*y_ z0D+|{a9iUDR#wIl1YC7OOG`^r!OUy=SmpQPcmYQo!RmcynzXjPU*>THvT~sqM{r@O zBBERnfB*y_009U<00Izz00bZa0SL@1V8;)*=8hxa;|0pkBY3~--G6%B-+s42IaVAm z@EeR5nAaCOApijgKmY;|fB*y_009U<00JLJ;FiVpyeW%eKSd`d3aN<#ixptsS00Izz00bZa0SG_<0uX?};tAYR96`W6&-?+oEsGdO zkjpiDgpoa`cpQOCIVUJQj^G?32^O#6krD(T009U<00Izz00bZa0SG|ge;{DT54dk0 zN5EqVgh#GSKa)Q2+_}?d_nd!uXz+K|c!9T6Qs2TR)?>5k&Hg?jdxXw|ZQj;_H3Mr4M5mJ^Pm@}XR<9GSK#Xyd zsCtTMCOgzjQ!+veCP}7^q>)igO6Ua5hc|@7og3KK=3)xNG^I)&Vf|#A*qUIc@Eo+E zw4qbdwQ1IdxpT=`r#N$v6GoQAvznRKM32yyWm#;?Q*|G!DT&d^0*Pj{f;vLYG+~b< z&}fS1w||^cofxAes*h!OZBlFpF^!ZuMO4$OmO4iH0rzd1sf<+4iZv;pU!eS)!oMH= sSI3cW{_uIsFYrlU?8qMi5P$##AOHafKmY;|fB*y_uqXoa%`f2kFO;wAg#Z8m diff --git a/Verax_API_EF/Verax_API_EF/API/Program.cs b/Verax_API_EF/Verax_API_EF/API/Program.cs index b1ae889..f57c6e0 100644 --- a/Verax_API_EF/Verax_API_EF/API/Program.cs +++ b/Verax_API_EF/Verax_API_EF/API/Program.cs @@ -39,8 +39,8 @@ app.MapControllers(); using var scoped = app.Services.CreateScope(); var libraryContext = scoped.ServiceProvider.GetService(); -libraryContext.Database.EnsureCreated(); -//libraryContext.Database.Migrate(); +//libraryContext.Database.EnsureCreated(); +libraryContext.Database.Migrate(); app.Run(); diff --git a/Verax_API_EF/Verax_API_EF/API/log.txt b/Verax_API_EF/Verax_API_EF/API/log.txt new file mode 100644 index 0000000..e69de29 diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs index cad3888..d923855 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticleUser.cs @@ -1,6 +1,7 @@ using API_Services; using DbContextLib; using Entities; +using Microsoft.Extensions.Logging; using Model; namespace DbDataManager; @@ -14,11 +15,17 @@ public class DbManagerArticleUser : IArticleUserService _context = context; } - public async Task> GetAllArticleUsers() + public async Task> GetAllArticleUsers() { var entities = _context.ArticleUserSet.ToList(); - if (entities == null) return await Task.FromResult>(null); - return await Task.FromResult(entities.AsEnumerable()); + 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) 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 3a07594..1d4118f 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs @@ -1,10 +1,11 @@ using Entities; +using Model; namespace API_Services; public interface IArticleUserService { - Task> GetAllArticleUsers(); + Task> GetAllArticleUsers(); Task GetArticleUser(string pseudo); Task CreateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs new file mode 100644 index 0000000..6ef8d5f --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs @@ -0,0 +1,89 @@ +using DbContextLib; +using Entities; +using Microsoft.EntityFrameworkCore; + +namespace StubbedContextLib; + +public class StubbedContext : LibraryContext +{ + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity().HasData( + new ArticleEntity + { + Id = 1, + Title = "Breaking News Elisabeth 2 Died", + Description = "The queen of England died today at the age of 95", + DatePublished = "2022-02-06", + LectureTime = 2, + Author = "Tom Smith" + + }, + new ArticleEntity + { + Id = 2, + Title = "The new iPhone 15", + Description = "The new iPhone 15 is out and it's the best phone ever", + DatePublished = "2022-02-06", + LectureTime = 3, + Author = "Tom Smith" + + }, + new ArticleEntity + { + Id = 3, + Title = "M&M's new recipe", + Description = "M&M's new recipe is out and it's the best chocolate ever", + DatePublished = "2022-02-06", + LectureTime = 1, + Author = "M&M's Red" + } + ); + + modelBuilder.Entity().HasData( + new UserEntity + { + Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" + }, + new UserEntity + { + Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", + Role = "User" + }, + new UserEntity + { + Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" + } + ); + + modelBuilder.Entity().HasData( + new ArticleUserEntity + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 2, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 3, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 3, + UserEntityPseudo = "Sha" + }, + new ArticleUserEntity + { + ArticleEntityId = 2, + UserEntityPseudo = "Sha" + } + ); + } +} \ 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 08e8dba..8923007 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -1,10 +1,13 @@ using Entities; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; namespace DbContextLib; public class LibraryContext : DbContext { + + private static readonly StreamWriter LogFile = new StreamWriter("log.txt"); public LibraryContext() : base() { } @@ -23,6 +26,7 @@ public class LibraryContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { + optionsBuilder.LogTo( l => LogFile.WriteLine(l), LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -48,6 +52,7 @@ public class LibraryContext : DbContext .WithMany(u => u.Forms) .HasForeignKey(f => f.UserEntityPseudo); + /* modelBuilder.Entity().HasData( new ArticleEntity { @@ -155,5 +160,6 @@ public class LibraryContext : DbContext UserEntityPseudo = "Sha" } ); + */ } } \ 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 deleted file mode 100644 index 730f5f313fadef5a28a425a80dd2ed5741567cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 zcmeI)%Wvbx9S3kyltf96Jp~pjv2cPNDQL1n{Lmv=x6L7|*mNqyk{wA~>>dh(mS!z> zB~c-%xIVPNZi4nN=&{!pJ@l{Wt%nvpw5J>bBtg(-1Egpk1)4*Dq$pX`BQSy-;^s?8 z;$t|k&kQM#MY8eQf$0i<-?Dp#%S+OCq)0@%&AB8=5qhuCdpxPM5FM}3T%KB9wiuDN z?*DU@{YOfv_oTJIu|KT-cD4CLG5N{Lr-{4jpJ*c{2tWV=5P-n{lYo^{wHMdrhiS9l z7C)=pJ>I9U*oJVA?>NHN`>yGpSK7h0mEF2tZtA>J+tcsz?2?_c{IJHeL6j`NnVn84 zn|rvDRJBS@epndiShiiW)fL`uvl)kjQgiu-!$V~r6(hXEd}-dio=~;*b@`V`*Es2l zpwz)E8RXY2zkHxiS1HA5%2wK0qG;-`=yhH@Z1UQjg9E;MSZg%vW!lcON3V`Gv;3%D zsg~>a_^bLoUcS>jtkfv+s$Oeuj1p^hL{DUSQ@=|I1&IYgdxk5Hh9_OKWw@r*U%b!hPx=E$DJnQrPuNA{N;f7SM2@qt;hdW!>&Y|&p9RyEA-;#hU7J9~0T<&L6p?YZaV zd%jP=>xkEfqTdoTtFe&ROyJGF(GwdKGxumiQMF7)e(UM!BbIvFMW2g?QW_r_qt1Bw z)9OWfmpHSU?p)s07ejNn)l!tD| zvS;F_au4swso({U~PeBs7O7;)h~lg>Oz((Bcs8q9uK zElFppg9r6FvaR;8<^EXM&iofrDp!fbwV&)PJ8l=|a$H!rS)o6*65gL%tMr!HyAr)H zK>z{}fB*y_009U<00Izz00ba#bp_UCrKA<}#pm;-LZMJ97W21`d-iGJ`&;>~Vv6b| zvwukR!UO>bKmY;|fB*y_009U<00Izzz*QIcu2M=a_$Pq(`+s!pL}I^Y#kD`v0wxGR z00Izz00bZa0SG_<0uX?}R}%PXRFz&j&m=Pk*3fh~z515R9kca-8~yX1Ws9W&8@wY% z5zc7I=(?SAiqqyDV=y=`+}g|+H@zWk)9Rn|edAO(CyFX<{ydYsQGKTREM+9lxGh@d zK+LXtsaiwVPt9~`SC?`+5su4S9jj$^>CP}N-Vin=U-Yuc-x{S*7i}Y=O50}{`3But z=I3A@b*#SNg%{>FEYD@&M+xVkG_4+Q^h~#7%Boc9Q5G-T!gyfzPkBw8Ib83Wj&UN~ z4lnXOQ?$MO=&lmc=hl6$_fNZ?O`8I^Yqbrca{X!%jJLxNUbv`CWRjIP{#V%FCH66U zmu8qC009U<00Izz00bZa0SG_<0uZ<|0xOELE(Z_WiLXRxC3vcax+W_b`Qj-LQE&Vo zV^2!#uk3g1jJ?F3TzhR^00Izz00bZa0SG_<0uX=z1QrYAwe(*}Q+ThWAc zE&bF}1+CFByzpJaX&JU{jOVo3Uz|yLOG!xSw07-#8M>mN>P7UgFYs2LsXjd}Mb&Em z@%QxDLd(7x3HDFZFZT_<#|?StO>YQP~^*kH-K0^Zyt<|L-sCH|zl|V1fVyAOHafKmY;|fB*y_009Vm zy9IW)Gdr2&o}jDk`@Ah2-hI{>o`{R*5O!R5;QVlV`|RwD?jd-?Y$QJlmm zMz-n6fnJQHpF&|tjKU;FA;rF+>;E51>~r>*{foWN-v4$tGHMS22tWV=5P$##AOHaf zKmY;|xXJ=gC^5;q2Ot*nul@HHqg0=0%KM-T1=tsK2f%0S + + + + + + + \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml b/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF/.idea/.idea.Verax_API_EF.dir/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 739f157fbc2b97f02ee9f5bf795c0adf347405e6 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 17:22:44 +0100 Subject: [PATCH 02/10] =?UTF-8?q?fix=20bd=20+=20pb=20Tests=20Unit=20?= =?UTF-8?q?=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/.idea.Verax_API_EF/.idea/vcs.xml | 1 + .../API/Entity_FrameWork.Article.db | Bin 45056 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 0 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | 0 Verax_API_EF/Verax_API_EF/API/Program.cs | 2 +- .../Verax_API_EF/DbContextLib/Class1.cs | 89 ------------------ .../DbContextLib/LibraryContext.cs | 1 - ...ner.cs => 20240312155559_mrg1.Designer.cs} | 68 +++++-------- ...1132206_mrg1.cs => 20240312155559_mrg1.cs} | 63 ++++++------- .../Migrations/LibraryContextModelSnapshot.cs | 66 +++++-------- 10 files changed, 83 insertions(+), 207 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm create mode 100644 Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal delete mode 100644 Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs rename Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/{20240311132206_mrg1.Designer.cs => 20240312155559_mrg1.Designer.cs} (86%) rename Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/{20240311132206_mrg1.cs => 20240312155559_mrg1.cs} (75%) 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 6c0b863..64713b8 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,6 +1,7 @@ + \ No newline at end of file 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 3cd9f2fccd0232de535751d05a4a7a8a6200ad97..175a9e3bfb33888228bcc9beffeb72eedaac90e5 100644 GIT binary patch delta 1064 zcmb_Z&rcIU6yDisJGAyWIu<0Ov9@@6Gq)eKWJk&&=T4 zwMf3BUO4O|ZCu4FJajF%5^|%fPF#0>7kbDO()PHxMiW7Bof8vLpO%`%sP(DG0|yT+b~UC&wV2iw(c-GnW>y01Ww}p3I%}jkAVdiU(XBqZC;E{< zRjHZj9HG~wQOoeU^y2?XDoo>-^R!bePTGypXCt&-4$Ia|39UCl?+adfS3X2v$#cz3 z4u{g=L!9wVX?LT1vWlyKdvCgD&kTWzJ?+CA96{Am^|1s=9I z*nzE5mHG}`P9FP^88@ao-8HhGgAI5DQ_v0mQdK1YZnP7+nry(wY=kZ*>v1b4G?F}p zn|MN}lZ{wKgsREfYKh}GJFIZ93*X=~e1H{(e+Fkote`}0q!6_W*uzf4aT~#I6dz1s zy%0+eT;fIS6}xh&cqZ#ISYGNZUtkm7!poBX`cpV(w;(nX!@wpTFY(xm%5YvlSP>1m zvY%z0X`9XT8kU)#CD240awE*-?UD_75Y`RYj3cj`!?F!|5pU9oHqoThjbSKojA#K0 zjA{rf8nA20@Gm^dC%gav delta 848 zcmbVJ-%Auh9N*cQb#`X&{GO7XddjVvh?|<;8U{&J#9Bw-#c7~KEY{tFX$sdtMIc^A zy%Z$#7~xw!)kF6W^b&|c5s?)6V3ha}!AWKhMl^f3M$lU?^Zmi+^O?_QW_A|OuBrFq z$e1@z)pI(kRKJDC;YZ=&ki)i&@A?Q`rlZB0$os0UX-=d4F;u7D=X^ zY~DM2C7W}n^5gmI$xN^_#3j0~Bbl+x)SzhvOUrDx{>EB%!C*9+v{4};p3#!YMH7u$5dn#_nc-Lj;ZJ=dVqXe@?qv;5eF$!wq-6egzh=i&&9Y2{nQIo>HU ztU2Mk7)Yhv1Kp|qoNUFQc8i=mm~aQHzj zO(c39r>C#D9sdP?hMjH};TTpFD8VOKk-xMAjRwXs6ubyFR5=8Xsfki*Z>ULu*RTjz z;V3jo0teEf>5BO1#YrEL%?m@45!R|67-1uNpmHG6T7y1RU`yL8lUR9Q0dVZo{| zBNG)j>k9mYAFwI?tQTv{H(-}T1X2868jyJi4gz2(`IK!aN%%XMKf@!H*cGe~`wcXN B&&vP+ diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r3(); -//libraryContext.Database.EnsureCreated(); +//libraryContext.Database.EnsureCreated(); libraryContext.Database.Migrate(); app.Run(); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs deleted file mode 100644 index 6ef8d5f..0000000 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Class1.cs +++ /dev/null @@ -1,89 +0,0 @@ -using DbContextLib; -using Entities; -using Microsoft.EntityFrameworkCore; - -namespace StubbedContextLib; - -public class StubbedContext : LibraryContext -{ - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - modelBuilder.Entity().HasData( - new ArticleEntity - { - Id = 1, - Title = "Breaking News Elisabeth 2 Died", - Description = "The queen of England died today at the age of 95", - DatePublished = "2022-02-06", - LectureTime = 2, - Author = "Tom Smith" - - }, - new ArticleEntity - { - Id = 2, - Title = "The new iPhone 15", - Description = "The new iPhone 15 is out and it's the best phone ever", - DatePublished = "2022-02-06", - LectureTime = 3, - Author = "Tom Smith" - - }, - new ArticleEntity - { - Id = 3, - Title = "M&M's new recipe", - Description = "M&M's new recipe is out and it's the best chocolate ever", - DatePublished = "2022-02-06", - LectureTime = 1, - Author = "M&M's Red" - } - ); - - modelBuilder.Entity().HasData( - new UserEntity - { - Nom = "Fages", Prenom = "Tony", Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Role = "Admin" - }, - new UserEntity - { - Nom = "Smith", Prenom = "Tom", Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", - Role = "User" - }, - new UserEntity - { - Nom = "M&M's", Prenom = "Red", Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Role = "Modérator" - } - ); - - modelBuilder.Entity().HasData( - new ArticleUserEntity - { - ArticleEntityId = 1, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 2, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 3, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 3, - UserEntityPseudo = "Sha" - }, - new ArticleUserEntity - { - ArticleEntityId = 2, - UserEntityPseudo = "Sha" - } - ); - } -} \ 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 8923007..053406d 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -51,7 +51,6 @@ public class LibraryContext : DbContext .HasOne(f => f.User) .WithMany(u => u.Forms) .HasForeignKey(f => f.UserEntityPseudo); - /* modelBuilder.Entity().HasData( new ArticleEntity diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs similarity index 86% rename from Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs index 6c21748..850cf0c 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.Designer.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace DbContextLib.Migrations { [DbContext(typeof(LibraryContext))] - [Migration("20240311132206_mrg1")] + [Migration("20240312155559_mrg1")] partial class mrg1 { /// @@ -83,12 +83,12 @@ namespace DbContextLib.Migrations b.Property("ArticleEntityId") .HasColumnType("INTEGER"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); + b.Property("UserEntityPseudo") + .HasColumnType("TEXT"); - b.HasKey("ArticleEntityId", "UserEntityId"); + b.HasKey("ArticleEntityId", "UserEntityPseudo"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("ArticleUserSet"); @@ -96,27 +96,27 @@ namespace DbContextLib.Migrations new { ArticleEntityId = 1L, - UserEntityId = 1L + UserEntityPseudo = "TonyF" }, new { ArticleEntityId = 2L, - UserEntityId = 2L + UserEntityPseudo = "NoaSil" }, new { ArticleEntityId = 3L, - UserEntityId = 3L + UserEntityPseudo = "Sha" }, new { ArticleEntityId = 3L, - UserEntityId = 1L + UserEntityPseudo = "RedM" }, new { ArticleEntityId = 2L, - UserEntityId = 3L + UserEntityPseudo = "TomS" }); }); @@ -134,20 +134,17 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") + b.Property("Theme") .IsRequired() .HasColumnType("TEXT"); - b.Property("Theme") + b.Property("UserEntityPseudo") .IsRequired() .HasColumnType("TEXT"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); - b.HasKey("Id"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("FormSet"); @@ -157,35 +154,31 @@ namespace DbContextLib.Migrations Id = 1L, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", - Pseudo = "Form 1", Theme = "", - UserEntityId = 1L + UserEntityPseudo = "Sha" }, new { Id = 2L, DatePublication = "Form 2 Description", Link = "hhtp://form2.com", - Pseudo = "Form 2", Theme = "", - UserEntityId = 2L + UserEntityPseudo = "Sha" }, new { Id = 3L, DatePublication = "Form 3 Description", Link = "hhtp://form3.com", - Pseudo = "Form 3", Theme = "", - UserEntityId = 3L + UserEntityPseudo = "Sha" }); }); modelBuilder.Entity("Entities.UserEntity", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + b.Property("Pseudo") + .HasColumnType("TEXT"); b.Property("Mail") .IsRequired() @@ -203,67 +196,58 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - b.Property("Role") .IsRequired() .HasColumnType("TEXT"); - b.HasKey("Id"); + b.HasKey("Pseudo"); b.ToTable("UserSet"); b.HasData( new { - Id = 1L, + Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Nom = "Fages", Prenom = "Tony", - Pseudo = "TonyF", Role = "Admin" }, new { - Id = 2L, + Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Nom = "Smith", Prenom = "Tom", - Pseudo = "TomS", Role = "User" }, new { - Id = 3L, + Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Nom = "M&M's", Prenom = "Red", - Pseudo = "RedM", Role = "Modérator" }, new { - Id = 4L, + Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Nom = "Cascarra", Prenom = "Cascarra", - Pseudo = "Sha", Role = "Admin" }, new { - Id = 5L, + Pseudo = "NoaSil", Mail = "", Mdp = "1234", Nom = "Sillard", Prenom = "Noa", - Pseudo = "NoaSil", Role = "Admin" }); }); @@ -278,7 +262,7 @@ namespace DbContextLib.Migrations b.HasOne("Entities.UserEntity", null) .WithMany() - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); @@ -287,7 +271,7 @@ namespace DbContextLib.Migrations { b.HasOne("Entities.UserEntity", "User") .WithMany("Forms") - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs similarity index 75% rename from Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs rename to Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs index b9278d6..df6fd44 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240311132206_mrg1.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/20240312155559_mrg1.cs @@ -33,8 +33,6 @@ namespace DbContextLib.Migrations name: "UserSet", columns: table => new { - Id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), Pseudo = table.Column(type: "TEXT", nullable: false), Mdp = table.Column(type: "TEXT", nullable: false), Nom = table.Column(type: "TEXT", nullable: false), @@ -44,19 +42,19 @@ namespace DbContextLib.Migrations }, constraints: table => { - table.PrimaryKey("PK_UserSet", x => x.Id); + table.PrimaryKey("PK_UserSet", x => x.Pseudo); }); migrationBuilder.CreateTable( name: "ArticleUserSet", columns: table => new { - UserEntityId = table.Column(type: "INTEGER", nullable: false), + UserEntityPseudo = table.Column(type: "TEXT", nullable: false), ArticleEntityId = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_ArticleUserSet", x => new { x.ArticleEntityId, x.UserEntityId }); + table.PrimaryKey("PK_ArticleUserSet", x => new { x.ArticleEntityId, x.UserEntityPseudo }); table.ForeignKey( name: "FK_ArticleUserSet_ArticleSet_ArticleEntityId", column: x => x.ArticleEntityId, @@ -64,10 +62,10 @@ namespace DbContextLib.Migrations principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_ArticleUserSet_UserSet_UserEntityId", - column: x => x.UserEntityId, + name: "FK_ArticleUserSet_UserSet_UserEntityPseudo", + column: x => x.UserEntityPseudo, principalTable: "UserSet", - principalColumn: "Id", + principalColumn: "Pseudo", onDelete: ReferentialAction.Cascade); }); @@ -80,17 +78,16 @@ namespace DbContextLib.Migrations Theme = table.Column(type: "TEXT", nullable: false), DatePublication = table.Column(type: "TEXT", nullable: false), Link = table.Column(type: "TEXT", nullable: false), - Pseudo = table.Column(type: "TEXT", nullable: false), - UserEntityId = table.Column(type: "INTEGER", nullable: false) + UserEntityPseudo = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_FormSet", x => x.Id); table.ForeignKey( - name: "FK_FormSet_UserSet_UserEntityId", - column: x => x.UserEntityId, + name: "FK_FormSet_UserSet_UserEntityPseudo", + column: x => x.UserEntityPseudo, principalTable: "UserSet", - principalColumn: "Id", + principalColumn: "Pseudo", onDelete: ReferentialAction.Cascade); }); @@ -106,47 +103,47 @@ namespace DbContextLib.Migrations migrationBuilder.InsertData( table: "UserSet", - columns: new[] { "Id", "Mail", "Mdp", "Nom", "Prenom", "Pseudo", "Role" }, + columns: new[] { "Pseudo", "Mail", "Mdp", "Nom", "Prenom", "Role" }, values: new object[,] { - { 1L, "tony@gmail.com", "1234", "Fages", "Tony", "TonyF", "Admin" }, - { 2L, "tom@mail.com", "1234", "Smith", "Tom", "TomS", "User" }, - { 3L, "M&M#mail.com", "1234", "M&M's", "Red", "RedM", "Modérator" }, - { 4L, "ShaCasca@gmail.com", "1234", "Cascarra", "Cascarra", "Sha", "Admin" }, - { 5L, "", "1234", "Sillard", "Noa", "NoaSil", "Admin" } + { "NoaSil", "", "1234", "Sillard", "Noa", "Admin" }, + { "RedM", "M&M#mail.com", "1234", "M&M's", "Red", "Modérator" }, + { "Sha", "ShaCasca@gmail.com", "1234", "Cascarra", "Cascarra", "Admin" }, + { "TomS", "tom@mail.com", "1234", "Smith", "Tom", "User" }, + { "TonyF", "tony@gmail.com", "1234", "Fages", "Tony", "Admin" } }); migrationBuilder.InsertData( table: "ArticleUserSet", - columns: new[] { "ArticleEntityId", "UserEntityId" }, + columns: new[] { "ArticleEntityId", "UserEntityPseudo" }, values: new object[,] { - { 1L, 1L }, - { 2L, 2L }, - { 2L, 3L }, - { 3L, 1L }, - { 3L, 3L } + { 1L, "TonyF" }, + { 2L, "NoaSil" }, + { 2L, "TomS" }, + { 3L, "RedM" }, + { 3L, "Sha" } }); migrationBuilder.InsertData( table: "FormSet", - columns: new[] { "Id", "DatePublication", "Link", "Pseudo", "Theme", "UserEntityId" }, + columns: new[] { "Id", "DatePublication", "Link", "Theme", "UserEntityPseudo" }, values: new object[,] { - { 1L, "Form 1 Description", "hhtp://form1.com", "Form 1", "", 1L }, - { 2L, "Form 2 Description", "hhtp://form2.com", "Form 2", "", 2L }, - { 3L, "Form 3 Description", "hhtp://form3.com", "Form 3", "", 3L } + { 1L, "Form 1 Description", "hhtp://form1.com", "", "Sha" }, + { 2L, "Form 2 Description", "hhtp://form2.com", "", "Sha" }, + { 3L, "Form 3 Description", "hhtp://form3.com", "", "Sha" } }); migrationBuilder.CreateIndex( - name: "IX_ArticleUserSet_UserEntityId", + name: "IX_ArticleUserSet_UserEntityPseudo", table: "ArticleUserSet", - column: "UserEntityId"); + column: "UserEntityPseudo"); migrationBuilder.CreateIndex( - name: "IX_FormSet_UserEntityId", + name: "IX_FormSet_UserEntityPseudo", table: "FormSet", - column: "UserEntityId"); + column: "UserEntityPseudo"); } /// diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs index 4e992dc..8cff281 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/Migrations/LibraryContextModelSnapshot.cs @@ -80,12 +80,12 @@ namespace DbContextLib.Migrations b.Property("ArticleEntityId") .HasColumnType("INTEGER"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); + b.Property("UserEntityPseudo") + .HasColumnType("TEXT"); - b.HasKey("ArticleEntityId", "UserEntityId"); + b.HasKey("ArticleEntityId", "UserEntityPseudo"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("ArticleUserSet"); @@ -93,27 +93,27 @@ namespace DbContextLib.Migrations new { ArticleEntityId = 1L, - UserEntityId = 1L + UserEntityPseudo = "TonyF" }, new { ArticleEntityId = 2L, - UserEntityId = 2L + UserEntityPseudo = "NoaSil" }, new { ArticleEntityId = 3L, - UserEntityId = 3L + UserEntityPseudo = "Sha" }, new { ArticleEntityId = 3L, - UserEntityId = 1L + UserEntityPseudo = "RedM" }, new { ArticleEntityId = 2L, - UserEntityId = 3L + UserEntityPseudo = "TomS" }); }); @@ -131,20 +131,17 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") + b.Property("Theme") .IsRequired() .HasColumnType("TEXT"); - b.Property("Theme") + b.Property("UserEntityPseudo") .IsRequired() .HasColumnType("TEXT"); - b.Property("UserEntityId") - .HasColumnType("INTEGER"); - b.HasKey("Id"); - b.HasIndex("UserEntityId"); + b.HasIndex("UserEntityPseudo"); b.ToTable("FormSet"); @@ -154,35 +151,31 @@ namespace DbContextLib.Migrations Id = 1L, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", - Pseudo = "Form 1", Theme = "", - UserEntityId = 1L + UserEntityPseudo = "Sha" }, new { Id = 2L, DatePublication = "Form 2 Description", Link = "hhtp://form2.com", - Pseudo = "Form 2", Theme = "", - UserEntityId = 2L + UserEntityPseudo = "Sha" }, new { Id = 3L, DatePublication = "Form 3 Description", Link = "hhtp://form3.com", - Pseudo = "Form 3", Theme = "", - UserEntityId = 3L + UserEntityPseudo = "Sha" }); }); modelBuilder.Entity("Entities.UserEntity", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + b.Property("Pseudo") + .HasColumnType("TEXT"); b.Property("Mail") .IsRequired() @@ -200,67 +193,58 @@ namespace DbContextLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - b.Property("Role") .IsRequired() .HasColumnType("TEXT"); - b.HasKey("Id"); + b.HasKey("Pseudo"); b.ToTable("UserSet"); b.HasData( new { - Id = 1L, + Pseudo = "TonyF", Mail = "tony@gmail.com", Mdp = "1234", Nom = "Fages", Prenom = "Tony", - Pseudo = "TonyF", Role = "Admin" }, new { - Id = 2L, + Pseudo = "TomS", Mail = "tom@mail.com", Mdp = "1234", Nom = "Smith", Prenom = "Tom", - Pseudo = "TomS", Role = "User" }, new { - Id = 3L, + Pseudo = "RedM", Mail = "M&M#mail.com", Mdp = "1234", Nom = "M&M's", Prenom = "Red", - Pseudo = "RedM", Role = "Modérator" }, new { - Id = 4L, + Pseudo = "Sha", Mail = "ShaCasca@gmail.com", Mdp = "1234", Nom = "Cascarra", Prenom = "Cascarra", - Pseudo = "Sha", Role = "Admin" }, new { - Id = 5L, + Pseudo = "NoaSil", Mail = "", Mdp = "1234", Nom = "Sillard", Prenom = "Noa", - Pseudo = "NoaSil", Role = "Admin" }); }); @@ -275,7 +259,7 @@ namespace DbContextLib.Migrations b.HasOne("Entities.UserEntity", null) .WithMany() - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); @@ -284,7 +268,7 @@ namespace DbContextLib.Migrations { b.HasOne("Entities.UserEntity", "User") .WithMany("Forms") - .HasForeignKey("UserEntityId") + .HasForeignKey("UserEntityPseudo") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); From 43c30f52773da65a5e7e8f179f0b3c1da10f151b Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 20:59:41 +0100 Subject: [PATCH 03/10] 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 From 0ccaeaeda0a349ab3e6dd10e7181a886c1887b6f Mon Sep 17 00:00:00 2001 From: tonyfages Date: Tue, 12 Mar 2024 21:11:02 +0100 Subject: [PATCH 04/10] try to implement unit of _logger; - public ArticleController(IArticleService articleService, ILogger logger) + public ArticleController(IDataManager dataManager, ILogger logger) { - this._articleService = articleService; + this._dataManager = dataManager; this._logger = logger; } @@ -26,7 +27,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticles), index, count, orderCriterium); try { - var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); + var result = (await _dataManager.ArticleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO()); if (result == null) { return NotFound(); @@ -46,7 +47,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleById), id); try { - var result = (await _articleService.GetArticleById(id)).ToDTO(); + var result = (await _dataManager.ArticleService.GetArticleById(id)).ToDTO(); if (result == null) { return NotFound($"Article ID {id} not found"); @@ -68,7 +69,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateArticle), article); try { - var result = (await _articleService.CreateArticle(article)).ToDTO(); + var result = (await _dataManager.ArticleService.CreateArticle(article)).ToDTO(); if (result == null) { return BadRequest($"Article not created"); @@ -88,7 +89,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticle), id); try { - var result = await _articleService.DeleteArticle(id); + var result = await _dataManager.ArticleService.DeleteArticle(id); if (result == null) { return NotFound($"Article ID {id} not found"); @@ -108,7 +109,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticle), id, a); try { - var result = await _articleService.UpdateArticle(id, a); + var result = await _dataManager.ArticleService.UpdateArticle(id, a); if (result == false) { return NotFound($"Article ID {id} not found"); diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index 1e793a9..6b46b64 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -12,12 +12,13 @@ namespace API.Controllers [ApiController] public class FormulaireController : ControllerBase { - private readonly IFormulaireService _form; + //private readonly IFormulaireService _form; + private readonly IDataManager _dataManager; private readonly ILogger _logger; - public FormulaireController(IFormulaireService iform, ILogger logger) + public FormulaireController(IDataManager dataManager, ILogger logger) { - this._form = iform; + this._dataManager = dataManager; this._logger = logger; } @@ -27,7 +28,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllForm), index, count, orderCriteria); try { - var result = (await _form.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); + var result = (await _dataManager.FormulaireService.GetAllForm(index, count, orderCriteria)).Select(f => f.ToDTO()); if (result == null) { return NotFound($"No form found"); @@ -48,7 +49,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetById), id); try { - var result = (await _form.GetById(id)).ToDTO(); + var result = (await _dataManager.FormulaireService.GetById(id)).ToDTO(); if (result == null) { return NotFound($"form ID {id} not found"); @@ -70,7 +71,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(CreateForm), formulaire); try { - var result = (await _form.CreateForm(formulaire)).ToDTO(); + var result = (await _dataManager.FormulaireService.CreateForm(formulaire)).ToDTO(); if (result == null) { return BadRequest($"Form Id {formulaire.Id} already exists"); @@ -90,7 +91,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteForm), id); try { - var result = await _form.DeleteForm(id); + var result = await _dataManager.FormulaireService.DeleteForm(id); if (result == false) { return NotFound($"Form Id {id} not found"); @@ -111,7 +112,7 @@ namespace API.Controllers try { - var result = await _form.UpdateForm(id, formulaire); + var result = await _dataManager.FormulaireService.UpdateForm(id, formulaire); if (result == false) { return NotFound($"form Id {id} not found"); 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 547c1af..adb77db 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -12,12 +12,13 @@ namespace API.Controllers [ApiController] public class UserController : ControllerBase { - private readonly IUserService _us; + //private readonly IUserService _us; + private readonly IDataManager _dataManager; private readonly ILogger _logger; - public UserController(IUserService us, ILogger logger) + public UserController(IDataManager dataManager, ILogger logger) { - this._us = us; this._logger = logger; + this._dataManager = dataManager; } [HttpGet("/users")] @@ -26,7 +27,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAll), index, count, orderCriteria); try { - var result = (await _us.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); + var result = (await _dataManager.UserService.GetAll(index, count, orderCriteria)).Select(u => u.ToDTO()); if (result == null) { return NotFound($"No user found with the given parameters"); @@ -46,7 +47,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetByPseudo), pseudo); try { - var result = (await _us.GetByPseudo(pseudo)).ToDTO(); + var result = (await _dataManager.UserService.GetByPseudo(pseudo)).ToDTO(); if (result == null) { return NotFound($"Psuedo {pseudo} not found"); @@ -67,7 +68,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Create), user); try { - var result = await _us.Create(user); + var result = await _dataManager.UserService.Create(user); if (result == false) { return BadRequest($"User {user.Pseudo} already exists"); @@ -89,7 +90,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Update), user, pseudo); try { - var result = await _us.Update(user,pseudo); + var result = await _dataManager.UserService.Update(user,pseudo); if (result == false) { return NotFound(); @@ -110,7 +111,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Delete), pseudo); try { - var result = await _us.Delete(pseudo); + var result = await _dataManager.UserService.Delete(pseudo); if (result == false) { return NotFound(); @@ -130,7 +131,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetAllArticleUsers), ""); try { - var result = (await _us.GetAllArticleUsers()).Select(u => u.ToDTO()); + var result = (await _dataManager.UserService.GetAllArticleUsers()).Select(u => u.ToDTO()); if (result == null) { return NoContent(); @@ -150,7 +151,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(GetArticleUser), pseudo); try { - var result = (await _us.GetArticleUser(pseudo)).Select(a => a.ToDTO()); + var result = (await _dataManager.UserService.GetArticleUser(pseudo)).Select(a => a.ToDTO()); if (result == null) { return NoContent(); @@ -171,7 +172,7 @@ namespace API.Controllers try { Console.WriteLine(articleUser); - var result = await _us.CreateArticleUser(articleUser); + var result = await _dataManager.UserService.CreateArticleUser(articleUser); if (result == null) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} already exists"); @@ -191,7 +192,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); try { - var result = await _us.DeleteArticleUser(pseudo); + var result = await _dataManager.UserService.DeleteArticleUser(pseudo); if (!result) { return BadRequest($"ArticleUser {pseudo} does not exist"); @@ -211,7 +212,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); try { - var result = await _us.UpdateArticleUser(articleUser); + var result = await _dataManager.UserService.UpdateArticleUser(articleUser); if (!result) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); diff --git a/Verax_API_EF/Verax_API_EF/API/Program.cs b/Verax_API_EF/Verax_API_EF/API/Program.cs index 03613b2..06fffd8 100644 --- a/Verax_API_EF/Verax_API_EF/API/Program.cs +++ b/Verax_API_EF/Verax_API_EF/API/Program.cs @@ -2,6 +2,7 @@ using API_Services; using DbContextLib; using DbDataManager; using Microsoft.EntityFrameworkCore; +using Model; using StubbedContextLib; var builder = WebApplication.CreateBuilder(args); @@ -20,9 +21,9 @@ builder.Services.AddDbContext(options => options.UseSqlite("Data Source=Entity_FrameWork.Article.db"); }); -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_Services/IDataManager.cs b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs index 846f924..d5abbc8 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IDataManager.cs @@ -3,8 +3,11 @@ using API_Services; public interface IDataManager { + + IArticleService ArticleService { get; } IUserService UserService { get; } IFormulaireService FormulaireService { get; } -} \ No newline at end of file +} + From 7487c4f8333e0f71f4dfc5c3827874bafb13bf7f Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:12:31 +0100 Subject: [PATCH 05/10] tests requete --- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 0 -> 90672 bytes .../API_Tests_Console.csproj | 15 + .../API_Tests_Console/Tests_Console.cs | 427 ++++++++++++++++++ Verax_API_EF/Verax_API_EF/Verax_API_EF.sln | 6 + 6 files changed, 448 insertions(+) create mode 100644 Verax_API_EF/Verax_API_EF/API_Tests_Console/API_Tests_Console.csproj create mode 100644 Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs 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 05efb1168e998b01e91a3dabc6673147af420471..c1874736901a316a2aff14cf158044ead4293130 100644 GIT binary patch delta 98 zcmZo@U~Xt&-oR+U&p(xcneQ9}|0{kYzH@wAHwy}^;1iP+6&2+W4M{C7LB^BM*&SzL sU|JIBme*a delta 73 zcmZo@U~Xt&-oR+U%fP_E%y*7~e=5Hb-?`0#0tfgepR+s8lF7)$d4QPdTe8!O?bEDhzbjd=>s9QZ%d=iTlRLn^ zl~naWqrd=U?tdfz6`okn849u*WF;#QV`GEFVB%~*Haid_(;PrPClGT3F`T`zQPPi@ znSpI%<8LNb9tJ)JfsKtnnV5MQ_(3Aff(#;HT8KduL~}ASumH{FWZ>G^_?3xSm_ZCA Q%FYCI69)tL#zsLI0LooM-~a#s delta 80 zcmZo@U}|V!;+1%$%K!t66CX;8TChv7nNGgVi7p`mlYpuI4+Il)WHx?a^V|5L$PfUx C1r-GV diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..87148cb4f6d60c60e97366054b7fc2a8de809eaf 100644 GIT binary patch literal 90672 zcmeI*e`u6-9KiACx#xaw=hwWR&S~O?VBE5X%jW|*x8fbedt1S-!o5K{%F>oPXqEJ|G>}1v4H=R zce+*t#9mDoTQspn{iqQ<5I_I{1Q0*~0R#|0009ILK%i&>_ZV(1P+u2ZZY2}d^Qs?? zrJ~7rM>=k`x3;D`7R;TyL4GlBPSi?-TO;zQ>+^#fh8Wz?Ke#SGxPFMi_5Fh@L6Cr>A0tg_000IagfB*srAb`OCA>c8Bx{NRw z^4LN?JLIz`8*y-{<=An7bq$FX8@g`nP>BQ%@vA2OkpJ*N009ILKmY**5I_I{1Q0*~ zfpQh7a2Qi{m6i~WrJWOWqefqvOvj^bG4)=aR6!lVORKi6-?eA|=crjDRo zFFor<009ILKmY**5I_I{1P~}$fsxh`EX$V$jINHrbhG zg6F!bcRjWEh4a)A43Cvj2q1s}0tg_000IagfB*srl(@jaIs(@})e#&$Hog5o@AT`c zj=-?%2u_vw8L~VC5I_I{1Q0*~0R#|0009KbO<<&T1ha=*M_{@JEf^SP9l^_M4n6r- z$E0Uf9f2W!R{IfLlTSPlKmY**5I_I{1Q0*~0R#|0pd1Bq1p}_3>j+fe!TdgjGhW;GXe-8fB*srAb<*)z$DpB@HR6T zTv;25Ct{DpQnGWv5cvYqA~bm4!Giq=&g@v1Zx+6II;I&-;RR)2&f|{&wGqjBY*$` z2q1s}0tg_000IagAo~P(Wfs9L>ImElX=hJ*_n`~TeXlletFRXJ7-~NPw{U6VC-Je^ zELMve`GyAq2q1s}0tg_000IagfB*vHQDBPOBSOLqhE{gOV=bvnQhr-3wX`J>Z=db* zgv^jRE7WAQZ&_a7Fz>$Qk&UsGdY6{JOExAV@wPcpE0Gyp>-3mrD0r9IWF^9Ca5xc9 zx5_tZE3w2Lxi%F`-fwt<=Co<`A^CrHHEvlX6^$g55&KzwoOyZE{B@4({55N0Esg5$ z8fP}vrqr96jWg`|8?Bb3`;(Ehm8{l1Rp!)SAhgPggyU_Q1;yLiBFPr{L1w}7a(d)% zzQ4eqCjw`zRx7NE3*6#_CQgW};-WY&exS?1c)ayFCj<~c009ILKmY**5I_Kd@gv|e zguc@4GeUYMhT-xWrhJtMJMEr>>H`%+aQKWWUp7=A&%PjE;K#*v`y!ohZ&LXJE>T0i z!1%d6I1>aAKmY**5I_I{1Q0*~fm;aNNxnd)j^NnW*Qef5bGcIG3%F#8K!3IX`2x4N zefSCi1Q0*~0R#|0009ILKmdVK5O9w&Um#yckUYI8{>lRjZx4vg{rLi~(_f$zE-q_8 z009ILKmY**5I_I{1P~ZIf&V&RK%U9u!TJkKlYIw5a_d3WcOcX3AiD*j-R)p3`U`lK zs@-?+O3&dh>nfgqKihY(Q{@X>5NE}A;-u&tJAGzG009ILKmY**5I_I{1Q0*~fl&*% z-A2$S0|_3N5!B_g;dSOZ2^d}@*JQxqcNkTAwyA)_s~aI-rU`*OrcWK$jtkV>c-1$p0dAjD z59)>t3b_1E-P8@$U(lI(=}^4~jY_9pr8{zQ0iV;?9~Y>Q3(MCLEcmVJ-gQmg3$t;7 zu`v>j>n$zJFOqFhBa>^v5esZ}-cx0hgeTpxBp+`4B(=0R#|0009ILKmY**5GbZV zzK%dn>Muea!9&rjj)iX>?DC6qGA@v-Bgj+{P)AVA>&9FNAb_#4WvWi + + + Exe + net8.0 + enable + enable + + + + + + + + diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs new file mode 100644 index 0000000..8431299 --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -0,0 +1,427 @@ +// See https://aka.ms/new-console-template for more information + +using System.Text; +using System.Text.Json; +using Entities; +using Model; + +class Tests_Console +{ + static readonly HttpClient client = new HttpClient(); + + + static async Task Main(string[] args) + { + await TestUser(); + //await TestFormulaire(); + //await TestArticle(); + } + + private static async Task TestFormulaire() + { + await TestFormulaireGetAll(); + await TestFormulaireGetId(); + await TestFormulaireCreate(); + await TestFormulaireDelete(); + await TestFormulaireUpdate(); + } + + private static async Task TestUser() + { + //await TestUserGetAll(); + //await TestUserGetId(); + //await TestUserCreate(); + //await TestUserDelete(); + //await TestUserUpdate(); + //await TestGetAllArticleUser(); + //await TestGetArticleByUser(); + //await TestCreateArticleUser(); + //await TestDeleteArticleUser(); + await TestUpdateArticleUser(); + } + + + static async Task TestArticle() + { + await TestArticleGetId(); + await TestArticleCreate(); + await TestArticleGetAll(); + await TestArticleDelete(); + await TestArticleUpdate(); + } + + static async Task TestArticleGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/api/Article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/article/1"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleCreate() + { + try + { + var article = new Article() + { + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 0 + }; + var json = JsonSerializer.Serialize(article); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/article/4"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestArticleUpdate() + { + try + { + var article = new Article() + { + Title = "Louis", + Description = "Je", + Author = "T'", + DatePublished = "aime", + LectureTime = 0 + }; + var json = JsonSerializer.Serialize(article); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/article/1", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/formulaires"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/formulaire/2"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireCreate() + { + try + { + var formulaire = new Formulaire() + { + Theme = "Test", + Date = "Test", + Lien = "Test", + UserPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(formulaire); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/formulaire", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/formulaire/5"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestFormulaireUpdate() + { + try + { + var formulaire = new Formulaire() + { + Theme = "J'", + Date = "aime", + Lien = "Les", + UserPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(formulaire); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/formulaire/4", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserGetAll() + { + try + { + var response = await client.GetAsync("http://localhost:5052/users"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserGetId() + { + try + { + var response = await client.GetAsync("http://localhost:5052/user/Sha"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserCreate() + { + try + { + var user = new User() + { + Pseudo = "J", + Nom = "'", + Prenom = "aime", + Mail = "les", + Mdp = "pieds", + Role = "Admin" + }; + var json = JsonSerializer.Serialize(user); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/user", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserDelete() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/user/J"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUserUpdate() + { + try + { + var user = new User() + { + Pseudo = "Sha", + Nom = "J'", + Prenom = "aime", + Mail = "les", + Mdp = "pieds", + Role = "Admin" + }; + var json = JsonSerializer.Serialize(user); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/user/Sha", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestGetAllArticleUser() + { + try + { + var response = await client.GetAsync("http://localhost:5052/ArticleUsers"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestGetArticleByUser() + { + try + { + var response = await client.GetAsync("http://localhost:5052/user/Sha/article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestCreateArticleUser() + { + try + { + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(articleUser); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PostAsync("http://localhost:5052/user/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestDeleteArticleUser() + { + try + { + var response = await client.DeleteAsync("http://localhost:5052/user/Sha/article"); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + + static async Task TestUpdateArticleUser() + { + try + { + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Sha" + }; + var json = JsonSerializer.Serialize(articleUser); + var data = new StringContent(json, Encoding.UTF8, "application/json"); + var response = await client.PutAsync("http://localhost:5052/user/Sha/article", data); + response.EnsureSuccessStatusCode(); + var responseBody = await response.Content.ReadAsStringAsync(); + Console.WriteLine(responseBody); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + } + +} \ No newline at end of file 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 ce77cf8..473c412 100644 --- a/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln +++ b/Verax_API_EF/Verax_API_EF/Verax_API_EF.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unit_Test_EF", "Unit_Test_E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Unit_Test", "API_Unit_Test\API_Unit_Test.csproj", "{B3B9C0F5-98A3-438B-A22A-ECFF33DA8F23}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "API_Tests_Console", "API_Tests_Console\API_Tests_Console.csproj", "{EEB45245-5B65-4C99-A2B4-942991AE5F1A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -81,6 +83,10 @@ Global {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 + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EEB45245-5B65-4C99-A2B4-942991AE5F1A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 15a5228d19e7d4513377904bf1dea394c2e93f35 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:15:31 +0100 Subject: [PATCH 06/10] =?UTF-8?q?Tests=20Requete=20API=20=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Verax_API_EF/API_Tests_Console/Tests_Console.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs index 8431299..e8b8c7d 100644 --- a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -12,18 +12,18 @@ class Tests_Console static async Task Main(string[] args) { - await TestUser(); + //await TestUser(); //await TestFormulaire(); //await TestArticle(); } private static async Task TestFormulaire() { - await TestFormulaireGetAll(); - await TestFormulaireGetId(); - await TestFormulaireCreate(); - await TestFormulaireDelete(); - await TestFormulaireUpdate(); + //await TestFormulaireGetAll(); + //await TestFormulaireGetId(); + //await TestFormulaireCreate(); + //await TestFormulaireDelete(); + //await TestFormulaireUpdate(); } private static async Task TestUser() From 5d9e46a3742dd4cf289d1278e0d676444ec67484 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 13 Mar 2024 19:55:34 +0100 Subject: [PATCH 07/10] =?UTF-8?q?Unit=20Tests=20API=20=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API_Unit_Test/API_Unit_Test.csproj | 5 + .../Verax_API_EF/API_Unit_Test/UnitTest1.cs | 9 -- .../API_Unit_Test/UnitTest_Article.cs | 108 ++++++++++++++++++ 3 files changed, 113 insertions(+), 9 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs 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 index 120fbeb..bf9fa2b 100644 --- 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 @@ -11,6 +11,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive @@ -22,4 +23,8 @@ + + + + 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 deleted file mode 100644 index dd67b24..0000000 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest1.cs +++ /dev/null @@ -1,9 +0,0 @@ -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/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs new file mode 100644 index 0000000..fa1c02c --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -0,0 +1,108 @@ +using API_Services; +using Model; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_Article +{ + + + + + + [Fact] + public void TestGetArticleById() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.GetArticleById(1)).ReturnsAsync(expected); + var result = mockArticleService.Object.GetArticleById(1); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestGetAllArticles() + { + var mockArticleService = new Mock(); + var expected = new List
() + { + new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }, + new Article() + { + Id = 2, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + } + }; + mockArticleService.Setup(x => x.GetAllArticles(0, 10, ArticleOrderCriteria.None)).ReturnsAsync(expected); + var result = mockArticleService.Object.GetAllArticles(0, 10, ArticleOrderCriteria.None); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestAddArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void UpdateArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(1, result.Id ); + var updated = new Article() + { + Title = "Updated Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); + // Je comprends pas pourquoi ça ne passe pas regarde STP Louis + //Assert.True(resultUpdated.Result); + } +} \ No newline at end of file From 2a5cfc1d12a946acb210d0de601028de82a316a0 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Thu, 14 Mar 2024 09:21:03 +0100 Subject: [PATCH 08/10] =?UTF-8?q?fix=20unit=20tests=20API=20form=20?= =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API_Unit_Test/UnitTest_Article.cs | 29 +++++++++++++++--- .../API_Unit_Test/UnitTest_Form.cs | 17 ++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm index 70a3e06ea5272d989b98ecfd656ac76d9ac74e49..92cec95a0ddd553f5e984a73e83c138df32719cb 100644 GIT binary patch delta 56 ucmZo@U}|V!;*@x#%K!!wIpqZdXT5&rv!8t{vLG8oaAKSiqu9pA`g#Dv6%mI3 delta 56 vcmZo@U}|V!;*@x#%K!pg6FKDtFVA}YOzr^tR%Agoh~UIHB}RsgjrH{a*Ip7Y diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs index fa1c02c..736a240 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -83,14 +83,13 @@ public class UnitTest_Article var mockArticleService = new Mock(); var expected = new Article() { - Id = 1, Title = "Test", Description = "Test", Author = "Test", DatePublished = "Test", LectureTime = 10 }; - mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + mockArticleService.Setup(x => x.CreateArticle(expected)); var result = mockArticleService.Object.CreateArticle(expected); Assert.Equal(1, result.Id ); var updated = new Article() @@ -101,8 +100,30 @@ public class UnitTest_Article DatePublished = "Test", LectureTime = 10 }; + mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(true); var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); - // Je comprends pas pourquoi ça ne passe pas regarde STP Louis - //Assert.True(resultUpdated.Result); + Assert.True(resultUpdated.Result); } + + [Fact] + static void DeletedArticle() + { + var mockArticleService = new Mock(); + var expected = new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }; + mockArticleService.Setup(x => x.CreateArticle(expected)).ReturnsAsync(expected); + var result = mockArticleService.Object.CreateArticle(expected); + Assert.Equal(expected, result.Result); + mockArticleService.Setup(x => x.DeleteArticle(1)).ReturnsAsync(expected); + var resultDeleted = mockArticleService.Object.DeleteArticle(1); + Assert.Equal(expected, result.Result); + } + } \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs new file mode 100644 index 0000000..138122d --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs @@ -0,0 +1,17 @@ +using API_Services; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_Form +{ + + [Fact] + static void TestAllUser() + { + var mockUserService = new Mock(); + // TODO + } + +} + From d620088c63da4686e8a95537a7f12d1e0ca3d78b Mon Sep 17 00:00:00 2001 From: tonyfages Date: Fri, 15 Mar 2024 17:01:56 +0100 Subject: [PATCH 09/10] Add logger Entity + Unit Test for API --- .../API/Controllers/ArticleController.cs | 5 +- .../API/Controllers/FormulaireController.cs | 8 +- .../API/Controllers/UserController.cs | 22 +- .../API/Entity_FrameWork.Article.db | Bin 49152 -> 49152 bytes .../API/Entity_FrameWork.Article.db-shm | Bin 32768 -> 32768 bytes .../API/Entity_FrameWork.Article.db-wal | Bin 90672 -> 57712 bytes Verax_API_EF/Verax_API_EF/API/log.txt | 17 ++ .../API_DbDataManager/DbManagerArticle.cs | 16 +- .../API_DbDataManager/DbManagerFormulaire.cs | 21 +- .../API_DbDataManager/DbManagerUser.cs | 30 +-- .../API_Mapping/FormulaireMapping.cs | 2 +- .../Verax_API_EF/API_Mapping/UserMapping.cs | 2 +- .../API_Services/IArticleService.cs | 2 +- .../API_Services/IArticleUserService.cs | 9 - .../API_Services/IFormulaireService.cs | 4 +- .../Verax_API_EF/API_Services/IUserService.cs | 8 +- .../API_Tests_Console/Tests_Console.cs | 6 +- .../API_Unit_Test/UnitTest_Article.cs | 4 +- .../API_Unit_Test/UnitTest_Form.cs | 90 +++++++- .../API_Unit_Test/UnitTest_User.cs | 215 ++++++++++++++++++ .../DbContextLib/LibraryContext.cs | 2 +- .../Verax_API_EF/Test_Console_EF/log.txt | 0 22 files changed, 389 insertions(+), 74 deletions(-) delete mode 100644 Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs create mode 100644 Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs create mode 100644 Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs index 4c450ef..77caa98 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs @@ -21,6 +21,7 @@ namespace API.Controllers this._logger = logger; } + [Route("/articles")] [HttpGet] public async Task GetAllArticles([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None) { @@ -109,8 +110,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticle), id, a); try { - var result = await _dataManager.ArticleService.UpdateArticle(id, a); - if (result == false) + var result = (await _dataManager.ArticleService.UpdateArticle(id, a)).ToDTO(); + if (result == null) { return NotFound($"Article ID {id} not found"); } diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs index 6b46b64..fcf25aa 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/FormulaireController.cs @@ -91,8 +91,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteForm), id); try { - var result = await _dataManager.FormulaireService.DeleteForm(id); - if (result == false) + var result = (await _dataManager.FormulaireService.DeleteForm(id)).ToDTO(); + if (result == null) { return NotFound($"Form Id {id} not found"); } @@ -112,8 +112,8 @@ namespace API.Controllers try { - var result = await _dataManager.FormulaireService.UpdateForm(id, formulaire); - if (result == false) + var result = (await _dataManager.FormulaireService.UpdateForm(id, formulaire)).ToDTO(); + if (result == null) { return NotFound($"form Id {id} not found"); } 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 adb77db..5ca51f4 100644 --- a/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs +++ b/Verax_API_EF/Verax_API_EF/API/Controllers/UserController.cs @@ -68,8 +68,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Create), user); try { - var result = await _dataManager.UserService.Create(user); - if (result == false) + var result = (await _dataManager.UserService.Create(user)).ToDTO(); + if (result == null) { return BadRequest($"User {user.Pseudo} already exists"); } @@ -90,8 +90,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Update), user, pseudo); try { - var result = await _dataManager.UserService.Update(user,pseudo); - if (result == false) + var result = (await _dataManager.UserService.Update(user, pseudo)).ToDTO(); + if (result == null) { return NotFound(); } @@ -111,8 +111,8 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(Delete), pseudo); try { - var result = await _dataManager.UserService.Delete(pseudo); - if (result == false) + var result = (await _dataManager.UserService.Delete(pseudo)).ToDTO(); + if (result == null) { return NotFound(); } @@ -186,16 +186,16 @@ namespace API.Controllers } } - [HttpDelete("/user/{pseudo}/article")] - public async Task DeleteArticleUser(string pseudo) + [HttpDelete("/user/{pseudo}/{id}")] + public async Task DeleteArticleUser(string pseudo, long id) { _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(DeleteArticleUser), pseudo); try { - var result = await _dataManager.UserService.DeleteArticleUser(pseudo); + var result = await _dataManager.UserService.DeleteArticleUser(pseudo, id); if (!result) { - return BadRequest($"ArticleUser {pseudo} does not exist"); + return BadRequest($"User {pseudo} or {id} does not exist"); } return Ok(result); } @@ -212,7 +212,7 @@ namespace API.Controllers _logger.LogInformation("Executing {Action} - with parameters: {Parameters}",nameof(UpdateArticleUser), articleUser); try { - var result = await _dataManager.UserService.UpdateArticleUser(articleUser); + var result = (await _dataManager.UserService.UpdateArticleUser(articleUser)); if (!result) { return BadRequest($"ArticleUser {articleUser.UserEntityPseudo} does not exist"); 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 c1874736901a316a2aff14cf158044ead4293130..175a9e3bfb33888228bcc9beffeb72eedaac90e5 100644 GIT binary patch delta 138 zcmZo@U~Xt&-oR+U%fP_E%y*7~e=5Hb-?`0#0tfgepR+s8lF7)1?Km)S*Cs)poV$o(~W7vFs jzLo$)!Al1IpZp*BUv3suxWPa9*?wVmHfCYY;EY57LXalm delta 163 zcmZo@U~Xt&-oR+U&p(xcneQ9}|0{kYzH@wAHwy}^;1iP+6&2+W4M{C7LB^BM*&SzL zU|+`h)c=>+<6})8N|H%K6|K(;ug&X{npY0cB2P$9>&PW6R DG$Jr* diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm index 92cec95a0ddd553f5e984a73e83c138df32719cb..d5fc9fbb704b9577a86e5b9773468d5275689d97 100644 GIT binary patch delta 242 zcmZo@U}|V!s+V}A%K!qbK+MR%AixKtd4Tx)Z#j$SMxX3vZ&TqmHQuEh{4&Sk?DgMz zq^buR1qL8<|04mYupN|UVBi32ly0oCzrd?@O-@q-*EJ0k-N13LrP=8p+q cSs8gZKK#qX&dk6DG!UrdI};<{#)slE082zT2><{9 delta 283 zcmZo@U}|V!s+V}A%K!t63=9HdKn@QOGkr^Tda-?)_3U>g3wFJV{S!Fr^)sLS>|04y z4>KEN?tdfz6?bC*Nq_(s5Q8jc#lZ&2!_=?=+3Y|JrzcL7-grdJkC~Z)ZR5e;OsqT% zd<+5`5B_9g=4Idqi7*Q?h=6G!22l__`9nAxGbaPr#)Ds(n1va{Kw_KUMg3#ictJ`M E09{H-5&!@I diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal index 87148cb4f6d60c60e97366054b7fc2a8de809eaf..7605da657bc9a544f302ea364306a208df39841d 100644 GIT binary patch delta 1003 zcmdmRg!RKAW-s%4wk8JMM-mJS0t_H9dz%Wksqrr52i!Z??OuDN11Q9SEPmj`{ioZ# z--Pn=e`8?bKg+=XivI!sHU6{wXE!Gb?B-`-XJr zFM6@|-C4U*xxi+eWZ-|ve~pQJ=Ct=N<)5?f9z4ng z6lCGQ&A|Va{|)~W{@eVQfZ7l9Pv2|EXrc)9h6nQ{uIBDZmwAC|S&^Ol4b{17+HB0? z*j;<##~e+Z~?9X~%O zJ4`1NEa24)ar(q&!P>oHPuJ}P`Gk#s6VNB%kl(cZfgs}|elczqMsY?au!q>u{ALDp z0U|O{V#8M0KkUs?TT_tV*!Yhl`HlZL(2<+@Mc}?;hqF-qSrQ@_a8Bt)IVerBBKz|Y z9)GH$x(OwLOCA>c=<0gF!5J1@Gs-9VBE5X%jW|*x8fbedt1S-!o5K{%F>oPXqEJ|G>}1v4H=R zce+*t#9mDoTQspn{iqQ<5I_I{1Q0*~0R#|0009ILK%i&>_ZV(1P+u2ZZY2}d^Qs?? zrJ~7rM>=k`x3;D`7R;TyL4GlBPSi?-TO;zQ>+^#fh8Wz?Ke#SGxPFMi_5Fh@L6Cr>A0tg_000IagfB*srAb`OCA>c8Bx{NRw z^4LN?JLIz`8*y-{<=An7bq$FX8@g`nP>BQ%@vA2OkpJ*N009ILKmY**5I_I{1Q0*~ zfpQh7a2Qi{m6i~WrJWOWqefqvOvj^bG4)=aR6!lVORKi6-?eA|=crjDRo zFFor<009ILKmY**5I_I{1P~}$fsxh`EX$V$jINHrbhG zg6F!bcRjWEh4a)A43Cvj2q1s}0tg_000IagfB*srl(@jaIs(@})e#&$Hog5o@AT`c zj=-?%2u_vw8L~VC5I_I{1Q0*~0R#|0009KbO<<&T1ha=*M_{@JEf^SP9l^_M4n6r- z$E0Uf9f2W!R{IfLlTSPlKmY**5I_I{1Q0*~0R#|0pd1Bq1p}_3>j+fe!TdgjGhW;GXe-8fB*srAb<*)z$DpB@HR6T zTv;25Ct{DpQnGWv5cvYqA~bm4!Giq=&g@v1Zx+6II;I&-;RR)2&f|{&wGqjBY*$` z2q1s}0tg_000IagAo~P(Wfs9L>ImElX=hJ*_n`~TeXlletFRXJ7-~NPw{U6VC-Je^ zELMve`GyAq2q1s}0tg_000IagfB*vHQDBPOBSOLqhE{gOV=bvnQhr-3wX`J>Z=db* zgv^jRE7WAQZ&_a7Fz>$Qk&UsGdY6{JOExAV@wPcpE0Gyp>-3mrD0r9IWF^9Ca5xc9 zx5_tZE3w2Lxi%F`-fwt<=Co<`A^CrHHEvlX6^$g55&KzwoOyZE{B@4({55N0Esg5$ z8fP}vrqr96jWg`|8?Bb3`;(Ehm8{l1Rp!)SAhgPggyU_Q1;yLiBFPr{L1w}7a(d)% zzQ4eqCjw`zRx7NE3*6#_CQgW};-WY&exS?1c)ayFCj<~c009ILKmY**5I_Kd@gv|e zguc@4GeUYMhT-xWrhJtMJMEr>>H`%+aQKWWUp7=A&%PjE;K#*v`y!ohZ&LXJE>T0i z!1%d6I1>aAKmY**5I_I{1Q0*~fm;aNNxnd)j^NnW*Qef5bGcIG3%F#8K!3IX`2x4N zefSCi1Q0*~0R#|0009ILKmdVK5O9w&Um#yckUYI8{>lRjZx4vg{rLi~(_f$zE-q_8 z009ILKmY**5I_I{1P~ZIf&V&RK%U9u!TJkKlYIw5a_d3WcOcX3AiD*j-R)p3`U`lK zs@-?+O3&dh>nfgqKihY(Q{@X>5NE}A;-u&tJAGzG009ILKmY**5I_I{1Q0*~fl&*% z-A2$S0|_3N5!B_g;dSOZ2^d}@*JQxqcNkTAwyA)_s~aI-rU`*OrcWK$jtkV>c-1$p0dAjD z59)>t3b_1E-P8@$U(lI(=}^4~jY_9pr8{zQ0iV;?9~Y>Q3(MCLEcmVJ-gQmg3$t;7 zu`v>j>n$zJFOqFhBa>^v5esZ}-cx0hgeTpxBp+`4B(=0R#|0009ILKmY**5GbZV zzK%dn>Muea!9&rjj)iX>?DC6qGA@v-Bgj+{P)AVA>&9FNAb_#4WvWi(null); return entity.ToModel(); } @@ -74,21 +74,23 @@ public class DbManagerArticle : IArticleService Console.WriteLine(entity); if (entity == null) return null; _context.ArticleSet.Remove(entity); - await _context.SaveChangesAsync(); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); return entity.ToModel(); } - public async Task UpdateArticle(long id, Article? a) + public async Task UpdateArticle(long id, Article? a) { var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id); - if (entity == null) return false; + if (entity == null) return await Task.FromResult(null); entity.Title = a.Title; entity.Description = a.Description; entity.Author = a.Author; entity.DatePublished = a.DatePublished; entity.LectureTime = a.LectureTime; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } 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 5cd515f..914a606 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerFormulaire.cs @@ -59,28 +59,31 @@ public class DbManagerFormulaire : IFormulaireService }; _context.FormSet.Add(entity); - await _context.SaveChangesAsync(); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); return entity.ToModel(); } - public async Task DeleteForm(long id) + public async Task DeleteForm(long id) { var entity = _context.FormSet.FirstOrDefault(f => f.Id == id); - if (entity == null) return false; + if (entity == null) return Task.FromResult(null).Result; _context.FormSet.Remove(entity); - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } - public async Task UpdateForm(long id, Formulaire formulaire) + public async Task UpdateForm(long id, Formulaire formulaire) { var entity = _context.FormSet.FirstOrDefault(f => f.Id == id); - if (entity == null) return false; + if (entity == null) return Task.FromResult(null).Result; entity.Theme = formulaire.Theme; entity.DatePublication = formulaire.Date; entity.Link = formulaire.Lien; entity.UserEntityPseudo = formulaire.UserPseudo; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return entity.ToModel(); } } \ No newline at end of file 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 a5a7b26..5c196d7 100644 --- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs +++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerUser.cs @@ -43,7 +43,7 @@ public class DbManagerUser: IUserService return await Task.FromResult(entity.ToModel()); } - public async Task Create(User user) + public async Task Create(User user) { var entity = new UserEntity() { @@ -55,30 +55,33 @@ public class DbManagerUser: IUserService Role = user.Role }; _context.UserSet.Add(entity); - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } - public async Task Update(User user, string pseudo) + public async Task Update(User user, string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); - if (entity == null) return false; + if (entity == null) return await Task.FromResult(null); entity.Mdp = user.Mdp; entity.Mail = user.Mail; entity.Role = user.Role; entity.Prenom = user.Prenom; entity.Nom = user.Nom; - await _context.SaveChangesAsync(); - return true; + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } - public async Task Delete(string pseudo) + public async Task Delete(string pseudo) { var entity = _context.UserSet.FirstOrDefault(u => u.Pseudo == pseudo); - if (entity == null) return await Task.FromResult(false); + if (entity == null) return await Task.FromResult(null); _context.UserSet.Remove(entity); - await _context.SaveChangesAsync(); - return await Task.FromResult(true); + var result = await _context.SaveChangesAsync(); + if (result == 0) return await Task.FromResult(null); + return await Task.FromResult(entity.ToModel()); } public async Task> GetAllArticleUsers() @@ -124,9 +127,10 @@ public class DbManagerUser: IUserService return await Task.FromResult(true); } - public async Task DeleteArticleUser(string pseudo) + public async Task DeleteArticleUser(string pseudo, long id) { - var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo)); + + var entity = _context.ArticleUserSet.FirstOrDefault(a => a.UserEntityPseudo.Equals(pseudo) && a.ArticleEntityId.Equals(id)); if (entity == null) return await Task.FromResult(false); _context.ArticleUserSet.Remove(entity); await _context.SaveChangesAsync(); diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs index 8a0e631..7a779ab 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/FormulaireMapping.cs @@ -5,7 +5,7 @@ namespace API_Mapping; public static class FormulaireMapping { - public static FormulaireDTO ToDTO(this Formulaire f) => new() + public static FormulaireDTO ToDTO(this Formulaire? f) => new() { Id = f.Id, Theme = f.Theme, diff --git a/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs b/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs index ef5cd9c..53789e6 100644 --- a/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs +++ b/Verax_API_EF/Verax_API_EF/API_Mapping/UserMapping.cs @@ -5,7 +5,7 @@ namespace API_Mapping; public static class UserMapping { - public static UserDTO ToDTO(this User u) => new() + public static UserDTO ToDTO(this User? u) => new() { Pseudo = u.Pseudo, Mdp = u.Mdp, diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs index 712ab2e..967eddf 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs @@ -14,7 +14,7 @@ namespace API_Services Task DeleteArticle(long id); - Task UpdateArticle(long id, Article? a); + Task UpdateArticle(long id, Article? a); } diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs deleted file mode 100644 index 68cba95..0000000 --- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleUserService.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Entities; -using Model; - -namespace API_Services; - -public interface IArticleUserService -{ - -} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs index 9374d8b..0b0d444 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IFormulaireService.cs @@ -12,7 +12,7 @@ public interface IFormulaireService Task CreateForm(Formulaire formulaire); - Task DeleteForm(long id); + Task DeleteForm(long id); - Task UpdateForm(long id, Formulaire formulaire); + Task UpdateForm(long id, Formulaire formulaire); } \ 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 b191a32..ed48afb 100644 --- a/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs +++ b/Verax_API_EF/Verax_API_EF/API_Services/IUserService.cs @@ -8,17 +8,17 @@ namespace API_Services Task> GetAll(int index, int count, UserOrderCriteria orderCriteria); Task GetByPseudo(string pseudo); - Task Create(User user); - Task Update(User user, string pseudo); + Task Create(User user); + Task Update(User user, string pseudo); - Task Delete(string pseudo); + Task Delete(string pseudo); Task> GetAllArticleUsers(); Task> GetArticleUser(string pseudo); Task CreateArticleUser(ArticleUserEntity articleUser); - Task DeleteArticleUser(string pseudo); + Task DeleteArticleUser(string pseudo, long id); Task UpdateArticleUser(ArticleUserEntity articleUser); diff --git a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs index e8b8c7d..aff59a0 100644 --- a/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs +++ b/Verax_API_EF/Verax_API_EF/API_Tests_Console/Tests_Console.cs @@ -13,13 +13,13 @@ class Tests_Console static async Task Main(string[] args) { //await TestUser(); - //await TestFormulaire(); + await TestFormulaire(); //await TestArticle(); } private static async Task TestFormulaire() { - //await TestFormulaireGetAll(); + await TestFormulaireGetAll(); //await TestFormulaireGetId(); //await TestFormulaireCreate(); //await TestFormulaireDelete(); @@ -37,7 +37,7 @@ class Tests_Console //await TestGetArticleByUser(); //await TestCreateArticleUser(); //await TestDeleteArticleUser(); - await TestUpdateArticleUser(); + //await TestUpdateArticleUser(); } diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs index 736a240..0219dbd 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Article.cs @@ -100,9 +100,9 @@ public class UnitTest_Article DatePublished = "Test", LectureTime = 10 }; - mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(true); + mockArticleService.Setup(x => x.UpdateArticle(1, updated)).ReturnsAsync(updated); var resultUpdated = mockArticleService.Object.UpdateArticle(1, updated); - Assert.True(resultUpdated.Result); + Assert.Equal(updated ,resultUpdated.Result); } [Fact] diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs index 138122d..bc9b615 100644 --- a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_Form.cs @@ -1,17 +1,99 @@ using API_Services; +using Model; using Moq; namespace API_Unit_Test; public class UnitTest_Form { + [Fact] + public void TestGetAllForm() + { + var mockFormService = new Mock(); + var expected = new List() + { + new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }, + new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + } + }; + mockFormService.Setup(x => x.GetAllForm(0, 10, FormOrderCriteria.None)).ReturnsAsync(expected); + var result = mockFormService.Object.GetAllForm(0, 10, FormOrderCriteria.None); + Assert.Equal(expected, result.Result); + } [Fact] - static void TestAllUser() + public void TestGetFormById() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.GetById(1)).ReturnsAsync(expected); + var result = mockFormService.Object.GetById(1); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestCreateForm() { - var mockUserService = new Mock(); - // TODO + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.CreateForm(expected)).ReturnsAsync(expected); + var result = mockFormService.Object.CreateForm(expected); + Assert.Equal(expected, result.Result); } -} + [Fact] + public void TestUpdateForm() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.CreateForm(expected)).ReturnsAsync(expected); + var result = mockFormService.Object.CreateForm(expected); + Assert.Equal(expected, result.Result); + } + + [Fact] + public void TestDeleteForm() + { + var mockFormService = new Mock(); + var expected = new Formulaire() + { + Lien = "Test", + Theme = "Test", + Date = "Test", + UserPseudo = "Test" + }; + mockFormService.Setup(x => x.DeleteForm(1)).ReturnsAsync(expected); + var result = mockFormService.Object.DeleteForm(1); + Assert.Equal(expected, result.Result); + } +} \ No newline at end of file diff --git a/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs new file mode 100644 index 0000000..9634bcd --- /dev/null +++ b/Verax_API_EF/Verax_API_EF/API_Unit_Test/UnitTest_User.cs @@ -0,0 +1,215 @@ +using API_Services; +using Entities; +using Model; +using Moq; + +namespace API_Unit_Test; + +public class UnitTest_User +{ + + [Fact] + static void TestAllUser() + { + var mockUserService = new Mock(); + var expected = new List() + { + new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }, + new User() + { + Pseudo = "Blizzard", + Prenom = "Louis", + Nom = "Laborie", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin", + }, + }; + mockUserService.Setup(x => x.GetAll(0, 10, UserOrderCriteria.None)).ReturnsAsync(expected); + var result = mockUserService.Object.GetAll(0, 10, UserOrderCriteria.None); + Assert.Equal(expected, result.Result); + + } + + [Fact] + static void TestGetUserByPseudo() + { + var mockUserService = new Mock(); + var expected = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.GetByPseudo("Tofgasy")).ReturnsAsync(expected); + var result = mockUserService.Object.GetByPseudo("Tofgasy"); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestCreateUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Create(user)).ReturnsAsync(user); + var result = mockUserService.Object.Create(user); + Assert.Equal( user,result.Result); + } + + [Fact] + static void TestUpdateUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tonio", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Update(user, "Tofgasy")).ReturnsAsync(user); + var result = mockUserService.Object.Update(user, "Tofgasy"); + Assert.Equal( user,result.Result); + } + + [Fact] + static void TestDeleteUser() + { + var mockUserService = new Mock(); + var user = new User() + { + Pseudo = "Tofgasy", + Prenom = "Tonio", + Nom = "Fages", + Mail = "mail@mail.com", + Mdp = "1234", + Role = "Admin" + }; + mockUserService.Setup(x => x.Delete("Tofgasy")).ReturnsAsync(user); + var result = mockUserService.Object.Delete("Tofgasy"); + Assert.Equal( user,result.Result); + } + + + [Fact] + static void TestGetAllArticleUsers() + { + var mockUserService = new Mock(); + var expected = new List() + { + new User() + { + Pseudo = "Tofgasy", + Prenom = "Tony", + Nom = "Fages", + Mail = "", + Mdp = "", + Role = "", + }, + new User() + { + Pseudo = "Blizzard", + Prenom = "Louis", + Nom = "Laborie", + Mail = "", + Mdp = "", + Role = "", + }, + }; + mockUserService.Setup(x => x.GetAllArticleUsers()).ReturnsAsync(expected); + var result = mockUserService.Object.GetAllArticleUsers(); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestGetArticleUser() + { + var mockUserService = new Mock(); + var expected = new List
() + { + new Article() + { + Id = 1, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + }, + new Article() + { + Id = 2, + Title = "Test", + Description = "Test", + Author = "Test", + DatePublished = "Test", + LectureTime = 10 + } + }; + mockUserService.Setup(x => x.GetArticleUser("Tofgasy")).ReturnsAsync(expected); + var result = mockUserService.Object.GetArticleUser("Tofgasy"); + Assert.Equal(expected, result.Result); + } + + [Fact] + static void TestCreateArticleUser() + { + var mockUserService = new Mock(); + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Tofgasy" + }; + mockUserService.Setup(x => x.CreateArticleUser(articleUser)).ReturnsAsync(true); + var result = mockUserService.Object.CreateArticleUser(articleUser); + Assert.True(result.Result); + } + + [Fact] + static void TestDeleteArticleUser() + { + var mockUserService = new Mock(); + mockUserService.Setup(x => x.DeleteArticleUser("Tofgasy", 1)).ReturnsAsync(true); + var result = mockUserService.Object.DeleteArticleUser("Tofgasy", 1); + Assert.True(result.Result); + } + + [Fact] + static void TestUpdateArticleUser() + { + var mockUserService = new Mock(); + var articleUser = new ArticleUserEntity() + { + ArticleEntityId = 1, + UserEntityPseudo = "Tofgasy" + }; + mockUserService.Setup(x => x.UpdateArticleUser(articleUser)).ReturnsAsync(true); + var result = mockUserService.Object.UpdateArticleUser(articleUser); + Assert.True(result.Result); + } + + + +} + diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index 0f9f644..b8032db 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( LogFile.WriteLine, LogLevel.Error).EnableDetailedErrors().EnableDetailedErrors(); + optionsBuilder.LogTo(message => LogFile.WriteLine(message), LogLevel.Information); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); diff --git a/Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt b/Verax_API_EF/Verax_API_EF/Test_Console_EF/log.txt new file mode 100644 index 0000000..e69de29 From d4eef3da9adf94a16ebfde598d3d120a2486be47 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Fri, 15 Mar 2024 17:09:39 +0100 Subject: [PATCH 10/10] fix logger --- Verax_API_EF/Verax_API_EF/API/log.txt | 17 +++++++ .../DbContextLib/LibraryContext.cs | 49 ++++++++----------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/Verax_API_EF/Verax_API_EF/API/log.txt b/Verax_API_EF/Verax_API_EF/API/log.txt index 38b147c..7d66f59 100644 --- a/Verax_API_EF/Verax_API_EF/API/log.txt +++ b/Verax_API_EF/Verax_API_EF/API/log.txt @@ -15,3 +15,20 @@ info: 03/15/2024 16:59:30.063 RelationalEventId.CommandExecuted[20101] (Microsof Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT "a"."Id", "a"."Author", "a"."DatePublished", "a"."Description", "a"."LectureTime", "a"."Title" FROM "ArticleSet" AS "a" +info: 03/15/2024 17:08:29.557 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (6ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +info: 03/15/2024 17:08:29.561 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +info: 03/15/2024 17:08:29.567 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT "MigrationId", "ProductVersion" + FROM "__EFMigrationsHistory" + ORDER BY "MigrationId"; +info: 03/15/2024 17:08:29.575 RelationalEventId.MigrationsNotApplied[20405] (Microsoft.EntityFrameworkCore.Migrations) + No migrations were applied. The database is already up to date. +info: 03/15/2024 17:08:33.305 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command) + Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] + SELECT "a"."Id", "a"."Author", "a"."DatePublished", "a"."Description", "a"."LectureTime", "a"."Title" + FROM "ArticleSet" AS "a" diff --git a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs index b8032db..c62563b 100644 --- a/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs +++ b/Verax_API_EF/Verax_API_EF/DbContextLib/LibraryContext.cs @@ -6,27 +6,32 @@ namespace DbContextLib; public class LibraryContext : DbContext { - - private static readonly StreamWriter LogFile = new StreamWriter("log.txt"); + public LibraryContext() : base() - { } + { + } public LibraryContext(DbContextOptions options) : base(options) - { } - - - + { + } + + + public DbSet ArticleSet { get; set; } public DbSet UserSet { get; set; } public DbSet FormSet { get; set; } - + public DbSet ArticleUserSet { get; set; } - + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.LogTo(message => LogFile.WriteLine(message), LogLevel.Information); + optionsBuilder.LogTo(message => + { + using var logFile = new StreamWriter("log.txt", append: true); + logFile.WriteLine(message); + }, LogLevel.Information); if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite($"Data Source=Entity_FrameWork.Article.db"); @@ -41,12 +46,12 @@ public class LibraryContext : DbContext .HasMany(a => a.Users) .WithMany(a => a.Articles) .UsingEntity(); - + modelBuilder.Entity() .HasMany(u => u.Forms) .WithOne(f => f.User) .HasForeignKey(f => f.UserEntityPseudo); - + modelBuilder.Entity() .HasOne(f => f.User) .WithMany(u => u.Forms) @@ -80,7 +85,7 @@ public class LibraryContext : DbContext Description = "M&M's new recipe is out and it's the best chocolate ever", DatePublished = "2022-02-06", LectureTime = 1, - Author = "M&M's Red" + Author = "M&M's Red" } ); @@ -107,7 +112,7 @@ public class LibraryContext : DbContext Nom = "Sillard", Prenom = "Noa", Pseudo = "NoaSil", Mail = "", Mdp = "1234", Role = "Admin" } ); - + modelBuilder.Entity().HasData( new ArticleUserEntity { @@ -135,11 +140,11 @@ public class LibraryContext : DbContext UserEntityPseudo = "TomS" } ); - + modelBuilder.Entity().HasData( new FormEntity { - Id = 1, + Id = 1, DatePublication = "Form 1 Description", Link = "hhtp://form1.com", UserEntityPseudo = "Sha" @@ -161,16 +166,4 @@ 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