using DnsmasqWebUI.Models.Dnsmasq.EffectiveConfig; using DnsmasqWebUI.Models.Hosts; namespace DnsmasqWebUI.Tests.Models.EffectiveConfig; public class PendingManagedHostsChangeTests { [Fact] public void HasChanges_WhenEntriesDiffer_ReturnsTrue() { var oldEntries = new List { new() { Id = "1", Address = "192.168.1.1", Names = new List { "host1" } } }; var newEntries = new List { new() { Id = "1", Address = "192.168.1.2", Names = new List { "host1" } } }; var pending = new PendingManagedHostsChange(oldEntries, newEntries, "/etc/hosts"); Assert.True(pending.HasChanges); } [Fact] public void HasChanges_WhenEntriesSame_ReturnsFalse() { var entries = new List { new() { Id = "1", Address = "192.168.1.1", Names = new List { "host1" } } }; var clone = entries.Select(e => new HostEntry { Id = e.Id, Address = e.Address, Names = new List(e.Names) }).ToList(); var pending = new PendingManagedHostsChange(entries, clone, "/etc/hosts"); Assert.False(pending.HasChanges); } [Fact] public void HasChanges_WhenCountDiffers_ReturnsTrue() { var oldEntries = new List { new() { Id = "1", Address = "192.168.1.1", Names = new List() } }; var newEntries = new List { new() { Id = "1", Address = "192.168.1.1", Names = new List() }, new() { Id = "2", Address = "192.168.1.2", Names = new List() } }; var pending = new PendingManagedHostsChange(oldEntries, newEntries, "/etc/hosts"); Assert.True(pending.HasChanges); } [Fact] public void HasChanges_WhenInlineCommentDiffers_ReturnsTrue() { var oldEntries = new List { new() { Id = "1", Address = "10.0.0.1", Names = new List { "a" }, InlineComment = "old" } }; var newEntries = new List { new() { Id = "1", Address = "10.0.0.1", Names = new List { "a" }, InlineComment = "new" } }; var pending = new PendingManagedHostsChange(oldEntries, newEntries, "/etc/hosts"); Assert.True(pending.HasChanges); } }