diff --git a/Sources/DataManagers/DbDataManager.cs b/Sources/DataManagers/DbDataManager.cs index 3534d9c..70f0fd2 100644 --- a/Sources/DataManagers/DbDataManager.cs +++ b/Sources/DataManagers/DbDataManager.cs @@ -27,6 +27,11 @@ namespace DataManagers { Context.Dispose(); } + + public void EnsureCreated() + { + Context.Database.EnsureCreated(); + } } } diff --git a/Sources/EFLib/LolContext.cs b/Sources/EFLib/LolContext.cs index 32b07da..b08b271 100644 --- a/Sources/EFLib/LolContext.cs +++ b/Sources/EFLib/LolContext.cs @@ -7,7 +7,20 @@ namespace EFLib { public DbSet Champions { get; set; } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite("Data Source=oiseaux.db"); + public LolContext(DbContextOptions options) + : base(options) + { } + + public LolContext() + { } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + optionsBuilder.UseSqlite("Data Source=oiseaux.db"); + } + } } } diff --git a/Sources/Tests/DbChampionManager_UT.cs b/Sources/Tests/DbChampionManager_UT.cs new file mode 100644 index 0000000..d992a4f --- /dev/null +++ b/Sources/Tests/DbChampionManager_UT.cs @@ -0,0 +1,122 @@ +namespace Tests; + +using System.Threading.Tasks; +using DataManagers; +using EFLib; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Model; + +public class DbChampionManager_UT +{ + [Fact] + public async Task Add_TestAsync() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + Champion champion = new Champion("Aurelien", ChampionClass.Tank, "tro bo le type"); + Champion champion2 = new Champion("Croissant", ChampionClass.Assassin, "tro bon le type"); + Champion champion3 = new Champion("Mathilde", ChampionClass.Unknown, "Chut mathilde"); + await db.ChampionsMgr.AddItem(champion); + await db.ChampionsMgr.AddItem(champion2); + await db.ChampionsMgr.AddItem(champion3); + + } + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + Assert.Equal(3, await db.ChampionsMgr.GetNbItems()); + } + + + } + + [Fact] + public async Task Delete_TestAsync() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + + Champion champion = new Champion("Aurelien", ChampionClass.Tank, "tro bo le type"); + Champion champion2 = new Champion("Croissant", ChampionClass.Assassin, "tro bon le type"); + Champion champion3 = new Champion("Mathilde", ChampionClass.Unknown, "Chut mathilde"); + await db.ChampionsMgr.AddItem(champion); + await db.ChampionsMgr.AddItem(champion2); + await db.ChampionsMgr.AddItem(champion3); + + Assert.Equal(3, await db.ChampionsMgr.GetNbItems()); + } + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + + string nameToFind = "Croissant"; + IEnumerable champ = await db.ChampionsMgr.GetItemsByName(nameToFind, 0, 15, "name"); + Champion c = champ.First(); + Assert.Equal("Croissant", c.Name); + await db.ChampionsMgr.DeleteItem(champ.First()); + + Assert.Equal(2, await db.ChampionsMgr.GetNbItems()); + } + } + + [Fact] + public async Task Modify_TestAsync() + { + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + + Champion champion = new Champion("Aurelien", ChampionClass.Tank, "tro bo le type"); + Champion champion2 = new Champion("Croissant", ChampionClass.Assassin, "tro bon le type"); + Champion champion3 = new Champion("Mathilde", ChampionClass.Unknown, "Chut mathilde"); + await db.ChampionsMgr.AddItem(champion); + await db.ChampionsMgr.AddItem(champion2); + await db.ChampionsMgr.AddItem(champion3); + + Assert.Equal(3, await db.ChampionsMgr.GetNbItems()); + } + + using (var db = new DbDataManager(new EFLib.LolContext(options))) + { + db.EnsureCreated(); + + string nameToFind = "Croissant"; + IEnumerable champ = await db.ChampionsMgr.GetItemsByName(nameToFind, 0, 15, "name"); + Champion c = champ.First(); + Assert.Equal("Croissant", c.Name); + Champion c1 = new Champion("Test", c.Class, c.Icon, bio: c.Bio); + await db.ChampionsMgr.UpdateItem(c, c1); + + Assert.Equal(3, await db.ChampionsMgr.GetNbItems()); + champ = await db.ChampionsMgr.GetItemsByName("Test", 0, 15, "name"); + + Assert.Equal("Test", champ.First().Name); + } + } +} \ No newline at end of file diff --git a/Sources/Tests/Tests.csproj b/Sources/Tests/Tests.csproj index 89d8ebd..df4dc81 100644 --- a/Sources/Tests/Tests.csproj +++ b/Sources/Tests/Tests.csproj @@ -19,6 +19,18 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + diff --git a/Sources/Tests/UnitTest1.cs b/Sources/Tests/UnitTest1.cs deleted file mode 100644 index 9d16d18..0000000 --- a/Sources/Tests/UnitTest1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Tests; - -public class UnitTest1 -{ - [Fact] - public void Test1() - { - - } -}