public void ConnectControlSingleton_Remove_SelectedServerIsConnected_StudioRepositoryDisconnectIsCalled() { var studioResourceRepository = new Mock<IStudioResourceRepository>(); studioResourceRepository.Setup(s => s.Disconnect(It.IsAny<Guid>())) .Verifiable(); studioResourceRepository.Setup(s => s.RemoveEnvironment(It.IsAny<Guid>())) .Verifiable(); var asyncWorker = new Mock<IAsyncWorker>(); var serverProvider = new Mock<IEnvironmentModelProvider>(); var environmentRepository = new Mock<IEnvironmentRepository>(); List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel> { new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false) }; serverProvider.Setup(s => s.Load()).Returns(environmentModels); IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object); var selectedServer = connectControlSingleton.Servers[1]; selectedServer.IsConnected = true; Guid environmentId = Guid.NewGuid(); var eventRaised = false; var selectedId = selectedServer.EnvironmentModel.ID; connectControlSingleton.ConnectedServerChanged += (sender, arg) => { environmentId = arg.EnvironmentId; eventRaised = true; }; //------------Execute Test--------------------------- connectControlSingleton.Remove(selectedId); //------------Assert Results------------------------- Assert.IsNotNull(connectControlSingleton); Assert.AreEqual(Guid.Empty, environmentId); Assert.IsTrue(eventRaised); studioResourceRepository.Verify(s => s.Disconnect(It.IsAny<Guid>()), Times.Once()); studioResourceRepository.Verify(s => s.RemoveEnvironment(It.IsAny<Guid>()), Times.Once()); }