public void MainViewModel_AddDeployResourceWorksurface_PublishesSelectItemInDeployMessage() { SelectItemInDeployMessage actual = null; var eventAggregator = new Mock<IEventAggregator>(); eventAggregator.Setup(e => e.Publish(It.IsAny<object>())).Callback((object msg) => actual = msg as SelectItemInDeployMessage).Verifiable(); #region Setup ImportService - GRRR! //Barney, commented out when I removed the feedback stuff from the studio //SetupDefaultMef(); #endregion var resourceID = Guid.NewGuid(); var environmentID = Guid.NewGuid(); var envRepo = new Mock<IEnvironmentRepository>(); envRepo.Setup(e => e.All()).Returns(new List<IEnvironmentModel>()); Mock<IResourceRepository> mockResourceRepository = new Mock<IResourceRepository>(); Mock<IContextualResourceModel> mockResourceModel = new Mock<IContextualResourceModel>(); mockResourceModel.Setup(model => model.ID).Returns(resourceID); mockResourceRepository.Setup(repository => repository.FindSingle(It.IsAny<Expression<Func<IResourceModel, bool>>>(), false, false)).Returns(mockResourceModel.Object); Mock<IEnvironmentModel> mockEnvironmentModel = new Mock<IEnvironmentModel>(); mockEnvironmentModel.Setup(model => model.ID).Returns(environmentID); mockEnvironmentModel.Setup(model => model.ResourceRepository).Returns(mockResourceRepository.Object); var environmentModel = mockEnvironmentModel.Object; mockResourceModel.Setup(model => model.Environment).Returns(environmentModel); envRepo.Setup(e => e.Source).Returns(environmentModel); envRepo.Setup(e => e.FindSingle(It.IsAny<Expression<Func<IEnvironmentModel, bool>>>())).Returns(environmentModel); envRepo.Setup(e => e.Source.IsConnected).Returns(false); envRepo.Setup(e => e.Source.Connection.IsConnected).Returns(false); var vm = new MainViewModel(eventAggregator.Object, new TestAsyncWorker(), envRepo.Object, new Mock<IVersionChecker>().Object, false, new Mock<IBrowserPopupController>().Object); vm.AddDeployResourcesWorkSurface(mockResourceModel.Object); var expected = new Mock<IExplorerItemModel>(); expected.Setup(model => model.ResourceId).Returns(resourceID); expected.Setup(model => model.EnvironmentId).Returns(environmentModel.ID); vm.AddDeployResourcesWorkSurface(mockResourceModel.Object); eventAggregator.Verify(e => e.Publish(It.IsAny<object>()), "MainViewModel Handle DeployResourcesMessage did not publish message with the selected view model."); Assert.IsNotNull(actual, "MainViewModel Handle DeployResourcesMessage did not publish message with the selected view model."); Assert.AreEqual(expected.Object.ResourceId, actual.ResourceID, "MainViewModel Handle DeployResourcesMessage did not publish message with the selected display name."); Assert.AreEqual(expected.Object.EnvironmentId, actual.EnvironmentID, "MainViewModel Handle DeployResourcesMessage did not publish message with the selected environment."); }