public void MainViewModel_OnStudioClosing_CallsSettingsOnClosingDirty() { //Barney, commented out when I removed the feedback stuff from the studio //SetupDefaultMef(); var eventPublisher = new Mock<IEventAggregator>(); var environmentRepository = new Mock<IEnvironmentRepository>(); environmentRepository.Setup(repo => repo.Source).Returns(new Mock<IEnvironmentModel>().Object); var versionChecker = new Mock<IVersionChecker>(); var asyncWorker = new Mock<IAsyncWorker>(); asyncWorker.Setup(w => w.Start(It.IsAny<System.Action>(), It.IsAny<System.Action>())).Verifiable(); var connected1 = new Mock<IEnvironmentModel>(); var connected2 = new Mock<IEnvironmentModel>(); var notConnected = new Mock<IEnvironmentModel>(); connected1.Setup(a => a.IsConnected).Returns(true).Verifiable(); connected1.Setup(a => a.Disconnect()).Verifiable(); connected2.Setup(a => a.IsConnected).Returns(true).Verifiable(); connected2.Setup(a => a.Disconnect()).Verifiable(); IList<IEnvironmentModel> lst = new List<IEnvironmentModel> { connected1.Object, connected2.Object, notConnected.Object }; environmentRepository.Setup(repo => repo.All()).Returns(lst); var mvm = new MainViewModel(eventPublisher.Object, asyncWorker.Object, environmentRepository.Object, versionChecker.Object, false); var popup = new Mock<IPopupController>(); var settings = new SettingsViewModelForTest(EventPublishers.Aggregator, popup.Object, new TestAsyncWorker(), new NativeWindow()) { RetValue = true, WorkSurfaceContext = WorkSurfaceContext.Settings }; var task = new Mock<IScheduledResource>(); task.Setup(a => a.IsDirty).Returns(true); settings.IsDirty = true; var vm = new WorkSurfaceContextViewModel(new EventAggregator(), new WorkSurfaceKey(), settings, new Mock<IPopupController>().Object, (a, b) => { }); environmentRepository.Setup(repo => repo.All()).Returns(new List<IEnvironmentModel>()); mvm.Items.Add(vm); Assert.IsTrue(mvm.OnStudioClosing()); }