Files
git-tfs/GitTfsTest/Core/GlobalsTests.cs
T
Philippe Miossec 3e1e0bdacc Adjust Unit tests
2014-04-28 18:29:59 +02:00

122 lines
6.4 KiB
C#

using System.Collections.Generic;
using System.IO;
using Rhino.Mocks;
using Sep.Git.Tfs.Commands;
using Sep.Git.Tfs.Core;
using Sep.Git.Tfs.Core.TfsInterop;
using Sep.Git.Tfs.Util;
using StructureMap.AutoMocking;
using Xunit;
namespace Sep.Git.Tfs.Test.Core
{
public class GlobalsTests
{
[Fact]
public void WhenUserSpecifyARemote_ThenReturnIt()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.UserSpecifiedRemoteId = "IWantThatRemote";
Assert.Equal("IWantThatRemote", globals.RemoteId);
}
[Fact]
public void WhenOnlyOneRemoteFoundInParentCommits_ThenReturnIt()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>()
{
new TfsChangesetInfo()
{
ChangesetId = 34,
Remote = new GitTfsRemote(new RemoteInfo() {Id = "myRemote"}, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter())
}
});
Assert.Equal("myRemote", globals.RemoteId);
}
[Fact]
public void WhenTwoRemotesFoundInParentCommits_ThenReturnTheFirst()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>()
{
new TfsChangesetInfo()
{
ChangesetId = 34,
Remote = new GitTfsRemote(new RemoteInfo() {Id = "mainRemote"}, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter())
},
new TfsChangesetInfo()
{
ChangesetId = 34,
Remote = new GitTfsRemote(new RemoteInfo() {Id = "myRemote"}, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter())
},
});
Assert.Equal("mainRemote", globals.RemoteId);
}
[Fact]
public void WhenNoRemotesFoundInParentCommits_AndNoRemotesInRepository_ThenReturnDefaultOne()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>());
globals.Repository.Stub(r => r.ReadAllTfsRemotes())
.Return(new List<GitTfsRemote>());
Assert.Equal("default", globals.RemoteId);
}
[Fact]
public void WhenNoRemotesFoundInParentCommits_ThereIsOnlyOneRemoteInRepository_AndThisIsTheDefaultOne_ThenReturnIt()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>());
globals.Repository.Stub(r => r.ReadAllTfsRemotes())
.Return(new List<GitTfsRemote>() { new GitTfsRemote(new RemoteInfo() { Id = "default" }, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter()) });
Assert.Equal("default", globals.RemoteId);
}
[Fact]
public void WhenNoRemotesFoundInParentCommits_AndThereIsOnlyOneRemoteInRepository_ThenThrowAnException()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>());
globals.Repository.Stub(r => r.ReadAllTfsRemotes())
.Return(new List<GitTfsRemote>() { new GitTfsRemote(new RemoteInfo() { Id = "myRemote" }, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter()) });
Assert.Throws(typeof(GitTfsException), () => globals.RemoteId);
}
[Fact]
public void WhenNoRemotesFoundInParentCommits_AndThereIsARemoteInRepository_ThenThrowAnException()
{
var mocker = new RhinoAutoMocker<IGitRepository>();
var gitRepoMock = mocker.Get<IGitRepository>();
var globals = new Globals() { Bootstrapper = null, Stdout = new StringWriter(), Repository = gitRepoMock };
globals.Repository.Stub(r => r.GetLastParentTfsCommits("HEAD"))
.Return(new List<TfsChangesetInfo>());
globals.Repository.Stub(r => r.ReadAllTfsRemotes())
.Return(new List<GitTfsRemote>()
{
new GitTfsRemote(new RemoteInfo() { Id = "myRemote" }, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter()),
new GitTfsRemote(new RemoteInfo() { Id = "myRemote2" }, gitRepoMock, new RemoteOptions(), globals, mocker.Get<ITfsHelper>(), new StringWriter())
});
Assert.Throws(typeof(GitTfsException), () => globals.RemoteId);
}
}
}