Files
octokit.net/Octokit.Tests.Integration/Clients/ProjectColumnsClientTests.cs
Martin Scholz 329ef960ed [WIP] Add new Project API Preview (#1480)
Add Projects API client (preview)
2017-07-23 08:18:34 +10:00

294 lines
9.5 KiB
C#

using Octokit;
using Octokit.Tests.Integration;
using Octokit.Tests.Integration.Helpers;
using System;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Xunit;
public class ProjectColumnsClientTests
{
public class TheGetAllColumnsMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheGetAllColumnsMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task GetsAllColumns()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column1 = await CreateColumnHelper(_github, project.Id);
var column2 = await CreateColumnHelper(_github, project.Id);
var result = await _github.Repository.Project.Column.GetAll(project.Id);
Assert.Equal(2, result.Count);
Assert.True(result.FirstOrDefault(x => x.Id == column1.Id).Id == column1.Id);
Assert.True(result.FirstOrDefault(x => x.Id == column2.Id).Id == column2.Id);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfColumnsWithoutStart()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column1 = await CreateColumnHelper(_github, project.Id);
var column2 = await CreateColumnHelper(_github, project.Id);
var options = new ApiOptions
{
PageSize = 1,
PageCount = 1
};
var columns = await _github.Repository.Project.Column.GetAll(project.Id, options);
Assert.Equal(1, columns.Count);
Assert.Equal(column1.Id, columns[0].Id);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfColumnsWithStart()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column1 = await CreateColumnHelper(_github, project.Id);
var column2 = await CreateColumnHelper(_github, project.Id);
var options = new ApiOptions
{
PageSize = 1,
PageCount = 1,
StartPage = 2
};
var columns = await _github.Repository.Project.Column.GetAll(project.Id, options);
Assert.Equal(1, columns.Count);
Assert.Equal(column2.Id, columns[0].Id);
}
[IntegrationTest]
public async Task ReturnsDistinctColumnsBasedOnStartPage()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column1 = await CreateColumnHelper(_github, project.Id);
var column2 = await CreateColumnHelper(_github, project.Id);
var startOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1
};
var firstPage = await _github.Repository.Project.Column.GetAll(project.Id, startOptions);
var skipStartOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1,
StartPage = 2
};
var secondPage = await _github.Repository.Project.Column.GetAll(project.Id, skipStartOptions);
Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
public class TheGetColumnMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheGetColumnMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task GetsColumn()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column = await CreateColumnHelper(_github, project.Id);
var result = await _github.Repository.Project.Column.Get(column.Id);
Assert.Equal(column.Id, result.Id);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
public class TheCreateColumnMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheCreateColumnMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task CreatesColumn()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column = await CreateColumnHelper(_github, project.Id);
Assert.Equal(project.Url, column.ProjectUrl);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
public class TheUpdateColumnMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheUpdateColumnMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task UpdatesColumn()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column = await CreateColumnHelper(_github, project.Id);
var columnUpdate = new ProjectColumnUpdate("newName");
var result = await _github.Repository.Project.Column.Update(column.Id, columnUpdate);
Assert.Equal("newName", result.Name);
Assert.Equal(column.Id, result.Id);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
public class TheDeleteColumnMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheDeleteColumnMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task DeletesColumn()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column = await CreateColumnHelper(_github, project.Id);
var result = await _github.Repository.Project.Column.Delete(column.Id);
Assert.True(result);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
public class TheMoveColumnMethod : IDisposable
{
IGitHubClient _github;
RepositoryContext _context;
public TheMoveColumnMethod()
{
_github = Helper.GetAuthenticatedClient();
var repoName = Helper.MakeNameWithTimestamp("public-repo");
_context = _github.CreateRepositoryContext(new NewRepository(repoName)).Result;
}
[IntegrationTest]
public async Task MovesColumn()
{
var project = await CreateRepositoryProjectHelper(_github, _context.RepositoryId);
var column1 = await CreateColumnHelper(_github, project.Id);
var column2 = await CreateColumnHelper(_github, project.Id);
var positionFirst = new ProjectColumnMove(ProjectColumnPosition.First, null);
var positionLast = new ProjectColumnMove(ProjectColumnPosition.Last, null);
var positionAfter = new ProjectColumnMove(ProjectColumnPosition.After, column1.Id);
var resultFirst = await _github.Repository.Project.Column.Move(column2.Id, positionFirst);
var resultLast = await _github.Repository.Project.Column.Move(column2.Id, positionLast);
var resultAfter = await _github.Repository.Project.Column.Move(column2.Id, positionAfter);
Assert.True(resultFirst);
Assert.True(resultLast);
Assert.True(resultAfter);
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
private static async Task<Project> CreateRepositoryProjectHelper(IGitHubClient githubClient, long repositoryId)
{
var newProject = new NewProject(Helper.MakeNameWithTimestamp("new-project"));
var result = await githubClient.Repository.Project.CreateForRepository(repositoryId, newProject);
return result;
}
private static async Task<ProjectColumn> CreateColumnHelper(IGitHubClient githubClient, int projectId)
{
var newColumn = new NewProjectColumn(Helper.MakeNameWithTimestamp("new-project-column"));
var result = await githubClient.Repository.Project.Column.Create(projectId, newColumn);
return result;
}
}