mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
58 lines
2.6 KiB
C#
58 lines
2.6 KiB
C#
using RadicadeServer.RecNet.Avatar;
|
|
using Xunit;
|
|
|
|
namespace RadicadeServer.Tests;
|
|
|
|
public class AvatarWireFormatTests
|
|
{
|
|
[Theory]
|
|
[InlineData("8aa79563-ace1-4ba7-ad0c-f3210a78142f,", "8aa79563-ace1-4ba7-ad0c-f3210a78142f,")]
|
|
[InlineData("prefab,material", "prefab,material")]
|
|
[InlineData("prefab,material,", "prefab,material,")]
|
|
[InlineData("prefab,first,second,", "prefab,first,second,")]
|
|
[InlineData("prefab,,second,", "prefab,,second,")]
|
|
public void V4PreservesTheExactMaterialCombinationKey(string catalogKey, string selectionKey)
|
|
{
|
|
var dto = new AvatarItemV4(new AvatarItem { AvatarItemDesc = catalogKey });
|
|
var json = System.Text.Json.JsonSerializer.SerializeToElement(dto);
|
|
Assert.Equal(selectionKey, json.GetProperty("AvatarItemDesc").GetString());
|
|
}
|
|
|
|
[Fact]
|
|
public void ScreenshotShirtSurvivesCatalogToWireConversion()
|
|
{
|
|
var catalog = File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "Fixtures", "2022-avatar.json"));
|
|
var shirt = AvatarUnlockCatalog.ParseCatalog(catalog)
|
|
.Single(item => item.AvatarItemDesc == "8aa79563-ace1-4ba7-ad0c-f3210a78142f,");
|
|
Assert.Equal("8aa79563-ace1-4ba7-ad0c-f3210a78142f,", new AvatarItemV4(shirt).AvatarItemDesc);
|
|
Assert.True(shirt.AvatarItemId > 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void BaseEndpointDoesNotReclassifyClothingAsHiddenBodyParts()
|
|
{
|
|
var originalCatalog = DBConfig.DefaultAvatarCatalog;
|
|
var originalLookup = DBConfig.ResolvableAvatarItemDescs;
|
|
try
|
|
{
|
|
DBConfig.DefaultAvatarCatalog = """
|
|
[{"AvatarItemDesc":"shirt,","IsBaseAvatarItem":false},
|
|
{"AvatarItemDesc":"base-body,","IsBaseAvatarItem":true}]
|
|
""";
|
|
DBConfig.ResolvableAvatarItemDescs = new HashSet<string>();
|
|
// These endpoints do not access the database.
|
|
var api = new RadicadeServer.API.Avatars.V1.AvatarV1(null!);
|
|
var response = Assert.IsType<Microsoft.AspNetCore.Mvc.OkObjectResult>(api.GetDefaultBaseAvatarItems());
|
|
var baseItems = Assert.IsType<List<AvatarItem>>(response.Value);
|
|
Assert.Equal("base-body,", Assert.Single(baseItems).AvatarItemDesc);
|
|
Assert.DoesNotContain(api.GetDefaultUnlocks(), item => item.AvatarItemDesc == "shirt,");
|
|
Assert.Contains(api.GetDefaultUnlocks(), item => item.AvatarItemDesc == "base-body,");
|
|
}
|
|
finally
|
|
{
|
|
DBConfig.DefaultAvatarCatalog = originalCatalog;
|
|
DBConfig.ResolvableAvatarItemDescs = originalLookup;
|
|
}
|
|
}
|
|
}
|