feat(application): RubroTreeBuilder + GetRubroTree con tieneAvisos (CAT-002)
This commit is contained in:
@@ -18,7 +18,7 @@ public class RubroTreeBuilderTests
|
||||
[Fact]
|
||||
public void Build_empty_returns_empty_list()
|
||||
{
|
||||
var result = RubroTreeBuilder.Build([], incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build([], incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
result.Should().BeEmpty();
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public class RubroTreeBuilderTests
|
||||
{
|
||||
var rubros = new[] { MakeRubro(1, null, "Autos", 0) };
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
result.Should().HaveCount(1);
|
||||
result[0].Id.Should().Be(1);
|
||||
@@ -50,7 +50,7 @@ public class RubroTreeBuilderTests
|
||||
MakeRubro(2, null, "Camiones", 1)
|
||||
};
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
result.Should().HaveCount(3);
|
||||
result[0].Id.Should().Be(1); // Orden=0
|
||||
@@ -70,7 +70,7 @@ public class RubroTreeBuilderTests
|
||||
MakeRubro(3, 2, "Compactos", 0),
|
||||
};
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
result.Should().HaveCount(1);
|
||||
result[0].Id.Should().Be(1);
|
||||
@@ -91,7 +91,7 @@ public class RubroTreeBuilderTests
|
||||
MakeRubro(2, null, "Motos", 1, activo: false),
|
||||
};
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
result.Should().HaveCount(1);
|
||||
result[0].Id.Should().Be(1);
|
||||
@@ -106,7 +106,7 @@ public class RubroTreeBuilderTests
|
||||
MakeRubro(2, null, "Motos", 1, activo: false),
|
||||
};
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: true);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: true, new Dictionary<int, int>());
|
||||
|
||||
result.Should().HaveCount(2);
|
||||
}
|
||||
@@ -125,7 +125,7 @@ public class RubroTreeBuilderTests
|
||||
MakeRubro(5, 1, "A", 0),
|
||||
};
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
|
||||
var hijos = result[0].Hijos;
|
||||
hijos.Should().HaveCount(4);
|
||||
@@ -135,6 +135,47 @@ public class RubroTreeBuilderTests
|
||||
hijos[3].Nombre.Should().Be("D"); // Orden=3
|
||||
}
|
||||
|
||||
// ── TieneAvisos from avisoCounts dict ────────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void Build_SetsTieneAvisos_True_WhenCountGreaterThanZero()
|
||||
{
|
||||
var rubros = new[]
|
||||
{
|
||||
MakeRubro(1, null, "Autos", 0),
|
||||
MakeRubro(2, null, "Motos", 1),
|
||||
};
|
||||
var avisoCounts = new Dictionary<int, int> { { 1, 2 }, { 2, 0 } };
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, avisoCounts);
|
||||
|
||||
result.Single(n => n.Id == 1).TieneAvisos.Should().BeTrue();
|
||||
result.Single(n => n.Id == 2).TieneAvisos.Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_SetsTieneAvisos_False_WhenCountIsZero()
|
||||
{
|
||||
var rubros = new[] { MakeRubro(1, null, "Autos", 0) };
|
||||
var avisoCounts = new Dictionary<int, int> { { 1, 0 } };
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, avisoCounts);
|
||||
|
||||
result[0].TieneAvisos.Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_SetsTieneAvisos_False_WhenIdMissingFromDict()
|
||||
{
|
||||
// Stub semantics: missing key = 0 = false
|
||||
var rubros = new[] { MakeRubro(1, null, "Autos", 0) };
|
||||
var avisoCounts = new Dictionary<int, int>(); // empty dict
|
||||
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, avisoCounts);
|
||||
|
||||
result[0].TieneAvisos.Should().BeFalse();
|
||||
}
|
||||
|
||||
// ── O(n) perf smoke test ──────────────────────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
@@ -148,7 +189,7 @@ public class RubroTreeBuilderTests
|
||||
rubros.Add(MakeRubro(i, 1, $"Child{i}", i - 2));
|
||||
|
||||
var sw = System.Diagnostics.Stopwatch.StartNew();
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false);
|
||||
var result = RubroTreeBuilder.Build(rubros, incluirInactivos: false, new Dictionary<int, int>());
|
||||
sw.Stop();
|
||||
|
||||
result.Should().HaveCount(1);
|
||||
|
||||
Reference in New Issue
Block a user