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> RequinsEdit { get; private set; }
public ObservableCollection<Requin> RequinsAdd { get; private set; }
public Requin SelectedRequin { get; set; }
public List<String> FunFacts { get; private set; } = new List<String>();
/// <summary>
/// DéPENDANCE
/// </summary>
@ -165,11 +168,11 @@ namespace Business
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>();
int test = 0;
if (!string.IsNullOrWhiteSpace(motif))
if (!String.IsNullOrWhiteSpace(motif))
{
foreach (Requin req in lRech)
{
@ -200,14 +203,31 @@ namespace Business
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)
|| string.IsNullOrWhiteSpace(video) || string.IsNullOrWhiteSpace(photoCarte))
if (String.IsNullOrWhiteSpace(nom) || String.IsNullOrWhiteSpace(nomSci) || String.IsNullOrWhiteSpace(description) || String.IsNullOrWhiteSpace(photo)
|| String.IsNullOrWhiteSpace(video) || String.IsNullOrWhiteSpace(photoCarte))
{
return false;
}
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));
DataContractSerializer SerializerUsers { get; set; }
= new DataContractSerializer(typeof(DataToPersistUsers));
DataContractSerializer SerializerFun { get; set; }
= new DataContractSerializer(typeof(List<String>));
// DataToPersistReq et DataToPersistUsers
DataToPersistReq dataReq = new DataToPersistReq();
DataToPersistUsers data = new DataToPersistUsers();
List<String> lesFunFacts = new List<String>();
// Chemin des fichiers
string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance");
String FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance");
// Noms des fichiers
string FileNameReq { get; set; }
String FileNameReq { get; set; }
= "ficReqs";
string FileNameUsers { get; set; }
String FileNameUsers { get; set; }
= "ficUsers";
String FileNameFunFacts { get; set; }
= "ficFunFacts";
// Fichiers complets
string FileReq => Path.Combine(FilePath, FileNameReq);
string FileUsers => Path.Combine(FilePath, FileNameUsers);
String FileReq => Path.Combine(FilePath, FileNameReq);
String FileUsers => Path.Combine(FilePath, FileNameUsers);
String FileFunFacts => Path.Combine(FilePath, FileNameFunFacts);
@ -78,6 +85,8 @@ namespace Persistance
Directory.CreateDirectory(FileUsers);
}
data.Users.Clear();
data.Experts.Clear();
data.Users.AddRange(users);
data.Experts.AddRange(experts);
@ -117,6 +126,9 @@ namespace Persistance
Directory.CreateDirectory(FilePath);
}
dataReq.Requins.Clear();
dataReq.RequinsAdd.Clear();
dataReq.RequinsEdit.Clear();
dataReq.Requins.AddRange(reqs);
dataReq.RequinsAdd.AddRange(reqsAdd);
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);
(List<Utilisateur> users, List<Expert> experts) LoadUsers();
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<Expert> expert = new List<Expert>();
private List<String> funFacts = new List<String>();
public Stub()
{
// Requins
@ -32,6 +34,10 @@ namespace StubLib
// Utilisateurs
utilisateurs.Add(new Utilisateur("a", "salut"));
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;
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 Modèle;
using System.Collections.Generic;
using NPOI.SS.Formula.Functions;
namespace UnitTests
{
@ -42,7 +43,7 @@ namespace UnitTests
Utilisateur u2 = new Utilisateur("jeancarotte@gamil.com", "miamlescarottes", 48);
Expert e1 = new Expert("AlexPert@gmail.com", "lesRequins", "Le Gros BG", d);
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);
Console.WriteLine(u1);
Console.WriteLine(u2);
@ -62,7 +63,7 @@ namespace UnitTests
Console.WriteLine(e2);
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);
foreach (Requin r in finie)
{

@ -8,6 +8,7 @@
<ItemGroup>
<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.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

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

@ -5,7 +5,8 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="550" Width="1100">
Title="MainWindow" Height="550" Width="1100"
WindowState="Maximized">
<DockPanel x:Name="Dock2">
<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:Video>Videos/Vid-Requin-Blanc.mp4</d2p1:Video>
</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>
<RequinsAdd 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:Surnom>bob</d2p1:Surnom>
</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>
<Users xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mod%C3%A8le">
<d2p1:Utilisateur>
@ -20,10 +14,5 @@
<d2p1:MotDePasse>salut</d2p1:MotDePasse>
<d2p1:NbSubmit>0</d2p1:NbSubmit>
</d2p1:Utilisateur>
<d2p1:Utilisateur>
<d2p1:Email>a</d2p1:Email>
<d2p1:MotDePasse>salut</d2p1:MotDePasse>
<d2p1:NbSubmit>0</d2p1:NbSubmit>
</d2p1:Utilisateur>
</Users>
</DataToPersistUsers>
Loading…
Cancel
Save