Keep legal first and last names for formal lists; show DisplayFirstName on teams, calendars, and import matching so two Josiahs can be told apart. Co-authored-by: Cursor <cursoragent@cursor.com>
66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
using System.Text;
|
|
using Core.Parsers;
|
|
using Tests.Builders;
|
|
|
|
namespace Tests.Parsers;
|
|
|
|
public class TeamParser_Tests
|
|
{
|
|
[Test]
|
|
public void ParseTest()
|
|
{
|
|
var competitiveEvents = TestEntityHandler.GetEvents();
|
|
var teams = TestEntityHandler.GetTeams(competitiveEvents, TestEntityHandler.GetStudents(competitiveEvents));
|
|
|
|
foreach (var team in teams)
|
|
{
|
|
|
|
Console.WriteLine($"{team.Event.Name}");
|
|
var join = string.Join(", ", team.Students.OrderByDescending(s=> s.Grade + s.TsaYear).Select(s => $"{s.FirstNameLastName}{(team.Captain == s ? " *" : "")}"));
|
|
Console.WriteLine($"\t{join}");
|
|
|
|
}
|
|
Assert.Pass();
|
|
}
|
|
|
|
|
|
[Test]
|
|
public void RegionalPresubmissions()
|
|
{
|
|
var competitiveEvents = TestEntityHandler.GetEvents();
|
|
var students = TestEntityHandler.GetStudents(competitiveEvents);
|
|
var teams = TestEntityHandler.GetTeams(competitiveEvents, students);
|
|
|
|
foreach (var team in teams.Where(t => t.Event.RegionalEvent))
|
|
{
|
|
Console.WriteLine($"{team.Event.Name} {team.Event.RegionalEvent} team.RegionalTimeSlot");
|
|
var join = string.Join(", ", team.Students.OrderByDescending(s => team.Captain == s).ThenByDescending(s => s.Grade + s.TsaYear).Select(s => $"{s.FirstNameLastName}{(team.Captain == s ? " *" +
|
|
"(Cpt.)" : "")}"));
|
|
Console.WriteLine($"\t{join}");
|
|
//Console.WriteLine(team.RegionalTimeSlotObj);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void Parse_MatchesNicknameAndLegalStudentColumns()
|
|
{
|
|
StudentBuilder.ResetIdCounter();
|
|
var jo = StudentBuilder.Create("Josiah", "Brown").WithNickname("Jo").Build();
|
|
var josiahB = StudentBuilder.Create("Josiah", "Green").WithNickname("Josiah B").Build();
|
|
var coding = EventDefinitionBuilder.Team("Coding", 2, 2).Build();
|
|
|
|
const string csv = """
|
|
Team Name,Event Name,Regional Time Slot,Student 1,Student 2
|
|
A,Coding,,Jo,Josiah Green
|
|
""";
|
|
|
|
using var reader = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(csv)));
|
|
using var parser = new TeamParser(reader);
|
|
var teams = parser.Parse([coding], [jo, josiahB]);
|
|
|
|
Assert.That(teams, Has.Length.EqualTo(1));
|
|
Assert.That(teams[0].Students.Select(s => s.Id), Is.EquivalentTo(new[] { jo.Id, josiahB.Id }));
|
|
Assert.That(teams[0].Captain!.Id, Is.EqualTo(jo.Id));
|
|
}
|
|
|
|
} |