ex-int-02-meet-the-teacher/MeetTheTeacher.Test/Import/TeacherDataCsvImporterTests.cs
github-classroom[bot] 1be1863b20
Initial commit
2025-04-24 07:02:41 +00:00

52 lines
2 KiB
C#

using MeetTheTeacher.Import;
using MeetTheTeacher.Model;
namespace MeetTheTeacher.Test.Import;
public sealed class TeacherDataCsvImporterTests
{
[Fact]
public void DataLoading_Simple()
{
var importer = new TeacherDataCsvImporter(GetPath("teachers_minimal.csv"),
GetPath("teachers-with-business-card_minimal.csv"));
IEnumerable<Teacher> data = importer.LoadTeacherData();
// wrapping in list, because enumerating multiple times
var dataAsList = new List<Teacher>(data);
dataAsList.Should().NotBeEmpty().And.HaveCount(4);
CheckTeacher(dataAsList[0], "Aberger Christian", DayOfWeek.Tuesday, SchoolUnit.UE06,
new TimeFrame(new(12,45), new(13,35)),
"E74", null);
CheckTeacher(dataAsList[1], "Atak Mehmet", null, null, null, null, null);
CheckTeacher(dataAsList[2], "Auernig Franz", DayOfWeek.Thursday, SchoolUnit.UE05,
new TimeFrame(new(11,50), new(12,40)),
"E31", null);
CheckTeacher(dataAsList[3], "Baar Erich", DayOfWeek.Friday, SchoolUnit.UE04,
new TimeFrame(new(10,55), new(11,45)),
"E05", 12240);
}
private static void CheckTeacher(Teacher teacher, string name, DayOfWeek? dayOfWeek, SchoolUnit? unit,
TimeFrame? time, string? room, int? imageId)
{
teacher.Name.Should().Be(name);
teacher.ConsultingHourWeekDay.Should().Be(dayOfWeek);
teacher.ConsultingHourUnit.Should().Be(unit);
teacher.ConsultingHour.Should().Be(time);
teacher.Room.Should().Be(room);
if (imageId.HasValue)
{
teacher.Should().BeOfType<TeacherWithBusinessCard>();
}
else
{
teacher.Should().NotBeOfType<TeacherWithBusinessCard>();
}
}
private static string GetPath(string fileName) => Path.Combine(Directory.GetCurrentDirectory(), $"Data/{fileName}");
}