Index: test/Plugins/Wti/Wti.Data.Test/WtiProjectTest.cs =================================================================== diff -u -ra4ac4e49268888b50f6f9606a1b8dd8225e1b24f -rfdc45df8cf7ca4dba62fb6e96b5cf8ef7ab73ade --- test/Plugins/Wti/Wti.Data.Test/WtiProjectTest.cs (.../WtiProjectTest.cs) (revision a4ac4e49268888b50f6f9606a1b8dd8225e1b24f) +++ test/Plugins/Wti/Wti.Data.Test/WtiProjectTest.cs (.../WtiProjectTest.cs) (revision fdc45df8cf7ca4dba62fb6e96b5cf8ef7ab73ade) @@ -1,7 +1,12 @@ -using DelftTools.Utils; +using System; +using DelftTools.Shell.Core; +using DelftTools.Utils; + using NUnit.Framework; +using Rhino.Mocks; + namespace Wti.Data.Test { [TestFixture] @@ -15,7 +20,48 @@ // assert Assert.IsInstanceOf(project); + Assert.IsInstanceOf(project); Assert.AreEqual("WTI 2017 project", project.Name); } + + [Test] + public void NotifyObservers_ObserverAttachedToProject_ObserverIsNotified() + { + // setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var project = new WtiProject(); + project.Attach(observer); + + // call + project.NotifyObservers(); + + // assert + mocks.VerifyAll(); + } + + [Test] + public void NotifyObservers_ObserverHasBeenDetached_ObserverShouldNotBeNotified() + { + // setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + mocks.ReplayAll(); + + var project = new WtiProject(); + project.Attach(observer); + project.Detach(observer); + + // call + project.NotifyObservers(); + + // assert + mocks.VerifyAll(); // Expect no calls on observer + } + + } } \ No newline at end of file