Move ServerbSqliteTests to integration (#19807)
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Content.Server.Database;
|
||||
using Content.Shared.GameTicking;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Preferences;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Enums;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.IntegrationTests.Tests.Preferences
|
||||
{
|
||||
[TestFixture]
|
||||
public sealed class ServerDbSqliteTests
|
||||
{
|
||||
[TestPrototypes]
|
||||
private const string Prototypes = @"
|
||||
- type: dataset
|
||||
id: sqlite_test_names_first_male
|
||||
values:
|
||||
- Aaden
|
||||
|
||||
- type: dataset
|
||||
id: sqlite_test_names_first_female
|
||||
values:
|
||||
- Aaliyah
|
||||
|
||||
- type: dataset
|
||||
id: sqlite_test_names_last
|
||||
values:
|
||||
- Ackerley";
|
||||
|
||||
private static HumanoidCharacterProfile CharlieCharlieson()
|
||||
{
|
||||
return new(
|
||||
"Charlie Charlieson",
|
||||
"The biggest boy around.",
|
||||
"Human",
|
||||
21,
|
||||
Sex.Male,
|
||||
Gender.Epicene,
|
||||
new HumanoidCharacterAppearance(
|
||||
"Afro",
|
||||
Color.Aqua,
|
||||
"Shaved",
|
||||
Color.Aquamarine,
|
||||
Color.Azure,
|
||||
Color.Beige,
|
||||
new ()
|
||||
),
|
||||
ClothingPreference.Jumpskirt,
|
||||
BackpackPreference.Backpack,
|
||||
new Dictionary<string, JobPriority>
|
||||
{
|
||||
{SharedGameTicker.FallbackOverflowJob, JobPriority.High}
|
||||
},
|
||||
PreferenceUnavailableMode.StayInLobby,
|
||||
new List<string> (),
|
||||
new List<string>()
|
||||
);
|
||||
}
|
||||
|
||||
private static ServerDbSqlite GetDb(IConfigurationManager cfgManager)
|
||||
{
|
||||
var builder = new DbContextOptionsBuilder<SqliteServerDbContext>();
|
||||
var conn = new SqliteConnection("Data Source=:memory:");
|
||||
conn.Open();
|
||||
builder.UseSqlite(conn);
|
||||
return new ServerDbSqlite(() => builder.Options, true, cfgManager, true);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestUserDoesNotExist()
|
||||
{
|
||||
var pair = await PoolManager.GetServerClient();
|
||||
var db = GetDb(pair.Server.ResolveDependency<IConfigurationManager>());
|
||||
// Database should be empty so a new GUID should do it.
|
||||
Assert.Null(await db.GetPlayerPreferencesAsync(NewUserId()));
|
||||
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestInitPrefs()
|
||||
{
|
||||
var pair = await PoolManager.GetServerClient();
|
||||
var db = GetDb(pair.Server.ResolveDependency<IConfigurationManager>());
|
||||
var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd"));
|
||||
const int slot = 0;
|
||||
var originalProfile = CharlieCharlieson();
|
||||
await db.InitPrefsAsync(username, originalProfile);
|
||||
var prefs = await db.GetPlayerPreferencesAsync(username);
|
||||
Assert.That(prefs.Characters.Single(p => p.Key == slot).Value.MemberwiseEquals(originalProfile));
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestDeleteCharacter()
|
||||
{
|
||||
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"));
|
||||
await db.InitPrefsAsync(username, new HumanoidCharacterProfile());
|
||||
await db.SaveCharacterSlotAsync(username, CharlieCharlieson(), 1);
|
||||
await db.SaveSelectedCharacterIndexAsync(username, 1);
|
||||
await db.SaveCharacterSlotAsync(username, null, 1);
|
||||
var prefs = await db.GetPlayerPreferencesAsync(username);
|
||||
Assert.That(!prefs.Characters.Any(p => p.Key != 0));
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
|
||||
private static NetUserId NewUserId()
|
||||
{
|
||||
return new(Guid.NewGuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user