@@ -144,6 +144,64 @@ public void Should_Read_Provided_Csv_File_With_Header()
144
144
FileHelper . DeleteTestFile ( filePath ) ;
145
145
}
146
146
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
+
147
205
[ Fact ]
148
206
public void Should_Read_Provided_Csv_File_With_Header_Using_The_Region_Delimiter_Settings ( )
149
207
{
@@ -553,6 +611,7 @@ public void Should_Validate_The_Input_When_Reading_The_Csv_File()
553
611
554
612
// Cleanup
555
613
FileHelper . DeleteTestFile ( filePath ) ;
614
+ FileHelper . DeleteTestFile ( errorFolderPath ) ;
556
615
}
557
616
558
617
[ Fact ]
0 commit comments