Move ServerbSqliteTests to integration (#19807)

This commit is contained in:
metalgearsloth
2023-09-10 15:09:12 +10:00
committed by GitHub
parent 3abd6acbbc
commit 25c8a03276

View File

@@ -1,41 +1,36 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Content.Server.Database; using Content.Server.Database;
using Content.Shared.GameTicking; using Content.Shared.GameTicking;
using Content.Shared.Humanoid; using Content.Shared.Humanoid;
using Content.Shared.Preferences; using Content.Shared.Preferences;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NUnit.Framework;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.IoC;
using Robust.Shared.Maths; using Robust.Shared.Maths;
using Robust.Shared.Network; using Robust.Shared.Network;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.Manager;
namespace Content.Tests.Server.Preferences namespace Content.IntegrationTests.Tests.Preferences
{ {
[TestFixture] [TestFixture]
public sealed class ServerDbSqliteTests : ContentUnitTest public sealed class ServerDbSqliteTests
{ {
[TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
- type: dataset - type: dataset
id: names_first_male id: sqlite_test_names_first_male
values: values:
- Aaden - Aaden
- type: dataset - type: dataset
id: names_first_female id: sqlite_test_names_first_female
values: values:
- Aaliyah - Aaliyah
- type: dataset - type: dataset
id: names_last id: sqlite_test_names_last
values: values:
- Ackerley"; - Ackerley";
@@ -69,50 +64,54 @@ namespace Content.Tests.Server.Preferences
); );
} }
private static ServerDbSqlite GetDb() private static ServerDbSqlite GetDb(IConfigurationManager cfgManager)
{ {
var builder = new DbContextOptionsBuilder<SqliteServerDbContext>(); var builder = new DbContextOptionsBuilder<SqliteServerDbContext>();
var conn = new SqliteConnection("Data Source=:memory:"); var conn = new SqliteConnection("Data Source=:memory:");
conn.Open(); conn.Open();
builder.UseSqlite(conn); builder.UseSqlite(conn);
return new ServerDbSqlite(() => builder.Options, true, IoCManager.Resolve<IConfigurationManager>(), true); return new ServerDbSqlite(() => builder.Options, true, cfgManager, true);
} }
[Test] [Test]
public async Task TestUserDoesNotExist() public async Task TestUserDoesNotExist()
{ {
var db = GetDb(); var pair = await PoolManager.GetServerClient();
var db = GetDb(pair.Server.ResolveDependency<IConfigurationManager>());
// Database should be empty so a new GUID should do it. // Database should be empty so a new GUID should do it.
Assert.Null(await db.GetPlayerPreferencesAsync(NewUserId())); Assert.Null(await db.GetPlayerPreferencesAsync(NewUserId()));
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestInitPrefs() public async Task TestInitPrefs()
{ {
var db = GetDb(); var pair = await PoolManager.GetServerClient();
var db = GetDb(pair.Server.ResolveDependency<IConfigurationManager>());
var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd")); var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd"));
const int slot = 0; const int slot = 0;
var originalProfile = CharlieCharlieson(); var originalProfile = CharlieCharlieson();
await db.InitPrefsAsync(username, originalProfile); await db.InitPrefsAsync(username, originalProfile);
var prefs = await db.GetPlayerPreferencesAsync(username); var prefs = await db.GetPlayerPreferencesAsync(username);
Assert.That(prefs.Characters.Single(p => p.Key == slot).Value.MemberwiseEquals(originalProfile)); Assert.That(prefs.Characters.Single(p => p.Key == slot).Value.MemberwiseEquals(originalProfile));
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestDeleteCharacter() public async Task TestDeleteCharacter()
{ {
var db = GetDb(); var pair = await PoolManager.GetServerClient();
var server = pair.Server;
var db = GetDb(server.ResolveDependency<IConfigurationManager>());
var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd")); var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd"));
IoCManager.Resolve<ISerializationManager>().Initialize();
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
prototypeManager.Initialize();
prototypeManager.LoadFromStream(new StringReader(Prototypes));
await db.InitPrefsAsync(username, new HumanoidCharacterProfile()); await db.InitPrefsAsync(username, new HumanoidCharacterProfile());
await db.SaveCharacterSlotAsync(username, CharlieCharlieson(), 1); await db.SaveCharacterSlotAsync(username, CharlieCharlieson(), 1);
await db.SaveSelectedCharacterIndexAsync(username, 1); await db.SaveSelectedCharacterIndexAsync(username, 1);
await db.SaveCharacterSlotAsync(username, null, 1); await db.SaveCharacterSlotAsync(username, null, 1);
var prefs = await db.GetPlayerPreferencesAsync(username); var prefs = await db.GetPlayerPreferencesAsync(username);
Assert.That(!prefs.Characters.Any(p => p.Key != 0)); Assert.That(!prefs.Characters.Any(p => p.Key != 0));
await pair.CleanReturnAsync();
} }
private static NetUserId NewUserId() private static NetUserId NewUserId()