diff --git a/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md b/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md index 44d2ed3..d214572 100644 --- a/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md +++ b/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md @@ -83,7 +83,7 @@ namespace ex_041_004_UnitTests public void Add_Test() { var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(databaseName: "Add_writes_to_database") + .UseInMemoryDatabase(databaseName: "Add_Test_database") .Options; // runs the test against one instance of the context @@ -110,8 +110,105 @@ namespace ex_041_004_UnitTests } ``` -test -* nouveau projet -* dépendances -* nuget -* écriture du test \ No newline at end of file +Ce premier test permet d'ajouter 3 nounours et : +* de vérifier qu'il y a bien trois nounours ajoutés +```csharp +Assert.Equal(3, context.Nounours.Count()); +``` +* de vérifier que le premier s'appelle bien Chewbacca : +```csharp +Assert.Equal("Chewbacca", context.Nounours.First().Nom); +``` + +Notez que le choix du fournisseur est bien fait au démarrage du test avec la création du ```DbContextOptionsBuilder``` : +```csharp +var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(databaseName: "Add_writes_to_database") + .Options; +``` +et que l'injection est effectuée plus bas : +```csharp +using (var context = new NounoursContext(options)) +{ + //... +} +``` + +On peut ensuite ajouter un autre test, par exemple : +```csharp +[Fact] +public void Modify_Test() +{ + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(databaseName: "Modify_Test_database") + .Options; + + // Run the test against one instance of the context + using (var context = new NounoursContext(options)) + { + Nounours chewie = new Nounours { Nom = "Chewbacca" }; + Nounours yoda = new Nounours { Nom = "Yoda" }; + Nounours ewok = new Nounours { Nom = "Ewok" }; + + context.Nounours.Add(chewie); + context.Nounours.Add(yoda); + context.Nounours.Add(ewok); + context.SaveChanges(); + } + + // Use a separate instance of the context to verify correct data was saved to database + using (var context = new NounoursContext(options)) + { + string nameToFind = "ew"; + Assert.Equal(2, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + nameToFind = "ewo"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + var ewok = context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).First(); + ewok.Nom = "Wicket"; + context.SaveChanges(); + } + + // Use a separate instance of the context to verify correct data was saved to database + using (var context = new NounoursContext(options)) + { + string nameToFind = "ew"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + nameToFind = "wick"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + } +} +``` +Ce cas de test : +* vérifie d'abord qu'il y a deux nounours dont le nom contient la chaîne "ew", +```csharp +string nameToFind = "ew"; +Assert.Equal(2, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); +``` +* vérifie qu'il y a un nounours dont le nom contient la chaîne "ewo" +```csharp +nameToFind = "ewo"; +Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); +``` +* modifie le nom de ce nounours en "Wicket" +```csharp +var ewok = context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).First(); +ewok.Nom = "Wicket"; +``` +* enregistre les changements +```csharp +context.SaveChanges(); +``` +* vérifie ensuite qu'il n'y a plus qu'un Nounours dont le nom contient la chaîne "ew" +```csharp +string nameToFind = "ew"; +Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); +``` +* vérifie qu'il y a un Nounours dont le nom contient la chaîne "wick" +```csharp +nameToFind = "wick"; +Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); +``` + + +--- +Copyright © 2019-2020 Marc Chevaldonné \ No newline at end of file diff --git a/p08_BDD_EntityFramework/ex_041_004_UnitTests/NounoursDB_Tests.cs b/p08_BDD_EntityFramework/ex_041_004_UnitTests/NounoursDB_Tests.cs index e91d1da..680ae47 100644 --- a/p08_BDD_EntityFramework/ex_041_004_UnitTests/NounoursDB_Tests.cs +++ b/p08_BDD_EntityFramework/ex_041_004_UnitTests/NounoursDB_Tests.cs @@ -11,7 +11,7 @@ namespace ex_041_004_UnitTests public void Add_Test() { var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(databaseName: "Add_writes_to_database") + .UseInMemoryDatabase(databaseName: "Add_Test_database") .Options; // Run the test against one instance of the context @@ -34,5 +34,47 @@ namespace ex_041_004_UnitTests Assert.Equal("Chewbacca", context.Nounours.First().Nom); } } + + [Fact] + public void Modify_Test() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(databaseName: "Modify_Test_database") + .Options; + + // Run the test against one instance of the context + using (var context = new NounoursContext(options)) + { + Nounours chewie = new Nounours { Nom = "Chewbacca" }; + Nounours yoda = new Nounours { Nom = "Yoda" }; + Nounours ewok = new Nounours { Nom = "Ewok" }; + + context.Nounours.Add(chewie); + context.Nounours.Add(yoda); + context.Nounours.Add(ewok); + context.SaveChanges(); + } + + // Use a separate instance of the context to verify correct data was saved to database + using (var context = new NounoursContext(options)) + { + string nameToFind = "ew"; + Assert.Equal(2, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + nameToFind = "ewo"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + var ewok = context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).First(); + ewok.Nom = "Wicket"; + context.SaveChanges(); + } + + // Use a separate instance of the context to verify correct data was saved to database + using (var context = new NounoursContext(options)) + { + string nameToFind = "ew"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + nameToFind = "wick"; + Assert.Equal(1, context.Nounours.Where(n => n.Nom.Contains(nameToFind, System.StringComparison.CurrentCultureIgnoreCase)).Count()); + } + } } }