public void ParseFileTest()
        {
            // Arrange
              var ordersFilePath = Path.Combine(TestContext.DeploymentDirectory, "Orders.csv");
              using(var reader = new StreamReader(ordersFilePath))
              {
            var fileParser = new DelimiterSeparatedValuesFileParser<Order>();

            // Act
            var parseResults = fileParser.Read(reader, delimiter: ',', includeHeaders: false);

            // Assert
            Assert.IsTrue(_orders.SequenceEqual(parseResults.Select(parseResult => parseResult.Instance)));
              }
        }
예제 #2
0
        public static List <LineasFile> ObtieneDatosArchivo(string path)
        {
            try
            {
                List <LineasFile> lineas = new List <LineasFile>();

                using (var reader = new StreamReader(path, Encoding.GetEncoding("iso8859-1")))
                {
                    var fileParser   = new DelimiterSeparatedValuesFileParser <LineasFile>();
                    var parseResults = fileParser.Read(reader, delimiter: '|', includeHeaders: true);

                    List <IEnumerable <string> > errores = null;
                    foreach (var parseResult in parseResults)
                    {
                        if (parseResult.Errors != null && parseResult.Errors.Any())
                        {
                            errores.Add(parseResult.Errors);
                        }
                        if (parseResult.Instance != null)
                        {
                            lineas.Add(parseResult.Instance);
                        }
                    }

                    if (errores != null && errores.Any())
                    {
                        List <string> mensajes = new List <string>();
                        errores.ForEach(l => mensajes.Add(l.FirstOrDefault()));
                        // _logger.Error(mensajes);
                    }
                }
                // _logger.Info("Se encontraron - " + lineas.Count + " - registros en el archivo de Líneas Vencidas y por Vencer.");
                if (MoverArchivo(path))
                {
                    Console.WriteLine($"Se proceso el archivo y el total de elementos el {lineas.Count}");
                }
                else
                {
                    Console.WriteLine($"No se proceso el archivo y el total de elementos el {lineas.Count}");
                }
                return(lineas);
            }
            catch (Exception ex)
            {
                throw new Exception("La ruta del archivo " + path + " es incorrecta." + ex);
            }
        }
        public void ParseFileWithErrorsTest()
        {
            // Arrange
              var ordersWithErrorsFilePath = Path.Combine(TestContext.DeploymentDirectory, "OrdersWithErrors.csv");
              using(var reader = new StreamReader(ordersWithErrorsFilePath))
              {
            var fileParser = new DelimiterSeparatedValuesFileParser<Order>();

            // Act
            var parseResults = fileParser.Read(reader, delimiter: ',', includeHeaders: false);

            // Assert
            var actualLinesWithError = default(int);
            var actualFieldsWithError = default(int);

            foreach(var parseResult in parseResults)
            {
              Assert.IsNull(parseResult.Instance);

              if(parseResult.Errors.Any())
              {
            actualLinesWithError++;
            actualFieldsWithError += parseResult.Errors.Count();
              }
            }

            // In the OrdersWithErrors.csv file created when the test class is initialized
            // There are three lines with errors so the logger must be called three times
            var expectedLinesWithErrors = 3;
            Assert.AreEqual<int>(expectedLinesWithErrors, actualLinesWithError);

            // And there must be eight errors in the fields being parsed
            var expectedErrorsInFields = 8;
            Assert.AreEqual<int>(expectedErrorsInFields, actualFieldsWithError);
              }
        }