public void DeployViewModel_SelectDestinationServer_SelectDestinationServer_CalculateStatsHitOnce()
{
//------------Setup for test--------------------------
// ReSharper disable MaximumChainedReferences
_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 source = EnviromentRepositoryTest.CreateMockEnvironment();
var sourceConn = Mock.Get(source.Object.Connection);
sourceConn.Setup(c => c.Disconnect()).Verifiable();
var e1 = EnviromentRepositoryTest.CreateMockEnvironment();
e1.Setup(a => a.AuthorizationService).Returns(_authService.Object);
var c1 = Mock.Get(e1.Object.Connection);
c1.Setup(c => c.Disconnect()).Verifiable();
var s1 = e1.Object;
var e2 = EnviromentRepositoryTest.CreateMockEnvironment();
e2.Setup(a => a.AuthorizationService).Returns(_authService.Object);
var c2 = Mock.Get(e2.Object.Connection);
c2.Setup(c => c.Disconnect()).Verifiable();
var s2 = e2.Object;
var serverProvider = new Mock<IEnvironmentModelProvider>();
serverProvider.Setup(s => s.Load()).Returns(new List<IEnvironmentModel> { s1, s2 });
var repo = new TestEnvironmentRespository(source.Object, e1.Object, e2.Object);
Mock<IDeployStatsCalculator> mockDeployStatsCalculator = new Mock<IDeployStatsCalculator>();
int calcStats;
mockDeployStatsCalculator.Setup(c => c.CalculateStats(It.IsAny<IEnumerable<IExplorerItemModel>>(), It.IsAny<Dictionary<string, Func<IExplorerItemModel, bool>>>(), It.IsAny<ObservableCollection<DeployStatsTO>>(), out calcStats)).Verifiable();
Mock<IStudioResourceRepository> mockStudioResourceRepository = new Mock<IStudioResourceRepository>();
mockStudioResourceRepository.Setup(repository => repository.FindItem(It.IsAny<Func<IExplorerItemModel, bool>>())).Returns(new ExplorerItemModel(mockStudioResourceRepository.Object, new Mock<IAsyncWorker>().Object, new Mock<IConnectControlSingleton>().Object));
// ReSharper disable ObjectCreationAsStatement
new DeployViewModel(new TestAsyncWorker(), serverProvider.Object, repo, new Mock<IEventAggregator>().Object, mockStudioResourceRepository.Object, new Mock<IConnectControlViewModel>().Object, new Mock<IConnectControlViewModel>().Object, mockDeployStatsCalculator.Object, null, null, new Mock<IConnectControlSingleton>().Object) { SelectedSourceServer = s1, SelectedDestinationServer = s2 };
// ReSharper restore ObjectCreationAsStatement
//------------Execute Test---------------------------
//------------Assert Results-------------------------
mockDeployStatsCalculator.Verify(c => c.CalculateStats(It.IsAny<IEnumerable<IExplorerItemModel>>(), It.IsAny<Dictionary<string, Func<IExplorerItemModel, bool>>>(), It.IsAny<ObservableCollection<DeployStatsTO>>(), out calcStats), Times.Exactly(6));
mockDeployStatsCalculator.Verify(a=>a.CheckForNamingConflicts(It.IsAny<List<IExplorerItemModel>>(),It.IsAny<DeployNavigationViewModel>()));
}