neon-sprawl/server/NeonSprawl.Server.Tests/Game/Crafting/RecipeDefinitionsWorldApiTe...

57 lines
2.3 KiB
C#

using NeonSprawl.Server.Game.Crafting;
namespace NeonSprawl.Server.Tests.Game.Crafting;
public class RecipeDefinitionsWorldApiTests
{
/// <summary>Frozen prototype eight in registry id order (ordinal). Keep in sync with manual QA and Bruno.</summary>
public static readonly string[] FrozenEightInIdOrder =
[
"make_armor_quick",
"make_contract_token",
"make_field_stim_batch",
"make_field_stim_mk0",
"make_prototype_armor",
"make_survey_drone_kit",
"refine_scrap_efficient",
"refine_scrap_standard",
];
[Fact]
public async Task GetRecipeDefinitions_ShouldReturnSchemaV1_WithFrozenEightInIdOrder()
{
// Arrange
await using var factory = new InMemoryWebApplicationFactory();
var client = factory.CreateClient();
// Act
var response = await client.GetAsync("/game/world/recipe-definitions");
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var body = await response.Content.ReadFromJsonAsync<RecipeDefinitionsListResponse>();
Assert.NotNull(body);
Assert.Equal(RecipeDefinitionsListResponse.CurrentSchemaVersion, body!.SchemaVersion);
Assert.NotNull(body.Recipes);
var ids = body.Recipes.Select(static r => r.Id).ToList();
Assert.Equal(FrozenEightInIdOrder, ids);
var refine = body.Recipes.Single(r => r.Id == "refine_scrap_standard");
Assert.Equal("Refine Scrap (Standard)", refine.DisplayName);
Assert.Equal("process", refine.RecipeKind);
Assert.Equal("refine", refine.RequiredSkillId);
Assert.Single(refine.Inputs);
Assert.Equal("scrap_metal_bulk", refine.Inputs[0].ItemId);
Assert.Equal(5, refine.Inputs[0].Quantity);
Assert.Single(refine.Outputs);
Assert.Equal("refined_plate_stock", refine.Outputs[0].ItemId);
Assert.Equal(1, refine.Outputs[0].Quantity);
var stim = body.Recipes.Single(r => r.Id == "make_field_stim_mk0");
Assert.Equal("make", stim.RecipeKind);
Assert.Equal(2, stim.Inputs.Count);
Assert.Equal("refined_plate_stock", stim.Inputs[0].ItemId);
Assert.Equal(2, stim.Inputs[0].Quantity);
Assert.Equal("scrap_metal_bulk", stim.Inputs[1].ItemId);
Assert.Equal(1, stim.Inputs[1].Quantity);
}
}