Added preferences backend (#465)
* Added preferences backend * Gender -> Sex * ClientPreferencesManager properties * Username validation * Fixed client init * WIP db * Actually working sqlite db * Dropped shitty sqlite libraries, dropped DbUp, added MigrationManager * Added profile deletion, test * Docs, sanity, tests, cleanup * Cleaned up profile and appearance, fixed running on .net core Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
This commit is contained in:
committed by
Pieter-Jan Briers
parent
c1b9bb348d
commit
f19795edaf
101
Content.Tests/Server/Preferences/PreferencesDatabaseTests.cs
Normal file
101
Content.Tests/Server/Preferences/PreferencesDatabaseTests.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
using System.IO;
|
||||
using Content.Server.Preferences;
|
||||
using Content.Shared.Preferences;
|
||||
using NUnit.Framework;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.UnitTesting;
|
||||
|
||||
namespace Content.Tests.Server.Preferences
|
||||
{
|
||||
[TestFixture]
|
||||
public class PreferencesDatabaseTests : RobustUnitTest
|
||||
{
|
||||
private const int MaxCharacterSlots = 10;
|
||||
|
||||
private static ICharacterProfile CharlieCharlieson()
|
||||
{
|
||||
return new HumanoidCharacterProfile
|
||||
{
|
||||
Name = "Charlie Charlieson",
|
||||
Age = 21,
|
||||
Sex = Sex.Male,
|
||||
CharacterAppearance = new HumanoidCharacterAppearance()
|
||||
{
|
||||
HairStyleName = "Afro",
|
||||
HairColor = Color.Aqua,
|
||||
FacialHairStyleName = "Shaved",
|
||||
FacialHairColor = Color.Aquamarine,
|
||||
EyeColor = Color.Azure,
|
||||
SkinColor = Color.Beige
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static PreferencesDatabase GetDb()
|
||||
{
|
||||
return new PreferencesDatabase(Path.GetTempFileName(), MaxCharacterSlots);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestUserDoesNotExist()
|
||||
{
|
||||
var db = GetDb();
|
||||
Assert.Null(db.GetPlayerPreferences("[The database should be empty so any string should do]"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestUserDoesExist()
|
||||
{
|
||||
var db = GetDb();
|
||||
const string username = "bobby";
|
||||
db.SaveSelectedCharacterIndex(username, 0);
|
||||
var prefs = db.GetPlayerPreferences(username);
|
||||
Assert.NotNull(prefs);
|
||||
Assert.Zero(prefs.SelectedCharacterIndex);
|
||||
Assert.That(prefs.Characters.TrueForAll(character => character is null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestUpdateCharacter()
|
||||
{
|
||||
var db = GetDb();
|
||||
const string username = "charlie";
|
||||
const int slot = 0;
|
||||
var originalProfile = CharlieCharlieson();
|
||||
db.SaveSelectedCharacterIndex(username, slot);
|
||||
db.SaveCharacterSlot(username, originalProfile, slot);
|
||||
var prefs = db.GetPlayerPreferences(username);
|
||||
Assert.That(prefs.Characters[slot].MemberwiseEquals(originalProfile));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeleteCharacter()
|
||||
{
|
||||
var db = GetDb();
|
||||
const string username = "charlie";
|
||||
const int slot = 0;
|
||||
db.SaveSelectedCharacterIndex(username, slot);
|
||||
db.SaveCharacterSlot(username, CharlieCharlieson(), slot);
|
||||
db.SaveCharacterSlot(username, null, slot);
|
||||
var prefs = db.GetPlayerPreferences(username);
|
||||
Assert.That(prefs.Characters.TrueForAll(character => character is null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestInvalidSlot()
|
||||
{
|
||||
var db = GetDb();
|
||||
const string username = "charlie";
|
||||
const int slot = -1;
|
||||
|
||||
db.SaveSelectedCharacterIndex(username, slot);
|
||||
db.SaveCharacterSlot(username, CharlieCharlieson(), slot);
|
||||
var prefs = db.GetPlayerPreferences(username);
|
||||
Assert.AreEqual(prefs.SelectedCharacterIndex, 0);
|
||||
|
||||
db.SaveSelectedCharacterIndex(username, MaxCharacterSlots);
|
||||
prefs = db.GetPlayerPreferences(username);
|
||||
Assert.AreEqual(prefs.SelectedCharacterIndex, MaxCharacterSlots-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user