mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-06 07:16:09 +00:00
[WIP] Add new Project API Preview (#1480)
Add Projects API client (preview)
This commit is contained in:
committed by
Ryan Gribble
parent
fc5bc947aa
commit
329ef960ed
293
Octokit.Tests.Integration/Clients/ProjectColumnsClientTests.cs
Normal file
293
Octokit.Tests.Integration/Clients/ProjectColumnsClientTests.cs
Normal file
@@ -0,0 +1,293 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user