Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 10 additions & 23 deletions src/Stack.Tests/Commands/Branch/AddBranchCommandHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
using Stack.Git;
using Stack.Infrastructure;
using Stack.Tests.Helpers;
using Xunit.Abstractions;

namespace Stack.Tests.Commands.Branch;

public class AddBranchCommandHandlerTests
public class AddBranchCommandHandlerTests(ITestOutputHelper testOutputHelper)
{
[Fact]
public async Task WhenNoInputsProvided_AsksForStackAndBranchAndConfirms_AddsBranchToStack()
Expand All @@ -33,7 +34,7 @@ public async Task WhenNoInputsProvided_AsksForStackAndBranchAndConfirms_AddsBran
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);

Expand Down Expand Up @@ -73,13 +74,10 @@ public async Task WhenStackNameProvided_DoesNotAskForStackName_AddsBranchFromSta
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);




inputProvider.Select(Questions.SelectBranch, Arg.Any<string[]>()).Returns(branchToAdd);

// Act
Expand Down Expand Up @@ -115,11 +113,10 @@ public async Task WhenOnlyOneStackExists_DoesNotAskForStackName_AddsBranchFromSt
.WithBranch(branch => branch.WithName(anotherBranch)))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);


inputProvider.Select(Questions.SelectBranch, Arg.Any<string[]>()).Returns(branchToAdd);

// Act
Expand Down Expand Up @@ -155,12 +152,10 @@ public async Task WhenStackNameProvided_ButStackDoesNotExist_Throws()
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



// Act and assert
var invalidStackName = Some.Name();
await handler.Invoking(async h => await h.Handle(new AddBranchCommandInputs(invalidStackName, null)))
Expand Down Expand Up @@ -191,12 +186,10 @@ public async Task WhenBranchNameProvided_DoesNotAskForBranchName_AddsBranchFromS
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");

// Act
Expand Down Expand Up @@ -233,12 +226,10 @@ public async Task WhenBranchNameProvided_ButBranchDoesNotExistLocally_Throws()
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");

// Act and assert
Expand Down Expand Up @@ -273,12 +264,10 @@ public async Task WhenBranchNameProvided_ButBranchAlreadyExistsInStack_Throws()
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");

// Act and assert
Expand Down Expand Up @@ -310,12 +299,10 @@ public async Task WhenAllInputsProvided_DoesNotAskForAnything_AddsBranchFromStac
.WithStack(stack => stack.WithName("Stack2").WithRemoteUri(repo.RemoteUri).WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new AddBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



// Act
await handler.Handle(new AddBranchCommandInputs("Stack1", branchToAdd));

Expand Down
21 changes: 11 additions & 10 deletions src/Stack.Tests/Commands/Branch/NewBranchCommandHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
using Stack.Git;
using Stack.Infrastructure;
using Stack.Tests.Helpers;
using Xunit.Abstractions;

namespace Stack.Tests.Commands.Branch;

public class NewBranchCommandHandlerTests
public class NewBranchCommandHandlerTests(ITestOutputHelper testOutputHelper)
{
[Fact]
public async Task WhenNoInputsProvided_AsksForStackAndBranch_CreatesAndAddsBranchToStack_PushesToRemote_AndSwitchesToBranch()
Expand All @@ -24,7 +25,7 @@ public async Task WhenNoInputsProvided_AsksForStackAndBranch_CreatesAndAddsBranc
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -68,7 +69,7 @@ public async Task WhenStackNameProvided_DoesNotAskForStackName_CreatesAndAddsBra
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -110,7 +111,7 @@ public async Task WhenOnlyOneStackExists_DoesNotAskForStackName_CreatesAndAddsBr
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -147,7 +148,7 @@ public async Task WhenStackNameProvided_ButStackDoesNotExist_Throws()
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -183,7 +184,7 @@ public async Task WhenBranchNameProvided_DoesNotAskForBranchName_CreatesAndAddsB
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -224,7 +225,7 @@ public async Task WhenBranchNameProvided_ButBranchAlreadyExistLocally_Throws()
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -261,7 +262,7 @@ public async Task WhenBranchNameProvided_ButBranchAlreadyExistsInStack_Throws()
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -299,7 +300,7 @@ public async Task WhenStackHasANameWithMultipleWords_SuggestsAGoodDefaultNewBran
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down Expand Up @@ -342,7 +343,7 @@ public async Task WhenPushToTheRemoteFails_StillCreatesTheBranchLocallyAndAddsIt
.Build();

var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = Substitute.ForPartsOf<GitClient>(logger, repo.GitClientSettings);
var stackConfig = new TestStackConfigBuilder()
.WithStack(stack => stack
Expand Down
28 changes: 9 additions & 19 deletions src/Stack.Tests/Commands/Branch/RemoveBranchCommandHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
using Stack.Git;
using Stack.Infrastructure;
using Stack.Tests.Helpers;
using Xunit.Abstractions;

namespace Stack.Tests.Commands.Branch;

public class RemoveBranchCommandHandlerTests
public class RemoveBranchCommandHandlerTests(ITestOutputHelper testOutputHelper)
{
[Fact]
public async Task WhenNoInputsProvided_AsksForStackAndBranchAndConfirms_RemovesBranchFromStack()
Expand All @@ -34,7 +35,7 @@ public async Task WhenNoInputsProvided_AsksForStackAndBranchAndConfirms_RemovesB
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);

Expand Down Expand Up @@ -76,12 +77,10 @@ public async Task WhenStackNameProvided_DoesNotAskForStackName_RemovesBranchFrom
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectBranch, Arg.Any<string[]>()).Returns(branchToRemove);
inputProvider.Confirm(Questions.ConfirmRemoveBranch).Returns(true);

Expand Down Expand Up @@ -120,11 +119,10 @@ public async Task WhenStackNameProvided_ButStackDoesNotExist_Throws()
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);


// Act and assert
var invalidStackName = Some.Name();
await handler.Invoking(async h => await h.Handle(new RemoveBranchCommandInputs(invalidStackName, null, false)))
Expand Down Expand Up @@ -156,12 +154,10 @@ public async Task WhenBranchNameProvided_DoesNotAskForBranchName_RemovesBranchFr
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");
inputProvider.Confirm(Questions.ConfirmRemoveBranch).Returns(true);

Expand Down Expand Up @@ -200,12 +196,10 @@ public async Task WhenBranchNameProvided_ButBranchDoesNotExistInStack_Throws()
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");

// Act and assert
Expand Down Expand Up @@ -235,12 +229,10 @@ public async Task WhenOnlyOneStackExists_DoesNotAskForStackName()
.WithBranch(b => b.WithName(branchToRemove)))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectBranch, Arg.Any<string[]>()).Returns(branchToRemove);
inputProvider.Confirm(Questions.ConfirmRemoveBranch).Returns(true);

