Dev2.Core.Tests.DeployViewModelTest.DeployViewModel_Deploy_WhenDeployingResource_ResourceRepositoryDeployCalled C# (CSharp) Method

DeployViewModel_Deploy_WhenDeployingResource_ResourceRepositoryDeployCalled() private method

        public void DeployViewModel_Deploy_WhenDeployingResource_ResourceRepositoryDeployCalled()
        {
            //New Mocks
            var mockedServerRepo = new Mock<IEnvironmentRepository>();
            var server = new Mock<IEnvironmentModel>();

            server.Setup(x => x.AuthorizationService).Returns(_authService.Object);
            _authService.Setup(a => a.IsAuthorized(AuthorizationContext.DeployFrom, It.IsAny<string>())).Returns(true);
            _authService.Setup(a => a.IsAuthorized(AuthorizationContext.DeployTo, It.IsAny<string>())).Returns(true);
            var secondServer = new Mock<IEnvironmentModel>();
            secondServer.Setup(x => x.AuthorizationService).Returns(_authService.Object);
            var provider = new Mock<IEnvironmentModelProvider>();
            var resourceNode = new Mock<IContextualResourceModel>();
            var resRepo = new Mock<IResourceRepository>();
            var resRepo2 = new Mock<IResourceRepository>();
            var id = Guid.NewGuid();

            const string expectedResourceName = "Test Resource";
            resourceNode.Setup(res => res.ResourceName).Returns(expectedResourceName);
            resourceNode.Setup(res => res.Environment.Connection.ServerEvents).Returns(new Mock<IEventPublisher>().Object);
            resourceNode.Setup(res => res.ID).Returns(id);

            //Setup Servers
            resRepo.Setup(c => c.FindSingle(It.IsAny<Expression<Func<IResourceModel, bool>>>(), false, false)).Verifiable();
            resRepo.Setup(c => c.FindSingle(It.IsAny<Expression<Func<IResourceModel, bool>>>(), false, false)).Returns(resourceNode.Object);
            resRepo.Setup(c => c.DeployResources(It.IsAny<IEnvironmentModel>(), It.IsAny<IEnvironmentModel>(),
                                       It.IsAny<IDeployDto>(), It.IsAny<IEventAggregator>())).Verifiable();

            resRepo.Setup(c => c.All()).Returns(new List<IResourceModel>());
            resRepo2.Setup(c => c.All()).Returns(new List<IResourceModel>());

            server.Setup(svr => svr.IsConnected).Returns(true);
            server.Setup(svr => svr.Connection).Returns(DebugOutputViewModelTest.CreateMockConnection(new Random()).Object);
            server.Setup(svr => svr.ResourceRepository).Returns(resRepo.Object);

            secondServer.Setup(svr => svr.IsConnected).Returns(true);
            secondServer.Setup(svr => svr.Connection).Returns(DebugOutputViewModelTest.CreateMockConnection(new Random()).Object);
            secondServer.Setup(svr => svr.ResourceRepository).Returns(resRepo2.Object);

            mockedServerRepo.Setup(svr => svr.Fetch(It.IsAny<IEnvironmentModel>())).Returns(server.Object);

            provider.Setup(prov => prov.Load()).Returns(new List<IEnvironmentModel> { server.Object, secondServer.Object });

            var initialResource = new Mock<IContextualResourceModel>();
            initialResource.Setup(res => res.Environment).Returns(server.Object);
            initialResource.Setup(res => res.ResourceName).Returns(expectedResourceName);

            //Setup Navigation Tree

            var resourceTreeNode = new ExplorerItemModel(new Mock<IConnectControlSingleton>().Object, new Mock<IStudioResourceRepository>().Object);

            //Setup Server Resources

            var mockStudioResourceRepository = GetMockStudioResourceRepository();
            mockStudioResourceRepository.Setup(repository => repository.FindItem(It.IsAny<Func<IExplorerItemModel, bool>>())).Returns(resourceTreeNode);
            var sourceDeployNavigationViewModel = new DeployNavigationViewModel(new Mock<IEventAggregator>().Object, new TestAsyncWorker(), mockedServerRepo.Object, mockStudioResourceRepository.Object, true, new Mock<IConnectControlSingleton>().Object) { Environment = server.Object, ExplorerItemModels = new ObservableCollection<IExplorerItemModel>() };

            var deployViewModel = new DeployViewModel(new TestAsyncWorker(), provider.Object, mockedServerRepo.Object, new Mock<IEventAggregator>().Object, mockStudioResourceRepository.Object, new Mock<IConnectControlViewModel>().Object, new Mock<IConnectControlViewModel>().Object, null, null, null, new Mock<IConnectControlSingleton>().Object)
            {
                Source = sourceDeployNavigationViewModel,
                Target = sourceDeployNavigationViewModel,
                SelectedSourceServer = server.Object
            };
            PrivateObject p = new PrivateObject(deployViewModel);
            p.SetField("_getActive", new Func<IEnvironmentModel>(() => new Mock<IEnvironmentModel>().Object));
            p.SetField("_setActive", new Action<IEnvironmentModel>(a => { }));
            resourceTreeNode.IsChecked = true;
            //------------Execute Test---------------------------
            deployViewModel.DeployCommand.Execute(null);

            resRepo.Verify(
                sender =>
                sender.DeployResources(It.IsAny<IEnvironmentModel>(), It.IsAny<IEnvironmentModel>(),
                                       It.IsAny<IDeployDto>(), It.IsAny<IEventAggregator>()));
        }
DeployViewModelTest