using SlipItIn.Server.Data; namespace SlipItIn.Server.Tests; public class DbSeederTests { [Fact] public async Task SeedAsync_SeedsUsersAndPhrases_WhenDatabaseIsEmpty() { var factory = TestDbHelper.CreateFactory(); using var db = factory.CreateDbContext(); await DbSeeder.SeedAsync(db); Assert.Equal(2, db.Users.Count()); Assert.True(db.Phrases.Count() >= 5); Assert.All(db.Phrases, p => Assert.True(p.IsActive)); } [Fact] public async Task SeedAsync_DoesNothing_WhenUsersAlreadyExist() { var factory = TestDbHelper.CreateFactory(); using var db = factory.CreateDbContext(); TestDbHelper.SeedUser(db); await DbSeeder.SeedAsync(db); Assert.Equal(1, db.Users.Count()); Assert.Empty(db.Phrases); } [Fact] public async Task SeedAsync_DoesNothing_WhenPhrasesAlreadyExist() { var factory = TestDbHelper.CreateFactory(); using var db = factory.CreateDbContext(); TestDbHelper.SeedPhrases(db, 1); await DbSeeder.SeedAsync(db); Assert.Equal(1, db.Users.Count()); // nur der Creator-User des Phrase-Seedings Assert.Equal(1, db.Phrases.Count()); } [Fact] public async Task SeedAsync_IsIdempotent_WhenCalledTwice() { var factory = TestDbHelper.CreateFactory(); using var db = factory.CreateDbContext(); await DbSeeder.SeedAsync(db); var userCount = db.Users.Count(); var phraseCount = db.Phrases.Count(); await DbSeeder.SeedAsync(db); Assert.Equal(userCount, db.Users.Count()); Assert.Equal(phraseCount, db.Phrases.Count()); } }