Testprojekt hinzugefügt & umfassende Server-Tests
Neues Testprojekt SlipItIn.Server.Tests erstellt und in die Solution eingebunden. Unit- und Integrationstests für AuthController, DbSeeder, GameHub und GameService implementiert. TestDbHelper für InMemory-DbContexts und Testdaten hinzugefügt. Tests prüfen Erfolgs- und Fehlerfälle inkl. Validierungen, Fehlerbehandlung und DB-Zustände.
This commit is contained in:
61
SlipItIn.Server.Tests/DbSeederTests.cs
Normal file
61
SlipItIn.Server.Tests/DbSeederTests.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user