feat: merge event rankings and attribute badges into the page printer
Interview notes can print each student's ranked events and a shared attribute legend from the same catalog as the ranking index, without leftover table markup or collapsed answer space. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -116,4 +116,53 @@ public class NoteTemplateMerger_Tests
|
||||
Assert.That(raw, Is.EqualTo($"x{NoteTemplateMerger.AnswerSpaceHtml}y"));
|
||||
Assert.That(wrapped, Is.EqualTo(NoteTemplateMerger.AnswerSpaceHtml));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Merge_RankedStudents_IsHtmlFragmentSentinel()
|
||||
{
|
||||
var result = NoteTemplateMerger.Merge(
|
||||
"{{Name}}\n{{RankedStudents}}",
|
||||
PrintTokenMap.Create());
|
||||
|
||||
Assert.That(result, Does.Contain(NoteTemplateMerger.HtmlFragmentSentinel(NoteTemplateMerger.RankedStudentsToken)));
|
||||
Assert.That(result, Does.Not.Contain("{{RankedStudents}}"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ApplyLayout_ReplacesHtmlFragmentSentinel()
|
||||
{
|
||||
var sentinel = NoteTemplateMerger.HtmlFragmentSentinel(NoteTemplateMerger.RankedStudentsToken);
|
||||
var fragments = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
[NoteTemplateMerger.RankedStudentsToken] = "<div class=\"print-rank-badges\">Aria</div>"
|
||||
};
|
||||
|
||||
var raw = NoteTemplateMerger.ApplyLayout($"x{sentinel}y", fragments);
|
||||
var wrapped = NoteTemplateMerger.ApplyLayout($"<p>{sentinel}</p>", fragments);
|
||||
var missing = NoteTemplateMerger.ApplyLayout($"x{sentinel}y");
|
||||
|
||||
Assert.That(raw, Is.EqualTo("x<div class=\"print-rank-badges\">Aria</div>y"));
|
||||
Assert.That(wrapped, Is.EqualTo("<div class=\"print-rank-badges\">Aria</div>"));
|
||||
Assert.That(missing, Is.EqualTo("xy"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Merge_Legend_IsSentinel()
|
||||
{
|
||||
var result = NoteTemplateMerger.Merge("{{Legend}}", PrintTokenMap.Create());
|
||||
|
||||
Assert.That(result, Does.Contain(NoteTemplateMerger.LegendSentinel));
|
||||
Assert.That(result, Does.Not.Contain("{{Legend}}"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ApplyLayout_ReplacesLegendSentinel()
|
||||
{
|
||||
var html = NoteTemplateMerger.ApplyLayout(
|
||||
$"<p>{NoteTemplateMerger.LegendSentinel}</p>");
|
||||
|
||||
Assert.That(html, Does.Contain("print-badge-legend"));
|
||||
Assert.That(html, Does.Contain(EventAttributeMarks.Individual));
|
||||
Assert.That(html, Does.Not.Contain("event-rank-1"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user