public void MainViewModel_OnStudioClosing_CallsSchedulerOnClosingClosesSuccessfully()
{
//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>();
popup.Setup(a => a.ShowSchedulerCloseConfirmation()).Returns(MessageBoxResult.Yes).Verifiable();
var scheduler = new SchedulerViewModelForTesting(EventPublishers.Aggregator, new DirectoryObjectPickerDialog(), popup.Object, new TestAsyncWorker()) { RetValue = true, WorkSurfaceContext = WorkSurfaceContext.Scheduler };
var task = new Mock<IScheduledResource>();
task.Setup(a => a.IsDirty).Returns(true);
scheduler.SelectedTask = task.Object;
var vm = new WorkSurfaceContextViewModel(new EventAggregator(), new WorkSurfaceKey(), scheduler, new Mock<IPopupController>().Object, (a, b) => { });
environmentRepository.Setup(repo => repo.All()).Returns(new List<IEnvironmentModel>());
mvm.Items.Add(vm);
Assert.IsTrue(mvm.OnStudioClosing());
}