Files
OpenNest/OpenNest.Tests/Data/DefaultConfigTests.cs
AJ Isaacs 7081c7b4d0 feat: add embedded CL-980 default config with first-run EnsureDefaults
Embeds CL-980.json as a resource in OpenNest.Data and adds EnsureDefaults()
to LocalJsonProvider, which seeds the machines directory on first run when empty.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 20:23:00 -04:00

76 lines
2.2 KiB
C#

using OpenNest.Data;
namespace OpenNest.Tests.Data;
public class DefaultConfigTests : IDisposable
{
private readonly string _testDir;
public DefaultConfigTests()
{
_testDir = Path.Combine(Path.GetTempPath(), "OpenNestTests", Guid.NewGuid().ToString());
}
public void Dispose()
{
if (Directory.Exists(_testDir))
Directory.Delete(_testDir, true);
}
[Fact]
public void EnsureDefaults_EmptyDirectory_CopiesDefaultConfig()
{
var provider = new LocalJsonProvider(_testDir);
provider.EnsureDefaults();
var machines = provider.GetMachines();
Assert.Single(machines);
Assert.Equal("CL-980", machines[0].Name);
}
[Fact]
public void EnsureDefaults_ExistingFiles_DoesNotCopy()
{
var provider = new LocalJsonProvider(_testDir);
var existing = new MachineConfig { Name = "My Machine" };
provider.SaveMachine(existing);
provider.EnsureDefaults();
var machines = provider.GetMachines();
Assert.Single(machines);
Assert.Equal("My Machine", machines[0].Name);
}
[Fact]
public void DefaultConfig_HasValidStructure()
{
var provider = new LocalJsonProvider(_testDir);
provider.EnsureDefaults();
var machines = provider.GetMachines();
var config = provider.GetMachine(machines[0].Id);
Assert.NotNull(config);
Assert.Equal(1, config.SchemaVersion);
Assert.Equal(MachineType.Laser, config.Type);
Assert.Equal(UnitSystem.Inches, config.Units);
Assert.NotEmpty(config.Materials);
foreach (var material in config.Materials)
{
Assert.False(string.IsNullOrWhiteSpace(material.Name));
Assert.NotEmpty(material.Thicknesses);
foreach (var thickness in material.Thicknesses)
{
Assert.True(thickness.Value > 0);
Assert.True(thickness.Kerf > 0);
Assert.False(string.IsNullOrWhiteSpace(thickness.AssistGas));
Assert.NotNull(thickness.LeadIn);
Assert.NotNull(thickness.LeadOut);
Assert.NotNull(thickness.CutOff);
}
}
}
}