76 lines
2.3 KiB
C#
76 lines
2.3 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 GroupRepositoryTests : IDisposable
|
|
{
|
|
private readonly string _testDir;
|
|
private readonly SQLiteConnection _db;
|
|
private readonly GroupRepository _repo;
|
|
|
|
public GroupRepositoryTests()
|
|
{
|
|
_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 GroupRepository(_db);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_db?.Close();
|
|
if (Directory.Exists(_testDir))
|
|
Directory.Delete(_testDir, true);
|
|
}
|
|
|
|
[Fact]
|
|
public void Insert_And_GetById_ReturnsGroup()
|
|
{
|
|
var group = new Group
|
|
{
|
|
Name = "Alpha Fleet",
|
|
GroupType = (int)GroupType.DroneFleet,
|
|
Description = "Test drone formation"
|
|
};
|
|
|
|
_repo.Insert(group);
|
|
|
|
var result = _repo.GetById(group.Id);
|
|
Assert.NotNull(result);
|
|
Assert.Equal("Alpha Fleet", result.Name);
|
|
Assert.Equal((int)GroupType.DroneFleet, result.GroupType);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetByType_FiltersCorrectly()
|
|
{
|
|
_repo.Insert(new Group { Name = "Fleet A", GroupType = (int)GroupType.DroneFleet });
|
|
_repo.Insert(new Group { Name = "Fleet B", GroupType = (int)GroupType.DroneFleet });
|
|
_repo.Insert(new Group { Name = "Equip G1", GroupType = (int)GroupType.EquipmentGroup });
|
|
|
|
var fleets = _repo.GetByType((int)GroupType.DroneFleet);
|
|
Assert.Equal(2, fleets.Count);
|
|
|
|
var equipGroups = _repo.GetByType((int)GroupType.EquipmentGroup);
|
|
Assert.Single(equipGroups);
|
|
}
|
|
|
|
[Fact]
|
|
public void Delete_RemovesGroup()
|
|
{
|
|
var group = new Group { Name = "ToDelete" };
|
|
_repo.Insert(group);
|
|
_repo.Delete(group.Id);
|
|
|
|
Assert.Null(_repo.GetById(group.Id));
|
|
}
|
|
}
|
|
}
|