diff --git a/Src/FdoUi/FdoUiTests/FdoUiTests.cs b/Src/FdoUi/FdoUiTests/FdoUiTests.cs index 6046e94180..44751c52d1 100644 --- a/Src/FdoUi/FdoUiTests/FdoUiTests.cs +++ b/Src/FdoUi/FdoUiTests/FdoUiTests.cs @@ -6,10 +6,13 @@ // Responsibility: TE Team // --------------------------------------------------------------------------------------------- +using System; using NUnit.Framework; +using SIL.FieldWorks.Common.FwUtils; using SIL.LCModel.Core.Text; using SIL.LCModel; using SIL.LCModel.DomainServices; +using XCore; namespace SIL.FieldWorks.FdoUi { @@ -141,5 +144,33 @@ public void DeleteCmPictureObject_RelatedCleanUpDoesNotNegateDeletion() Assert.That(obj.IsValidObject, Is.False); } } + + [Test] + public void DeleteUnderlyingObject_PublishesDeleteRecordForCurrentObject() + { + var obj = Cache.ServiceLocator.GetInstance().Create(); + using (var propertyTable = new PropertyTable(null)) + using (DummyCmObjectUi objectUi = DummyCmObjectUi.MakeDummyUi(obj)) + { + propertyTable.SetProperty("ActiveClerkSelectedObject", obj, false); + objectUi.PropTable = propertyTable; + + object published = null; + Action deleteRecordHandler = data => published = data; + try + { + FwUtils.Subscriber.Subscribe(EventConstants.DeleteRecord, deleteRecordHandler); + + objectUi.DeleteUnderlyingObject(); + + Assert.That(published, Is.SameAs(objectUi)); + Assert.That(obj.IsValidObject, Is.True); + } + finally + { + FwUtils.Subscriber.Unsubscribe(EventConstants.DeleteRecord, deleteRecordHandler); + } + } + } } }