using System.Dynamic; using System.Linq; using System.Threading; using Novaloop.PaymoApi.Clients; using Novaloop.PaymoApi.Clients.Models; using Novaloop.PaymoApi.Shared; using Xunit; namespace Novaloop.PaymoApi.Tests { [Collection("IntegrationTests")] public class ClientsApiTests { private readonly PaymoPaymoClientsApi _paymoPaymoClientsApi; private readonly PaymoClient _testPaymoClient = new PaymoClient { Name = "Testclient", Email = "test@client.de" }; public ClientsApiTests() { Thread.Sleep(5000); _paymoPaymoClientsApi = new PaymoPaymoClientsApi(new PaymoBaseApi(DependencyFactory.GeneratePaymoApiClient(), DependencyFactory.GenerateOptions())); } [Fact] public async void GetClients() { // Arrange // Act var clients = (await _paymoPaymoClientsApi.GetClients()).ToList(); // Assert Assert.NotEmpty(clients); } [Fact] public async void GetClient() { // Arrange // Act var clients = (await _paymoPaymoClientsApi.GetClients()).ToList(); var client = await _paymoPaymoClientsApi.GetClient(clients.First().Id); // Assert Assert.NotNull(client); } [Fact] public async void CreateClient() { // Arrange // Act var createdClient = await _paymoPaymoClientsApi.CreateClient(_testPaymoClient); var client = await _paymoPaymoClientsApi.GetClient(createdClient.Id); // Assert Assert.Equal(_testPaymoClient.Name, client.Name); Assert.Equal(_testPaymoClient.Email, client.Email); // Cleanup await _paymoPaymoClientsApi.DeleteClient(createdClient.Id); } [Fact] public async void DeleteClient() { // Arrange var createdClient = await _paymoPaymoClientsApi.CreateClient(_testPaymoClient); // Act await _paymoPaymoClientsApi.DeleteClient(createdClient.Id); var clients = (await _paymoPaymoClientsApi.GetClients()).ToList(); // Assert Assert.Empty(clients.Where(c => c.Id == createdClient.Id)); } [Fact] public async void UpdateClient() { // Arrange var createdClient = await _paymoPaymoClientsApi.CreateClient(_testPaymoClient); dynamic clientUpdateInfo = new ExpandoObject(); clientUpdateInfo.Name = "Updated"; // Act await _paymoPaymoClientsApi.UpdateClient(clientUpdateInfo, createdClient.Id); var updatedClient = await _paymoPaymoClientsApi.GetClient(createdClient.Id); // Assert Assert.Equal(clientUpdateInfo.Name, updatedClient.Name); } } }