/
valzem
/
MatControl
Обзор
Документация
Войти
/
valzem
/
MatControl
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/MatControl.Tests/RealFilesImportTests.cs
84 строки
3 KB
MatControl Dev
Сортировка и поиск в списках, статусы в Движении, импорт с выбором файла, поле Отдел, скиллы
07 авг 2026, 16:45
07 авг 2026, 16:45
4bdbbb6
Код
Авторство
О чём код?
using MatControl.Business; using MatControl.Data; using MatControl.Data.Repositories; using MatControl.Domain; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging.Abstractions; namespace MatControl.Tests; public class RealFilesImportTests : IDisposable { private readonly string _dbPath; private readonly string _importDir; public RealFilesImportTests() { _dbPath = Path.Combine(Path.GetTempPath(), $"matcontrol_real_{Guid.NewGuid():N}.db"); _importDir = Path.Combine(DataPaths.GetSolutionRoot(), "data", "import"); } [Fact] public async Task ImportAllAsync_ProcessesRealSourceFiles() { var phonebook = Path.Combine(_importDir, "Телефонный_справочник_Облкомтруда.docx"); if (!File.Exists(phonebook)) { return; } using (var context = CreateContext(_dbPath)) { await DbInitializer.InitializeAsync(context); context.Employees.Add(new Employee { FullName = "Тест МОЛ", Position = "МОЛ", IsResponsible = true }); await context.SaveChangesAsync(); } using (var context = CreateContext(_dbPath)) { var service = new ImportService( context, new EmployeeRepository(context), new AssetRepository(context), new SupplyRepository(context), new AssetMovementRepository(context), NullLogger<ImportService>.Instance); var result = await service.ImportAllAsync(_importDir); Assert.True(result.IsSuccess, result.Message); Assert.True(result.Value!.EmployeesProcessed > 10); Assert.True(result.Value.AssetsProcessed > 200); Assert.True(result.Value.SuppliesProcessed > 20); Assert.True(await context.Employees.CountAsync() > 10); Assert.True(await context.Employees.AnyAsync(e => e.Department.Length > 0)); Assert.True(await context.Assets.CountAsync() > 200); Assert.True(await context.Supplies.CountAsync() > 20); Assert.True(await context.AssetMovements.CountAsync() > 200); } } private static MatControlDbContext CreateContext(string dbPath) { var options = new DbContextOptionsBuilder<MatControlDbContext>() .UseSqlite($"Data Source={dbPath}") .Options; return new MatControlDbContext(options); } public void Dispose() { SqliteConnection.ClearAllPools(); if (File.Exists(_dbPath)) { File.Delete(_dbPath); } } }