using System.Dynamic; using System.Linq; using System.Threading; using Novaloop.PaymoApi.Shared; using Novaloop.PaymoApi.Tasks; using Novaloop.PaymoApi.Tasks.Models; using Xunit; using Xunit.Abstractions; namespace Novaloop.PaymoApi.Tests { [Collection("IntegrationTests")] public class TasksApiTests { private readonly ITestOutputHelper _testOutputHelper; private readonly PaymoTasksApi _paymoTasksApi; private readonly PaymoTask _testPaymoTask; public TasksApiTests(ITestOutputHelper testOutputHelper) { Thread.Sleep(5000); _testOutputHelper = testOutputHelper; _paymoTasksApi = new PaymoTasksApi(new PaymoBaseApi(DependencyFactory.GeneratePaymoApiClient(), DependencyFactory.GenerateOptions())); _testPaymoTask = new PaymoTask { Name = "Testtask", Description = "Just a little task" }; } [Fact] public async void GetTasks() { // Arrange // Act var tasks = (await _paymoTasksApi.GetTasks()).ToList(); // Assert Assert.NotEmpty(tasks); _testOutputHelper.WriteLine(string.Join(",", tasks)); } [Fact] public async void GetTask() { // Arrange // Act var tasks = (await _paymoTasksApi.GetTasks()).ToList(); var task = await _paymoTasksApi.GetTask(tasks.First().Id); // Assert Assert.NotNull(task); } [Fact] public async void CreateTask() { // Arrange var existingTaskListId = (await _paymoTasksApi.GetTasks()).First().TasklistId; // Act _testPaymoTask.TasklistId = existingTaskListId; var createdTask = await _paymoTasksApi.CreateTask(_testPaymoTask); var task = await _paymoTasksApi.GetTask(createdTask.Id); // Assert Assert.Equal(_testPaymoTask.Name, task.Name); Assert.Equal(_testPaymoTask.Description, task.Description); // Cleanup await _paymoTasksApi.DeleteTask(createdTask.Id); } [Fact] public async void DeleteTask() { // Arrange var existingTaskListId = (await _paymoTasksApi.GetTasks()).First().TasklistId; _testPaymoTask.TasklistId = existingTaskListId; var createdTask = await _paymoTasksApi.CreateTask(_testPaymoTask); // Act await _paymoTasksApi.DeleteTask(createdTask.Id); var tasks = (await _paymoTasksApi.GetTasks()).ToList(); // Assert Assert.Empty(tasks.Where(c => c.Id == createdTask.Id)); } [Fact] public async void UpdateTask() { // Arrange var existingTaskListId = (await _paymoTasksApi.GetTasks()).First().TasklistId; _testPaymoTask.TasklistId = existingTaskListId; var createdTask = await _paymoTasksApi.CreateTask(_testPaymoTask); dynamic taskUpdateInfo = new ExpandoObject(); taskUpdateInfo.Name = "Updated"; taskUpdateInfo.TaskListId = _testPaymoTask.TasklistId; // Act await _paymoTasksApi.UpdateTask(taskUpdateInfo, createdTask.Id); var updatedTask = await _paymoTasksApi.GetTask(createdTask.Id); // Assert Assert.Equal(taskUpdateInfo.Name, updatedTask.Name); } } }