public async Task PhoneBook_AppendAlphabetically() { // Arrange var records = Enumerable.Range(0, recordsToCreate) .Select(i => fakerPhoneRecord.Generate()) .ToList(); // Act foreach (var record in records) { await PhoneBookWithFileWriting.AppendAsync(fileLocation, record.Name, record.Number); } // Assert var data = await File.ReadAllLinesAsync(fileLocation); data.Length .Should() .Be(recordsToCreate); data .Should() .Equal(records .OrderBy(record => record.Name) .Select(record => $"{record.Name},{record.Number}")); }
[InlineData(3, 2, 9, 1)] // skip, take exceeds available, returns available public async Task PhoneBook_GetList( int recordsToCreate, int skip, int take, int expectedCount) { // Arrange var records = Enumerable.Range(0, recordsToCreate) .Select(i => fakerPhoneRecord.Generate()) .ToList(); foreach (var record in records) { await PhoneBookWithFileWriting.AppendAsync(fileLocation, record.Name, record.Number); } // Act IEnumerable <string> phoneRecords = await PhoneBookWithFileWriting.GetListAsync(fileLocation, skip, take); // Assert phoneRecords .Should() .HaveCount(expectedCount); records .OrderBy(record => record.Name) .Select(record => $"{record.Name},{record.Number}") .Skip(skip) .Take(take) .Should() .Equal(phoneRecords); }
public async Task PhoneBook_GetLargeList() { // Arrange var recordsToCreate = 100; for (int i = 0; i < recordsToCreate; i++) { var record = fakerPhoneRecord.Generate(); await PhoneBookWithFileWriting.AppendAsync(fileLocation, record.Name, record.Number).ConfigureAwait(false); } // Act IEnumerable <string> phoneRecords = await PhoneBookWithFileWriting.GetListAsync(fileLocation, 0, recordsToCreate).ConfigureAwait(false); // Assert phoneRecords .Should() .HaveCount(recordsToCreate); }
[InlineData(10)] // Can append repeatedly public async Task PhoneBook_Append(int recordsToCreate) { // Arrange var records = Enumerable.Range(0, recordsToCreate) .Select(i => fakerPhoneRecord.Generate()) .ToList(); // Act foreach (var record in records) { await PhoneBookWithFileWriting.AppendAsync(fileLocation, record.Name, record.Number).ConfigureAwait(false); } // Assert var data = await File.ReadAllLinesAsync(fileLocation); data.Length .Should() .Be(recordsToCreate); data .Should() .BeEquivalentTo(records.Select(record => $"{record.Name},{record.Number}")); }