using System.Linq; using Novaloop.PaymoApi.Shared; using Novaloop.PaymoApi.Tasks; using Novaloop.PaymoApi.Tasks.Models; using Xunit; using Xunit.Abstractions; namespace Novaloop.PaymoApi.Tests { public class TasksApiTests { private readonly ITestOutputHelper _testOutputHelper; private readonly TasksApi _tasksApi; private readonly Task _testTask; public TasksApiTests(ITestOutputHelper testOutputHelper) { _testOutputHelper = testOutputHelper; _tasksApi = new TasksApi(new BaseApi(DependencyFactory.GeneratePaymoApiClient(), DependencyFactory.GenerateOptions())); _testTask = new Task { Name = "Testtask", Description = "Just a little task" }; } [Fact] public async void GetTasks() { // Arrange // Act var tasks = (await _tasksApi.GetTasks()).ToList(); // Assert Assert.NotEmpty(tasks); _testOutputHelper.WriteLine(string.Join(",", tasks)); } [Fact] public async void GetTask() { // Arrange // Act var tasks = (await _tasksApi.GetTasks()).ToList(); var task = await _tasksApi.GetTask(tasks.First().Id); // Assert Assert.NotNull(task); } [Fact] public async void CreateTask() { // Arrange var existingTaskListId = (await _tasksApi.GetTasks()).First().TasklistId; // Act _testTask.TasklistId = existingTaskListId; var createdTask = await _tasksApi.CreateTask(_testTask); var task = await _tasksApi.GetTask(createdTask.Id); // Assert Assert.Equal(_testTask.Name, task.Name); Assert.Equal(_testTask.Description, task.Description); // Cleanup await _tasksApi.DeleteTask(createdTask.Id); } [Fact] public async void DeleteTask() { // Arrange var existingTaskListId = (await _tasksApi.GetTasks()).First().TasklistId; _testTask.TasklistId = existingTaskListId; var createdTask = await _tasksApi.CreateTask(_testTask); // Act await _tasksApi.DeleteTask(createdTask.Id); var tasks = (await _tasksApi.GetTasks()).ToList(); // Assert Assert.Empty(tasks.Where(c => c.Id == createdTask.Id)); } [Fact] public async void UpdateTask() { // Arrange var existingTaskListId = (await _tasksApi.GetTasks()).First().TasklistId; _testTask.TasklistId = existingTaskListId; var createdTask = await _tasksApi.CreateTask(_testTask); var taskUpdateInfo = new Task {Name = "Updated", TasklistId = _testTask.TasklistId}; // Act await _tasksApi.UpdateTask(taskUpdateInfo, createdTask.Id); var updatedTask = await _tasksApi.GetTask(createdTask.Id); // Assert Assert.Equal(taskUpdateInfo.Name, updatedTask.Name); } } }