diff --git a/OpenNest.WinForms.Tests/Forms/SavedNestsFormTests.cs b/OpenNest.WinForms.Tests/Forms/SavedNestsFormTests.cs index bacc76d8..92994681 100644 --- a/OpenNest.WinForms.Tests/Forms/SavedNestsFormTests.cs +++ b/OpenNest.WinForms.Tests/Forms/SavedNestsFormTests.cs @@ -145,6 +145,80 @@ public class SavedNestsFormTests "The saved-nest dialog test did not complete."); } + [Theory] + [InlineData(true, false)] + [InlineData(false, false)] + [InlineData(true, true)] + public void NestInformation_SavesOnlyOnAccept_AndRefusesStaleWrites(bool accept, bool conflict) + { + StaTestThread.Run(() => + { + var record = Record("Current name"); + record.Revision = 3; + record.Comments = "Current metadata notes"; + record.Status = NestStatus.ToBeCut; + var repository = new FakeRepository(record) { Conflict = conflict }; + repository.Files[record.Id] = NestFile((Quantity: 2, Parts: 3)); + record.FileSize = repository.Files[record.Id].Length; + var original = repository.Files[record.Id].ToArray(); + using var form = new SavedNestsForm(repository, "http://nest-server:5000"); + form.Show(); + PumpUntil(() => Field(form, "nestGrid").Rows.Count == 1, "the nest page"); + var shown = false; + form.ShowNestInfoDialog = dialog => + { + shown = true; + Assert.Equal(record.Name, dialog.NestName); + Assert.Equal(record.Comments, dialog.Notes); + Assert.Equal(NestStatus.ToBeCut, dialog.Status); + dialog.Customer = "Updated customer"; + dialog.Notes = "Updated notes"; + dialog.Status = NestStatus.HasBeenCut; + dialog.MadeBy = "Operator"; + dialog.MaterialName = "Steel"; + dialog.Thickness = 0.25; + return accept ? DialogResult.OK : DialogResult.Cancel; + }; + var button = Field