public void DeployViewModelConnectWithServerExpectedDoesNotDisconnectOtherServers()
{
var source = EnviromentRepositoryTest.CreateMockEnvironment();
var sourceConn = Mock.Get(source.Object.Connection);
sourceConn.Setup(c => c.Disconnect()).Verifiable();
var e1 = EnviromentRepositoryTest.CreateMockEnvironment();
var c1 = Mock.Get(e1.Object.Connection);
c1.Setup(c => c.Disconnect()).Verifiable();
var s1 = e1.Object;
var e2 = EnviromentRepositoryTest.CreateMockEnvironment();
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);
var studioResourceRepository = new Mock<IStudioResourceRepository>();
studioResourceRepository.Setup(repository => repository.Filter(It.IsAny<Func<IExplorerItemModel, bool>>())).Returns(new ObservableCollection<IExplorerItemModel>());
var deployViewModel = new DeployViewModel(new TestAsyncWorker(), serverProvider.Object, repo, new Mock<IEventAggregator>().Object, studioResourceRepository.Object, new Mock<IConnectControlViewModel>().Object, new Mock<IConnectControlViewModel>().Object, null, null, null, new Mock<IConnectControlSingleton>().Object);
Assert.IsTrue(source.Object.IsConnected);
Assert.IsTrue(s1.IsConnected);
Assert.IsTrue(s2.IsConnected);
deployViewModel.SelectedSourceServer = s1;
sourceConn.Verify(c => c.Disconnect(), Times.Never());
c1.Verify(c => c.Disconnect(), Times.Never());
c2.Verify(c => c.Disconnect(), Times.Never());
deployViewModel.SelectedDestinationServer = s2;
sourceConn.Verify(c => c.Disconnect(), Times.Never());
c1.Verify(c => c.Disconnect(), Times.Never());
c2.Verify(c => c.Disconnect(), Times.Never());
Assert.IsTrue(source.Object.IsConnected);
Assert.IsTrue(s1.IsConnected);
Assert.IsTrue(s2.IsConnected);
}