persistance fun facts et unit tests sans avertissements

master
Mathilde JEAN 3 years ago
parent c0c6f07697
commit 28a79a50bc

@ -13,10 +13,13 @@ namespace Business
{ {
public ObservableCollection<Requin> Requins { get; private set; } public ObservableCollection<Requin> Requins { get; private set; }
public ObservableCollection<Requin> RequinsEdit { get; private set; } public ObservableCollection<Requin> RequinsEdit { get; private set; }
public ObservableCollection<Requin> RequinsAdd { get; private set; } public ObservableCollection<Requin> RequinsAdd { get; private set; }
public Requin SelectedRequin { get; set; } public Requin SelectedRequin { get; set; }
public List<String> FunFacts { get; private set; } = new List<String>();
/// <summary> /// <summary>
/// DéPENDANCE /// DéPENDANCE
/// </summary> /// </summary>
@ -165,11 +168,11 @@ namespace Business
return RequinsAdd.SingleOrDefault(r => r.Equals(req)); return RequinsAdd.SingleOrDefault(r => r.Equals(req));
} }
public List<Requin> rechercherRequins(ObservableCollection<Requin> lRech, Nullable<Zone> zone, string motif) public List<Requin> rechercherRequins(ObservableCollection<Requin> lRech, Nullable<Zone> zone, String motif)
{ {
List<Requin> nvReq = new List<Requin>(); List<Requin> nvReq = new List<Requin>();
int test = 0; int test = 0;
if (!string.IsNullOrWhiteSpace(motif)) if (!String.IsNullOrWhiteSpace(motif))
{ {
foreach (Requin req in lRech) foreach (Requin req in lRech)
{ {
@ -200,14 +203,31 @@ namespace Business
return nvReq; return nvReq;
} }
public bool verifierRequin(string nom, string nomSci, string description, string photo, string video, string photoCarte) public bool verifierRequin(String nom, String nomSci, String description, String photo, String video, String photoCarte)
{ {
if (string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(nomSci) || string.IsNullOrWhiteSpace(description) || string.IsNullOrWhiteSpace(photo) if (String.IsNullOrWhiteSpace(nom) || String.IsNullOrWhiteSpace(nomSci) || String.IsNullOrWhiteSpace(description) || String.IsNullOrWhiteSpace(photo)
|| string.IsNullOrWhiteSpace(video) || string.IsNullOrWhiteSpace(photoCarte)) || String.IsNullOrWhiteSpace(video) || String.IsNullOrWhiteSpace(photoCarte))
{ {
return false; return false;
} }
return true; return true;
} }
public void LoadFunFacts()
{
FunFacts.Clear();
foreach(String fun in Pers.LoadFunFacts())
{
FunFacts.Add(fun);
}
}
public void SaveFunFacts()
{
Pers.SaveFunFacts(FunFacts);
}
} }
} }

