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)); } }