using AsbCloudApp.Exceptions; using CsvHelper; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; namespace AsbCloudInfrastructure.Tests; /// <summary> /// Хелпер, который помогает получать мок-данные из csv файла /// </summary> public static class CsvMockHelper { /// <summary> /// метод получения данных из файла /// </summary> /// <typeparam name="T"></typeparam> /// <param name="path">путь до файла</param> /// <returns></returns> /// <exception cref="ArgumentInvalidException"></exception> public static IEnumerable<T> Get<T>(string path) { var resourceName = Assembly.GetExecutingAssembly() .GetManifestResourceNames() .Where(r => r.Contains(path)) .FirstOrDefault(); if (String.IsNullOrEmpty(resourceName)) throw new ArgumentInvalidException(nameof(path), "Файл с mock-данными не найден"); using var stream = Assembly.GetExecutingAssembly() .GetManifestResourceStream(resourceName)!; using (var reader = new StreamReader(stream)) { using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { var dataSaubMaps = csv.GetRecords<T>().ToArray(); return dataSaubMaps; } } } }