@ -19,31 +19,38 @@ namespace Persistance
= new DataContractSerializer(typeof(DataToPersistReq)); = new DataContractSerializer(typeof(DataToPersistReq));
DataContractSerializer SerializerUsers { get; set; } DataContractSerializer SerializerUsers { get; set; }
= new DataContractSerializer(typeof(DataToPersistUsers)); = new DataContractSerializer(typeof(DataToPersistUsers));
DataContractSerializer SerializerFun { get; set; }
= new DataContractSerializer(typeof(List<String>));
// DataToPersistReq et DataToPersistUsers // DataToPersistReq et DataToPersistUsers
DataToPersistReq dataReq = new DataToPersistReq(); DataToPersistReq dataReq = new DataToPersistReq();
DataToPersistUsers data = new DataToPersistUsers(); DataToPersistUsers data = new DataToPersistUsers();
List<String> lesFunFacts = new List<String>();
// Chemin des fichiers // Chemin des fichiers
string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance"); String FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance");
// Noms des fichiers // Noms des fichiers
string FileNameReq { get; set; } String FileNameReq { get; set; }
= "ficReqs"; = "ficReqs";
string FileNameUsers { get; set; } String FileNameUsers { get; set; }
= "ficUsers"; = "ficUsers";
String FileNameFunFacts { get; set; }
= "ficFunFacts";
// Fichiers complets // Fichiers complets
string FileReq => Path.Combine(FilePath, FileNameReq); String FileReq => Path.Combine(FilePath, FileNameReq);
string FileUsers => Path.Combine(FilePath, FileNameUsers); String FileUsers => Path.Combine(FilePath, FileNameUsers);
String FileFunFacts => Path.Combine(FilePath, FileNameFunFacts);
@ -78,6 +85,8 @@ namespace Persistance
Directory.CreateDirectory(FileUsers); Directory.CreateDirectory(FileUsers);
} }
data.Users.Clear();
data.Experts.Clear();
data.Users.AddRange(users); data.Users.AddRange(users);
data.Experts.AddRange(experts); data.Experts.AddRange(experts);
@ -117,6 +126,9 @@ namespace Persistance
Directory.CreateDirectory(FilePath); Directory.CreateDirectory(FilePath);
} }
dataReq.Requins.Clear();
dataReq.RequinsAdd.Clear();
dataReq.RequinsEdit.Clear();
dataReq.Requins.AddRange(reqs); dataReq.Requins.AddRange(reqs);
dataReq.RequinsAdd.AddRange(reqsAdd); dataReq.RequinsAdd.AddRange(reqsAdd);
dataReq.RequinsEdit.AddRange(reqsEdit); dataReq.RequinsEdit.AddRange(reqsEdit);
@ -130,5 +142,42 @@ namespace Persistance
} }
} }
public List<String> LoadFunFacts()
{
if (!File.Exists(FileFunFacts))
{
throw new FileNotFoundException("The persistance file does not exist");
}
using (Stream stream = File.OpenRead(FileFunFacts))
{
lesFunFacts = SerializerFun.ReadObject(stream) as List<String>;
}
return lesFunFacts;
}
public void SaveFunFacts(List<String> funFacts)
{
if (!Directory.Exists(FilePath))
{
Directory.CreateDirectory(FilePath);
}
lesFunFacts.Clear();
lesFunFacts.AddRange(funFacts);
using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileFunFacts)))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
SerializerFun.WriteObject(writer, lesFunFacts);
}
}
}
} }
} }

@ -15,6 +15,8 @@ namespace Persistance
void SaveRequins(List<Requin> reqs, List<Requin> reqsAdd, List<Requin> reqsEdit); void SaveRequins(List<Requin> reqs, List<Requin> reqsAdd, List<Requin> reqsEdit);
(List<Utilisateur> users, List<Expert> experts) LoadUsers(); (List<Utilisateur> users, List<Expert> experts) LoadUsers();
void SaveUsers(List<Utilisateur> users, List<Expert> experts); void SaveUsers(List<Utilisateur> users, List<Expert> experts);
List<String> LoadFunFacts();
void SaveFunFacts(List<String> funFacts);
} }
} }

@ -16,6 +16,8 @@ namespace StubLib
private List<Utilisateur> utilisateurs = new List<Utilisateur>(); private List<Utilisateur> utilisateurs = new List<Utilisateur>();
private List<Expert> expert = new List<Expert>(); private List<Expert> expert = new List<Expert>();
private List<String> funFacts = new List<String>();
public Stub() public Stub()
{ {
// Requins // Requins
@ -32,6 +34,10 @@ namespace StubLib
// Utilisateurs // Utilisateurs
utilisateurs.Add(new Utilisateur("a", "salut")); utilisateurs.Add(new Utilisateur("a", "salut"));
expert.Add(new Expert("salut", "hey", "bob")); expert.Add(new Expert("salut", "hey", "bob"));
// FunFacts
funFacts.Add("Les requins c'est gentil en fait");
funFacts.Add("Le requin dormeur mexicain est objectivement le meilleur de tous les requins");
funFacts.Add("Le requin shrek est caché quelque part dans cette application");
} }
@ -57,5 +63,15 @@ namespace StubLib
utilisateurs = users; utilisateurs = users;
expert = experts; expert = experts;
} }
public List<String> LoadFunFacts()
{
return new List<String>(funFacts);
}
public void SaveFunFacts(List<String> fun)
{
funFacts = fun;
}
} }
} }

