95 lines
2.5 KiB
C#
95 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using CounterDrone.Core;
|
|
using CounterDrone.Core.Models;
|
|
using CounterDrone.Core.Repository;
|
|
using SQLite;
|
|
using Xunit;
|
|
|
|
namespace CounterDrone.Core.Tests
|
|
{
|
|
public class ModelRepositoryTests : IDisposable
|
|
{
|
|
private readonly string _testDir;
|
|
private readonly SQLiteConnection _db;
|
|
private readonly ModelRepository _repo;
|
|
|
|
public ModelRepositoryTests()
|
|
{
|
|
_testDir = Path.Combine(Path.GetTempPath(), $"cd_test_{Guid.NewGuid():N}");
|
|
var paths = new TestPathProvider(_testDir);
|
|
var dbManager = new DatabaseManager(paths);
|
|
_db = dbManager.OpenMainDb();
|
|
_repo = new ModelRepository(_db);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_db?.Close();
|
|
if (Directory.Exists(_testDir))
|
|
Directory.Delete(_testDir, true);
|
|
}
|
|
|
|
[Fact]
|
|
public void Insert_And_GetById_ReturnsModel()
|
|
{
|
|
var model = new ModelInfo
|
|
{
|
|
Name = "Test Drone",
|
|
FilePath = "/models/drone.fbx",
|
|
FileSize = 2.5
|
|
};
|
|
|
|
_repo.Insert(model);
|
|
|
|
var result = _repo.GetById(model.Id);
|
|
Assert.NotNull(result);
|
|
Assert.Equal("Test Drone", result.Name);
|
|
Assert.Equal(2.5, result.FileSize);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetAll_ReturnsAllModels()
|
|
{
|
|
_repo.Insert(new ModelInfo { Name = "A" });
|
|
_repo.Insert(new ModelInfo { Name = "B" });
|
|
_repo.Insert(new ModelInfo { Name = "C" });
|
|
|
|
var all = _repo.GetAll();
|
|
Assert.Equal(3, all.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void Delete_RemovesModel()
|
|
{
|
|
var model = new ModelInfo { Name = "ToDelete" };
|
|
_repo.Insert(model);
|
|
|
|
_repo.Delete(model.Id);
|
|
|
|
var result = _repo.GetById(model.Id);
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Update_ModifiesModel()
|
|
{
|
|
var model = new ModelInfo { Name = "Original" };
|
|
_repo.Insert(model);
|
|
|
|
model.Name = "Updated";
|
|
_repo.Update(model);
|
|
|
|
var result = _repo.GetById(model.Id);
|
|
Assert.Equal("Updated", result.Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetById_NonExistent_ReturnsNull()
|
|
{
|
|
var result = _repo.GetById("nonexistent");
|
|
Assert.Null(result);
|
|
}
|
|
}
|
|
}
|