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.
62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
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());
|
|
}
|
|
}
|