public async Task ShouldDetectBranchDelete() { Logger.Trace("Starting ShouldDetectBranchDelete"); try { InitializePlatformAndEnvironment(TestRepoMasterCleanSynchronized); using (var repositoryWatcher = CreateRepositoryWatcher(TestRepoMasterCleanSynchronized)) { var watcherAutoResetEvent = new RepositoryWatcherAutoResetEvent(); var repositoryWatcherListener = Substitute.For <IRepositoryWatcherListener>(); repositoryWatcherListener.AttachListener(repositoryWatcher, watcherAutoResetEvent); repositoryWatcher.Initialize(); repositoryWatcher.Start(); repositoryWatcher.Stop(); try { Logger.Trace("Issuing Command"); await GitClient.DeleteBranch("feature/document", true).StartAsAsync(); await TaskManager.Wait(); Logger.Trace("Completed Command"); repositoryWatcher.Start(); watcherAutoResetEvent.ConfigChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); Logger.Trace("Continue test"); repositoryWatcherListener.DidNotReceive().HeadChanged(); repositoryWatcherListener.Received(1).ConfigChanged(); repositoryWatcherListener.DidNotReceive().RepositoryCommitted(); repositoryWatcherListener.DidNotReceive().IndexChanged(); repositoryWatcherListener.DidNotReceive().RepositoryChanged(); repositoryWatcherListener.Received(1).LocalBranchesChanged(); repositoryWatcherListener.DidNotReceive().RemoteBranchesChanged(); } finally { repositoryWatcher.Stop(); } } } finally { Logger.Trace("Ending ShouldDetectBranchDelete"); } }