Merge branch 'phase/36-person-card-tabs'

This commit is contained in:
Leonid Pershin
2026-08-20 05:54:23 +03:00
4 changed files with 54 additions and 3 deletions
@@ -101,6 +101,38 @@ public class AppropriatenessSimulationTests
Assert.Contains(pupil.Items, item => item.Def == "TShirt" && item.Color == "Red" && item.Location == ItemLocations.Bag);
}
[Fact]
public void RedressPerson_WritesApparelChangedRows()
{
using var school = Open(TuesdayMorning, seed: 31);
school.DressRules = school.DressRules with
{
Students = new DressRulePair(FormPolicies.Regular, ColorPolicies.NoBright),
};
var pupil = school.Roster!.People.First(person => person.IsStudent && person.LockerRoomId is null);
var items = pupil.Items.ToList();
items.Add(new InventoryItem("TShirt", "Red", 1f, ItemLocations.Worn));
ReplaceItems(pupil, items);
ApparelDresser.RedressPerson(school, pupil, ApparelMode.Everyday, includeHome: false);
Assert.Contains(
school.DayLog,
row => row.PersonId == pupil.Id
&& row.Type == PersonLogTypes.ApparelChanged
&& row.ThingDef == "TShirt");
var page = PersonLogBrowser.Apply(
school.DayLog,
pupil.Id,
new PersonLogQuery(null, Descending: true, Page: 1, PageSize: 20),
school.Catalog,
"ru");
Assert.Contains(page.Entries, entry => entry.Type == PersonLogTypes.ApparelChanged);
Assert.Contains(
page.Entries,
entry => entry.Label.StartsWith("переоделся:", StringComparison.Ordinal));
}
[Fact]
public void PendingStrictRule_DoesNotApplyUntilNextMorning()
{
@@ -99,6 +99,25 @@ public class PersonDayLogTests
Assert.Equal("UseToilet", page.Entries[0].ThingDef);
}
[Fact]
public void ApparelReplaced_FlowsThroughPagedLog()
{
using var school = OpenEmpty(TuesdayNoon);
var person = school.Roster!.People.First();
school.AppendDayLog(new PersonLogEvent(person.Id, TuesdayNoon, PersonLogTypes.ApparelReplaced, "Shirt"));
var page = PersonLogBrowser.Apply(
school.DayLog,
person.Id,
new PersonLogQuery(null, Descending: true, Page: 1, PageSize: 20),
school.Catalog,
"ru");
Assert.Single(page.Entries);
Assert.Equal(PersonLogTypes.ApparelReplaced, page.Entries[0].Type);
Assert.StartsWith("получил новую ", page.Entries[0].Label, StringComparison.Ordinal);
}
private static void TickMinutes(School school, int minutes)
{
for (var i = 0; i < minutes; i++)