public void VendorCsvGeneratorShouldCreateHeaderRowAndSubsequentRowsOfEqualLength() { String[] csv = VendorsCsvGenerator.GenerateVendorCsv(vendorViewModels).Split('\r'); bool eachRowIsEqualLength = csv.Length >= 2; int headerLength = csv[0].Split(',').Length - 1; for (int i = 1; i < csv.Length; i++) { bool isEscaped = false; int commaCount = 0; foreach (char c in csv[i]) { if (c.Equals('\"')) { isEscaped = !isEscaped; } else if (c.Equals(',') && !isEscaped) { commaCount += 1; } } if (commaCount != headerLength) { eachRowIsEqualLength = false; } } Assert.True(eachRowIsEqualLength, "Vendor Csv Generator should return a csv where column header (" + headerLength.ToString() + ") and row length is equal \n" + VendorsCsvGenerator.GenerateVendorCsv(vendorViewModels)); }
public void VendorCsvGeneratorShouldCreateARowForEachVendorInput() { String csv = VendorsCsvGenerator.GenerateVendorCsv(vendorViewModels); bool rowsEqualsViewModelCountPlusOne = (csv.Split().Length == vendorViewModels.Count + 1); Assert.Equal(vendorViewModels.Count + 1, csv.Split('\r').Length); //Assert.True(rowsEqualsViewModelCountPlusOne, "vendor csv generator should return a string with number of rows equal to inputted vendors + 1"); }
public async Task <IActionResult> OnGetExportAsync(string searchString) { ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User); IList <Vendor> vendors = _vendorRepository.ListVendorsForUserBySearchString(searchString, user); VendorViewModels = new ListSortedVendorViewModel(vendors, searchString).VendorViewModels; String csv = VendorsCsvGenerator.GenerateVendorCsv(VendorViewModels); return(File(new MemoryStream(Encoding.UTF8.GetBytes(csv)), "text/csv", "exported_vendors.csv")); }