Skip to content

Commit 91975a4

Browse files
Tino KlijnDotNet2Web
authored andcommitted
Missed a check when testing
1 parent 83b39d7 commit 91975a4

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

CsvCore.Specs/CsvCoreReaderSpecs.cs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,64 @@ public void Should_Read_Provided_Csv_File_With_Header()
144144
FileHelper.DeleteTestFile(filePath);
145145
}
146146

147+
[Fact]
148+
public void Should_Read_Provided_Csv_File_When_Missing_A_Property_In_The_Header()
149+
{
150+
// Arrange
151+
var csvCoreReader = new CsvCoreReader();
152+
153+
var directory = Directory.GetCurrentDirectory();
154+
155+
var filePath = Path.Combine(directory, new Faker().System.FileName(CsvExtension));
156+
157+
File.Create(filePath).Dispose();
158+
159+
var persons = new Faker<CsvContentModel>()
160+
.RuleFor(person => person.Name, (faker, _) => faker.Person.FirstName)
161+
.RuleFor(person => person.Surname, (faker, _) => faker.Person.LastName)
162+
.RuleFor(person => person.BirthDate, (faker, _) => faker.Person.RandomDateOfBirth().ToString())
163+
.RuleFor(person => person.Email, (faker, _) => faker.Internet.Email())
164+
.RuleFor(person => person.Email, (faker, _) => faker.Phone.PhoneNumber())
165+
.Generate(5);
166+
167+
var contentBuilder = new StringBuilder();
168+
169+
contentBuilder.AppendLine("Name;Surname;Birthdate;Email;Phone");
170+
171+
foreach (var person in persons)
172+
{
173+
contentBuilder.AppendLine(CultureInfo.InvariantCulture,
174+
$"{person.Name};{person.Surname};{person.BirthDate};{person.Email}");
175+
}
176+
177+
var content = contentBuilder.ToString();
178+
179+
File.WriteAllText(filePath, content);
180+
181+
// Act
182+
var result = csvCoreReader
183+
.UseDelimiter(';')
184+
.Read<PersonModel>(filePath);
185+
186+
// Assert
187+
var convertedPersons = result.ToList();
188+
189+
convertedPersons.Count.Should().Be(5);
190+
191+
foreach (var person in persons)
192+
{
193+
convertedPersons.SingleOrDefault(cvp => cvp.Name == person.Name).Should().NotBeNull();
194+
var convertedPerson = convertedPersons.Single(cvp => cvp.Name == person.Name);
195+
196+
convertedPerson.Surname.Should().Be(person.Surname);
197+
convertedPerson.BirthDate.Should().Be(DateOnly.Parse(person.BirthDate));
198+
convertedPerson.Email.Should().Be(person.Email);
199+
}
200+
201+
// Cleanup
202+
FileHelper.DeleteTestFile(filePath);
203+
}
204+
147205
[Fact]
148206
public void Should_Read_Provided_Csv_File_With_Header_Using_The_Region_Delimiter_Settings()
149207
{
@@ -553,6 +611,7 @@ public void Should_Validate_The_Input_When_Reading_The_Csv_File()
553611

554612
// Cleanup
555613
FileHelper.DeleteTestFile(filePath);
614+
FileHelper.DeleteTestFile(errorFolderPath);
556615
}
557616

558617
[Fact]

0 commit comments

Comments
 (0)