Beispiel #1
0
        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.");
        }