public async Task ShouldDetectChangesToRemotesWhenSwitchingBranches() { var expectedCloneUrl = "https://github.com/EvilStanleyGoldman/IOTestsRepo.git"; await Initialize(TestRepoMasterTwoRemotes); var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); repositoryManagerListener.AttachListener(RepositoryManager, repositoryManagerEvents); Environment.Repository.CurrentRemote.HasValue.Should().BeTrue(); Environment.Repository.CurrentRemote.Value.Name.Should().Be("origin"); Environment.Repository.CurrentRemote.Value.Url.Should().Be(expectedCloneUrl); Environment.Repository.Owner.Should().Be("EvilStanleyGoldman"); await RepositoryManager.CreateBranch("branch2", "another/master") //.Then(RepositoryManager.SwitchBranch("branch2")) .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerListener.DidNotReceive().OnStatusUpdate(Args.GitStatus); repositoryManagerListener.Received().OnActiveBranchChanged(Arg.Any <ConfigBranch?>()); repositoryManagerListener.Received().OnActiveRemoteChanged(Arg.Any <ConfigRemote?>()); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.Received().OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.ReceivedWithAnyArgs().OnIsBusyChanged(Args.Bool); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.SwitchBranch("branch2") .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); Environment.Repository.CurrentRemote.HasValue.Should().BeTrue(); Environment.Repository.CurrentRemote.Value.Name.Should().Be("another"); var expectedRemoteUrl = "https://another.remote/Owner/Url.git"; Environment.Repository.CurrentRemote.Value.Url.Should().Be(expectedRemoteUrl); Environment.Repository.CloneUrl.ToString().Should().Be(expectedRemoteUrl); Environment.Repository.Owner.Should().Be("Owner"); repositoryManagerListener.DidNotReceive().OnStatusUpdate(Args.GitStatus); repositoryManagerListener.Received().OnActiveBranchChanged(Arg.Any <ConfigBranch?>()); repositoryManagerListener.Received().OnActiveRemoteChanged(Arg.Any <ConfigRemote?>()); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.DidNotReceive().OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); }
public async Task ShouldDetectBranchCreate() { await Initialize(TestRepoMasterCleanSynchronized); var managerAutoResetEvent = new RepositoryManagerAutoResetEvent(); var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); repositoryManagerListener.AttachListener(RepositoryManager, managerAutoResetEvent); Logger.Trace("Issuing Command"); await RepositoryManager.CreateBranch("feature/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); managerAutoResetEvent.OnLocalBranchListChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); Logger.Trace("Continue test"); repositoryManagerListener.DidNotReceive().OnRepositoryChanged(Args.GitStatus); repositoryManagerListener.ReceivedWithAnyArgs().OnIsBusyChanged(Args.Bool); repositoryManagerListener.DidNotReceive().OnActiveBranchChanged(); repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged(); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.Received(1).OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged(); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); repositoryManagerListener.ClearReceivedCalls(); Logger.Trace("Issuing Command"); await RepositoryManager.CreateBranch("feature2/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); managerAutoResetEvent.OnLocalBranchListChanged.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); Logger.Trace("Continue test"); repositoryManagerListener.DidNotReceive().OnRepositoryChanged(Args.GitStatus); repositoryManagerListener.DidNotReceive().OnActiveBranchChanged(); repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged(); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.Received(1).OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged(); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); repositoryManagerListener.ClearReceivedCalls(); }
public async Task ShouldDetectChangesToRemotesWhenSwitchingBranches() { var expectedCloneUrl = "https://github.com/EvilStanleyGoldman/IOTestsRepo.git"; await Initialize(TestRepoMasterTwoRemotes); var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); repositoryManagerListener.AttachListener(RepositoryManager, repositoryManagerEvents); RepositoryManager.ActiveRemote.HasValue.Should().BeTrue(); RepositoryManager.ActiveRemote.Value.Name.Should().Be("origin"); Assert.AreEqual(expectedCloneUrl, RepositoryManager.ActiveRemote.Value.Url, "Remote is wrong for initial test setup"); Assert.AreEqual(expectedCloneUrl, Environment.Repository.CloneUrl?.ToString(), "CloneUrl is wrong for initial test setup"); Environment.Repository.Owner.Should().Be("EvilStanleyGoldman"); await RepositoryManager.CreateBranch("branch2", "another/master") .Then(RepositoryManager.SwitchBranch("branch2")) .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); RepositoryManager.ActiveRemote.HasValue.Should().BeTrue(); RepositoryManager.ActiveRemote.Value.Name.Should().Be("another"); var expectedRemoteUrl = "https://another.remote/Owner/Url.git"; Assert.AreEqual(expectedRemoteUrl, RepositoryManager.ActiveRemote.Value.Url, "Remote is wrong"); Assert.AreEqual(expectedRemoteUrl, Environment.Repository.CloneUrl?.ToString(), "CloneUrl is wrong"); Environment.Repository.Owner.Should().Be("Owner"); repositoryManagerListener.ReceivedWithAnyArgs().OnIsBusyChanged(Args.Bool); // this should probably not be triggered repositoryManagerListener.Received().OnLocalBranchListChanged(); repositoryManagerListener.Received().OnRemoteOrTrackingChanged(); repositoryManagerListener.Received().OnActiveBranchChanged(Args.String); repositoryManagerListener.Received().OnActiveRemoteChanged(Arg.Any <ConfigRemote?>()); repositoryManagerListener.Received().OnHeadChanged(); // this gets triggered by the active head changing so it may not happen on time for us to check repositoryManagerListener.DidNotReceive().OnRepositoryChanged(Args.GitStatus); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); }
public async Task ShouldDetectBranchCreate() { await Initialize(TestRepoMasterCleanSynchronized); var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); repositoryManagerListener.AttachListener(RepositoryManager, repositoryManagerEvents); await RepositoryManager.CreateBranch("feature/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerListener.DidNotReceive().OnRepositoryChanged(Args.GitStatus); repositoryManagerListener.ReceivedWithAnyArgs().OnIsBusyChanged(Args.Bool); repositoryManagerListener.DidNotReceive().OnActiveBranchChanged(Args.String); repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged(Arg.Any <ConfigRemote?>()); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.Received(1).OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged(); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.CreateBranch("feature2/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerListener.DidNotReceive().OnRepositoryChanged(Args.GitStatus); repositoryManagerListener.DidNotReceive().OnActiveBranchChanged(Args.String); repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged(Arg.Any <ConfigRemote?>()); repositoryManagerListener.DidNotReceive().OnHeadChanged(); repositoryManagerListener.Received(1).OnLocalBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged(); repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged(); repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock); }
public async Task ShouldDetectChangesToRemotesWhenSwitchingBranches() { Logger.Trace("Starting ShouldDetectChangesToRemotesWhenSwitchingBranches"); try { var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); await Initialize(TestRepoMasterTwoRemotes, initializeRepository : false, onRepositoryManagerCreated : manager => { repositoryManagerListener.AttachListener(manager, repositoryManagerEvents); }); repositoryManagerEvents.CurrentBranchUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.LocalBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.RemoteBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitAheadBehindStatusUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.IsBusy.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.IsNotBusy.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.CreateBranch("branch2", "another/master") .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.CurrentBranchUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.LocalBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.RemoteBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitAheadBehindStatusUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.Received().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.Received().GitLogUpdated(Args.GitLogs); repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.SwitchBranch("branch2") .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.CurrentBranchUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.DidNotReceive().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.Received().GitLogUpdated(Args.GitLogs); repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); } finally { Logger.Trace("Ending ShouldDetectChangesToRemotesWhenSwitchingBranches"); } }
public async Task ShouldDetectChangesToRemotesWhenSwitchingBranches() { Stopwatch watch = null; ILogging logger = null; StartTest(out watch, out logger); try { var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); InitializePlatformAndEnvironment(TestRepoMasterTwoRemotes, onRepositoryManagerCreated: manager => { repositoryManagerListener.AttachListener(manager, repositoryManagerEvents); }); repositoryManagerListener.AssertDidNotReceiveAnyCalls(); await RepositoryManager.CreateBranch("branch2", "another/master").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); await repositoryManagerEvents.WaitForNotBusy(); // we expect these events await AssertReceivedEvent(nameof(repositoryManagerEvents.LocalBranchesUpdated), repositoryManagerEvents.LocalBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.RemoteBranchesUpdated), repositoryManagerEvents.RemoteBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitAheadBehindStatusUpdated), repositoryManagerEvents.GitAheadBehindStatusUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitLogUpdated), repositoryManagerEvents.GitLogUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.CurrentBranchUpdated), repositoryManagerEvents.CurrentBranchUpdated); // we don't expect these events await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitStatusUpdated), repositoryManagerEvents.GitStatusUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitLocksUpdated), repositoryManagerEvents.GitLocksUpdated); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.SwitchBranch("branch2").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); await repositoryManagerEvents.WaitForNotBusy(); // we expect these events await AssertReceivedEvent(nameof(repositoryManagerEvents.GitStatusUpdated), repositoryManagerEvents.GitStatusUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitAheadBehindStatusUpdated), repositoryManagerEvents.GitAheadBehindStatusUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitLogUpdated), repositoryManagerEvents.GitLogUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.CurrentBranchUpdated), repositoryManagerEvents.CurrentBranchUpdated); // we don't expect these events await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.LocalBranchesUpdated), repositoryManagerEvents.LocalBranchesUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.RemoteBranchesUpdated), repositoryManagerEvents.RemoteBranchesUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitLocksUpdated), repositoryManagerEvents.GitLocksUpdated); } finally { EndTest(logger); } }
public async Task ShouldDetectBranchCreate() { Stopwatch watch = null; ILogging logger = null; StartTest(out watch, out logger); try { var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); InitializePlatformAndEnvironment(TestRepoMasterCleanSynchronized, onRepositoryManagerCreated: manager => { repositoryManagerListener.AttachListener(manager, repositoryManagerEvents); }); repositoryManagerListener.AssertDidNotReceiveAnyCalls(); { // prepopulate repository info cache var b = Repository.CurrentBranch; await TaskManager.Wait(); RepositoryManager.WaitForEvents(); await AssertReceivedEvent(nameof(repositoryManagerEvents.CurrentBranchUpdated), repositoryManagerEvents.CurrentBranchUpdated); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); } var createdBranch1 = "feature/document2"; await RepositoryManager.CreateBranch(createdBranch1, "feature/document").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); await repositoryManagerEvents.WaitForNotBusy(); // we expect these events await AssertReceivedEvent(nameof(repositoryManagerEvents.LocalBranchesUpdated), repositoryManagerEvents.LocalBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.RemoteBranchesUpdated), repositoryManagerEvents.RemoteBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitAheadBehindStatusUpdated), repositoryManagerEvents.GitAheadBehindStatusUpdated); // we don't expect these events // TODO: log should not be getting called, but it is because when branches get changed we're blindly calling log //await AssertDidNotReceiveEvent(repositoryManagerEvents.GitLogUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitStatusUpdated), repositoryManagerEvents.GitStatusUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.CurrentBranchUpdated), repositoryManagerEvents.CurrentBranchUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitLocksUpdated), repositoryManagerEvents.GitLocksUpdated); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.CreateBranch("feature2/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); StartTrackTime(watch, logger, "CreateBranch"); RepositoryManager.WaitForEvents(); StopTrackTimeAndLog(watch, logger); await repositoryManagerEvents.WaitForNotBusy(); // we expect these events await AssertReceivedEvent(nameof(repositoryManagerEvents.LocalBranchesUpdated), repositoryManagerEvents.LocalBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.RemoteBranchesUpdated), repositoryManagerEvents.RemoteBranchesUpdated); await AssertReceivedEvent(nameof(repositoryManagerEvents.GitAheadBehindStatusUpdated), repositoryManagerEvents.GitAheadBehindStatusUpdated); // we don't expect these events await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitStatusUpdated), repositoryManagerEvents.GitStatusUpdated); // TODO: log should not be getting called, but it is because when branches get changed we're blindly calling log //await AssertDidNotReceiveEvent(repositoryManagerEvents.GitLogUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.CurrentBranchUpdated), repositoryManagerEvents.CurrentBranchUpdated); await AssertDidNotReceiveEvent(nameof(repositoryManagerEvents.GitLocksUpdated), repositoryManagerEvents.GitLocksUpdated); } finally { EndTest(logger); } }
public async Task ShouldDetectChangesToRemotesWhenSwitchingBranches() { Stopwatch watch = null; ILogging logger = null; StartTest(out watch, out logger); try { var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); InitializePlatformAndEnvironment(TestRepoMasterTwoRemotes, onRepositoryManagerCreated: manager => { repositoryManagerListener.AttachListener(manager, repositoryManagerEvents); }); repositoryManagerListener.AssertDidNotReceiveAnyCalls(); await RepositoryManager.CreateBranch("branch2", "another/master") .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.CurrentBranchUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.LocalBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.RemoteBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitAheadBehindStatusUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.Received().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.Received().GitLogUpdated(Args.GitLogs); repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.SwitchBranch("branch2") .StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.CurrentBranchUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerEvents.GitLogUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.Received().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.Received().GitLogUpdated(Args.GitLogs); repositoryManagerListener.DidNotReceive().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.DidNotReceive().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); } finally { EndTest(logger); } }
public async Task ShouldDetectBranchCreate() { Stopwatch watch = null; ILogging logger = null; StartTest(out watch, out logger); try { var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>(); InitializePlatformAndEnvironment(TestRepoMasterCleanSynchronized, onRepositoryManagerCreated: manager => { repositoryManagerListener.AttachListener(manager, repositoryManagerEvents); }); repositoryManagerListener.AssertDidNotReceiveAnyCalls(); var createdBranch1 = "feature/document2"; await RepositoryManager.CreateBranch(createdBranch1, "feature/document").StartAsAsync(); await TaskManager.Wait(); RepositoryManager.WaitForEvents(); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.LocalBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.Received().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.DidNotReceive().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs); repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); repositoryManagerListener.ClearReceivedCalls(); repositoryManagerEvents.Reset(); await RepositoryManager.CreateBranch("feature2/document2", "feature/document").StartAsAsync(); await TaskManager.Wait(); StartTrackTime(watch, logger, "CreateBranch"); RepositoryManager.WaitForEvents(); StopTrackTimeAndLog(watch, logger); repositoryManagerEvents.WaitForNotBusy(); repositoryManagerEvents.LocalBranchesUpdated.WaitOne(Timeout).Should().BeTrue(); repositoryManagerListener.Received().OnIsBusyChanged(Args.Bool); repositoryManagerListener.DidNotReceive().CurrentBranchUpdated(Args.NullableConfigBranch, Args.NullableConfigRemote); repositoryManagerListener.Received().GitAheadBehindStatusUpdated(Args.GitAheadBehindStatus); repositoryManagerListener.DidNotReceive().GitStatusUpdated(Args.GitStatus); repositoryManagerListener.DidNotReceive().GitLocksUpdated(Args.GitLocks); repositoryManagerListener.DidNotReceive().GitLogUpdated(Args.GitLogs); repositoryManagerListener.Received().LocalBranchesUpdated(Args.LocalBranchDictionary); repositoryManagerListener.Received().RemoteBranchesUpdated(Args.RemoteDictionary, Args.RemoteBranchDictionary); } finally { EndTest(logger); } }