Expand Down Expand Up @@ -279,12 +271,10 @@ public async Task WhenConfirmProvided_DoesNotAskForConfirmation_RemovesBranchFro
.WithSourceBranch(sourceBranch))
.Build();
var inputProvider = Substitute.For<IInputProvider>();
var logger = Substitute.For<ILogger>();
var logger = new TestLogger(testOutputHelper);
var gitClient = new GitClient(logger, repo.GitClientSettings);
var handler = new RemoveBranchCommandHandler(inputProvider, logger, gitClient, stackConfig);



inputProvider.Select(Questions.SelectStack, Arg.Any<string[]>()).Returns("Stack1");
inputProvider.Select(Questions.SelectBranch, Arg.Any<string[]>()).Returns(branchToRemove);

Expand Down
16 changes: 10 additions & 6 deletions src/Stack.Tests/Commands/Helpers/StackHelpersTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,13 @@ public void UpdateStack_WhenThereAreConflictsMergingBranches_AndUpdateIsContinue
sourceBranch,
[new Config.Branch(branch1, []), new Config.Branch(branch2, [])]
);
var branchDetail1 = new BranchDetail(branch1, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch1}", true, 0, 0), null, null);
var branchDetail2 = new BranchDetail(branch2, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch2}", true, 0, 0), null, null);
var stackStatus = new StackStatus("Stack1", new BranchDetailBase(sourceBranch, true, null, null), [branchDetail1, branchDetail2]);
var branchDetail1 = new BranchDetail(
branch1, true, new Commit(Some.Sha(), Some.Name()),
new RemoteTrackingBranchStatus($"origin/{branch1}", true, 0, 0), null, null,
[new BranchDetail(
branch2, true, new Commit(Some.Sha(), Some.Name()),
new RemoteTrackingBranchStatus($"origin/{branch2}", true, 0, 0), null, null, [])]);
var stackStatus = new StackStatus("Stack1", new SourceBranchDetail(sourceBranch, true, null, null), [branchDetail1]);

inputProvider
.Select(
Expand Down Expand Up @@ -76,9 +80,9 @@ public void UpdateStack_WhenThereAreConflictsMergingBranches_AndUpdateIsAborted_
sourceBranch,
[new Config.Branch(branch1, []), new Config.Branch(branch2, [])]
);
var branchDetail1 = new BranchDetail(branch1, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch1}", true, 0, 0), null, null);
var branchDetail2 = new BranchDetail(branch2, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch2}", true, 0, 0), null, null);
var stackStatus = new StackStatus("Stack1", new BranchDetailBase(sourceBranch, true, null, null), [branchDetail1, branchDetail2]);
var branchDetail1 = new BranchDetail(branch1, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch1}", true, 0, 0), null, null, []);
var branchDetail2 = new BranchDetail(branch2, true, new Commit(Some.Sha(), Some.Name()), new RemoteTrackingBranchStatus($"origin/{branch2}", true, 0, 0), null, null, []);
var stackStatus = new StackStatus("Stack1", new SourceBranchDetail(sourceBranch, true, null, null), [branchDetail1, branchDetail2]);

gitClient
.When(g => g.MergeFromLocalSourceBranch(sourceBranch))
Expand Down
Loading