@ -2,6 +2,7 @@ using System;
using Xunit; using Xunit;
using Modèle; using Modèle;
using System.Collections.Generic; using System.Collections.Generic;
using NPOI.SS.Formula.Functions;
namespace UnitTests namespace UnitTests
{ {
@ -42,7 +43,7 @@ namespace UnitTests
Utilisateur u2 = new Utilisateur("jeancarotte@gamil.com", "miamlescarottes", 48); Utilisateur u2 = new Utilisateur("jeancarotte@gamil.com", "miamlescarottes", 48);
Expert e1 = new Expert("AlexPert@gmail.com", "lesRequins", "Le Gros BG", d); Expert e1 = new Expert("AlexPert@gmail.com", "lesRequins", "Le Gros BG", d);
Expert e2 = new Expert("Blabla@gmail.com", "lesPoissons", "Le débutant"); Expert e2 = new Expert("Blabla@gmail.com", "lesPoissons", "Le débutant");
u1.FaireUnSubmit("Bob", "leRequin", "Les requins c'est trop cool", "LaPhoto", "LaVidéo", "laPhoto", Conservation.EX, zones, "askip un requin c'est rigolo", bdd); //u1.FaireUnSubmit("Bob", "leRequin", "Les requins c'est trop cool", "LaPhoto", "LaVidéo", "laPhoto", Conservation.EX, zones, "askip un requin c'est rigolo", bdd);
e1.ValiderSubmit(finie, bdd); e1.ValiderSubmit(finie, bdd);
Console.WriteLine(u1); Console.WriteLine(u1);
Console.WriteLine(u2); Console.WriteLine(u2);
@ -62,7 +63,7 @@ namespace UnitTests
Console.WriteLine(e2); Console.WriteLine(e2);
List<Zone> z = new List<Zone>(); List<Zone> z = new List<Zone>();
u1.FaireUnChangement(requin, "lalalilalou", "", "", "", Conservation.NE, z, "hahahahaha", bdd); //u1.FaireUnChangement(requin, "lalalilalou", "", "", "", Conservation.NE, z, "hahahahaha", bdd);
e1.ValiderUnChangement(finie, bdd); e1.ValiderUnChangement(finie, bdd);
foreach (Requin r in finie) foreach (Requin r in finie)
{ {

@ -8,6 +8,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Include="NPOI" Version="2.5.6" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

@ -17,6 +17,8 @@ namespace WpfApp1
{ {
public static IPersistanceManager strat { get; private set; } public static IPersistanceManager strat { get; private set; }
= new DataContractPersistance(); = new DataContractPersistance();
public static IPersistanceManager stubtruc { get; private set; }
= new StubLib.Stub();
public Manager LeManager { get; private set; } = new Manager(strat); public Manager LeManager { get; private set; } = new Manager(strat);
public ManagerUsers LeManagerUsers { get; private set; } = new ManagerUsers(strat); public ManagerUsers LeManagerUsers { get; private set; } = new ManagerUsers(strat);
@ -25,12 +27,14 @@ namespace WpfApp1
{ {
LeManager.LoadRequins(); LeManager.LoadRequins();
LeManagerUsers.LoadUsers(); LeManagerUsers.LoadUsers();
LeManager.LoadFunFacts();
} }
private void Application_Deactivated(object sender, EventArgs e) private void Application_Deactivated(object sender, EventArgs e)
{ {
LeManager.SaveRequins(); LeManager.SaveRequins();
LeManagerUsers.SaveUsers(); LeManagerUsers.SaveUsers();
LeManager.SaveFunFacts();
} }
} }
} }

@ -5,7 +5,8 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1" xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d" mc:Ignorable="d"
Title="MainWindow" Height="550" Width="1100"> Title="MainWindow" Height="550" Width="1100"
WindowState="Maximized">
<DockPanel x:Name="Dock2"> <DockPanel x:Name="Dock2">
<DockPanel Background="{StaticResource Couleur3}"> <DockPanel Background="{StaticResource Couleur3}">

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>Les requins c'est gentil en fait</string>
<string>Le requin dormeur mexicain est objectivement le meilleur de tous les requins</string>
<string>Le requin shrek est caché quelque part dans cette application</string>
</ArrayOfstring>

@ -53,58 +53,6 @@
<d2p1:StatutCons>EW</d2p1:StatutCons> <d2p1:StatutCons>EW</d2p1:StatutCons>
<d2p1:Video>Videos/Vid-Requin-Blanc.mp4</d2p1:Video> <d2p1:Video>Videos/Vid-Requin-Blanc.mp4</d2p1:Video>
</d2p1:Requin> </d2p1:Requin>
<d2p1:Requin>
<d2p1:Description>wow il est trop bo</d2p1:Description>
<d2p1:FunFact>(C'est pas un vrai requin)</d2p1:FunFact>
<d2p1:Nom>mon requin adoré</d2p1:Nom>
<d2p1:NomSci>trop cool ce requin</d2p1:NomSci>
<d2p1:Photo>Images/Dormeur-Mexicain.png</d2p1:Photo>
<d2p1:PhotoCarte>Images/rep_Heterodontus_mexicanus.png</d2p1:PhotoCarte>
<d2p1:Repartition>
<d2p1:Zone>ATLANTIQUE</d2p1:Zone>
</d2p1:Repartition>
<d2p1:StatutCons>EW</d2p1:StatutCons>
<d2p1:Video>Videos/Vid-dormeur-mexicain.mp4</d2p1:Video>
</d2p1:Requin>
<d2p1:Requin>
<d2p1:Description>C'est un requin pas ultra banal</d2p1:Description>
<d2p1:FunFact>Il est vraiment pas banal</d2p1:FunFact>
<d2p1:Nom>Req1</d2p1:Nom>
<d2p1:NomSci>Le requin pas banal</d2p1:NomSci>
<d2p1:Photo>Images/White_shark.png</d2p1:Photo>
<d2p1:PhotoCarte>Images/rep_Heterodontus_mexicanus.png</d2p1:PhotoCarte>
<d2p1:Repartition>
<d2p1:Zone>PACIFIQUE</d2p1:Zone>
</d2p1:Repartition>
<d2p1:StatutCons>EX</d2p1:StatutCons>
<d2p1:Video>Videos/Vid-dormeur-mexicain.mp4</d2p1:Video>
</d2p1:Requin>
<d2p1:Requin>
<d2p1:Description>C'est un requin pas ultra banal</d2p1:Description>
<d2p1:FunFact>Il est vraiment pas banal</d2p1:FunFact>
<d2p1:Nom>leRequinAjouté</d2p1:Nom>
<d2p1:NomSci>Le requin pas banal</d2p1:NomSci>
<d2p1:Photo>Images/White_shark.png</d2p1:Photo>
<d2p1:PhotoCarte>Images/rep_Heterodontus_mexicanus.png</d2p1:PhotoCarte>
<d2p1:Repartition>
<d2p1:Zone>PACIFIQUE</d2p1:Zone>
</d2p1:Repartition>
<d2p1:StatutCons>EX</d2p1:StatutCons>
<d2p1:Video>Videos/Vid-dormeur-mexicain.mp4</d2p1:Video>
</d2p1:Requin>
<d2p1:Requin>
<d2p1:Description>C'est un requin ultra banal</d2p1:Description>
<d2p1:FunFact>En fait il est giga banal</d2p1:FunFact>
<d2p1:Nom>Banane</d2p1:Nom>
<d2p1:NomSci>Le requin banal</d2p1:NomSci>
<d2p1:Photo>Images/White_shark.png</d2p1:Photo>
<d2p1:PhotoCarte>Images/rep_Heterodontus_mexicanus.png</d2p1:PhotoCarte>
<d2p1:Repartition>
<d2p1:Zone>ATLANTIQUE</d2p1:Zone>
</d2p1:Repartition>
<d2p1:StatutCons>EW</d2p1:StatutCons>
<d2p1:Video>Videos/Vid-Requin-Blanc.mp4</d2p1:Video>
</d2p1:Requin>
</Requins> </Requins>
<RequinsAdd xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le" /> <RequinsAdd xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le" />
<RequinsEdit xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le" /> <RequinsEdit xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le" />

@ -7,12 +7,6 @@
<d2p1:DateD>2022-06-09T14:59:29.3884138+02:00</d2p1:DateD> <d2p1:DateD>2022-06-09T14:59:29.3884138+02:00</d2p1:DateD>
<d2p1:Surnom>bob</d2p1:Surnom> <d2p1:Surnom>bob</d2p1:Surnom>
</d2p1:Expert> </d2p1:Expert>
<d2p1:Expert>
<d2p1:Email>salut</d2p1:Email>
<d2p1:MotDePasse>hey</d2p1:MotDePasse>
<d2p1:DateD>2022-06-09T14:59:29.3884138+02:00</d2p1:DateD>
<d2p1:Surnom>bob</d2p1:Surnom>
</d2p1:Expert>
</Experts> </Experts>
<Users xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le"> <Users xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le">
<d2p1:Utilisateur> <d2p1:Utilisateur>
@ -20,10 +14,5 @@
<d2p1:MotDePasse>salut</d2p1:MotDePasse> <d2p1:MotDePasse>salut</d2p1:MotDePasse>
<d2p1:NbSubmit>0</d2p1:NbSubmit> <d2p1:NbSubmit>0</d2p1:NbSubmit>
</d2p1:Utilisateur> </d2p1:Utilisateur>
<d2p1:Utilisateur>
<d2p1:Email>a</d2p1:Email>
<d2p1:MotDePasse>salut</d2p1:MotDePasse>
<d2p1:NbSubmit>0</d2p1:NbSubmit>
</d2p1:Utilisateur>
</Users> </Users>
</DataToPersistUsers> </DataToPersistUsers>
Loading…
Cancel
Save