public void WhenPriceIsInvalid_ThenItThrowsLineImportException(string line) { var act = new TestDelegate(() => ClothsFactory.FromCsvString(line)); var exception = Assert.Throws <LineImportException>(act); Assert.IsTrue(exception.InnerException.Message.Contains("The import price could not be parsed to a valid decimal")); }
public async Task <List <Cloth> > ImportFromCsv(Stream csv, bool skipFirstLine = true) { var cloths = new List <Cloth>(); using (var sr = new StreamReader(csv)) { bool endOfFile; bool firstLine = true; do { var line = await sr.ReadLineAsync(); if (!firstLine || !skipFirstLine) { if (!string.IsNullOrWhiteSpace(line)) { cloths.Add(ClothsFactory.FromCsvString(line)); } } endOfFile = string.IsNullOrWhiteSpace(line); firstLine = false; } while (!endOfFile); } return(cloths); }
public void WhenProductIdIsInvalid_ThenItThrowsLineImportException(string line) { var act = new TestDelegate(() => ClothsFactory.FromCsvString(line)); var exception = Assert.Throws <LineImportException>(act); Assert.IsTrue(exception.InnerException.Message.Contains("Product ID could not be converted to a long")); }
public void WhenImportLineContainsUnexpectedFieldCount_ThenItThrowsLineImportException(string line) { var act = new TestDelegate(() => ClothsFactory.FromCsvString(line)); var exception = Assert.Throws <LineImportException>(act); Assert.IsTrue(exception.InnerException.Message.Contains("Failed to import CSV line as Cloth")); }
public void WhenImportingLineUntrimmed_ThenPropertiesKeepWhitespace(string line, int id, string name, string description, decimal priceInDollars, string category) { var cloth = ClothsFactory.FromCsvString(line, false); Assert.AreEqual(cloth.ProductId, id); Assert.AreEqual(cloth.Name, name); Assert.AreEqual(cloth.Description, description); Assert.AreEqual(cloth.Price.Amount, priceInDollars); Assert.AreEqual(cloth.Category, category); }
public void WhenImportLineIsCorrect_ThenItReturnsClothObject(string line, int id, string name, string description, decimal priceInDollars, string category) { var cloth = ClothsFactory.FromCsvString(line); Assert.AreEqual(cloth.ProductId, id); Assert.AreEqual(cloth.Name, name); Assert.AreEqual(cloth.Description, description); Assert.AreEqual(cloth.Price.Amount, priceInDollars); Assert.AreEqual(cloth.Category, category); }
public void WhenClothLineIsExported_ThenLineIsFormatted() { var decimalSeperator = CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator; var importCsvString = "1234,name,description,80,pants"; var expectedOutputString = $"1234,name,description,80{decimalSeperator}00,pants"; var cloth = ClothsFactory.FromCsvString(importCsvString); var actualOutputString = cloth.ToCsvString(); Assert.AreEqual(expectedOutputString, actualOutputString); }