using System.Linq; using Novaloop.PaymoApi.Clients; using Novaloop.PaymoApi.Clients.Models; using Novaloop.PaymoApi.Shared; using Xunit; namespace Novaloop.PaymoApi.Tests { public class ClientsApiTests { private readonly ClientsApi _clientsApi; private readonly Client _testClient = new Client { Name = "Testclient", Email = "test@client.de" }; public ClientsApiTests() { _clientsApi = new ClientsApi(new BaseApi(DependencyFactory.GeneratePaymoApiClient(), DependencyFactory.GenerateOptions())); } [Fact] public async void GetClients() { // Arrange // Act var clients = (await _clientsApi.GetClients()).ToList(); // Assert Assert.NotEmpty(clients); } [Fact] public async void GetClient() { // Arrange // Act var clients = (await _clientsApi.GetClients()).ToList(); var client = await _clientsApi.GetClient(clients.First().Id); // Assert Assert.NotNull(client); } [Fact] public async void CreateClient() { // Arrange // Act var createdClient = await _clientsApi.CreateClient(_testClient); var client = await _clientsApi.GetClient(createdClient.Id); // Assert Assert.Equal(_testClient.Name, client.Name); Assert.Equal(_testClient.Email, client.Email); // Cleanup await _clientsApi.DeleteClient(createdClient.Id); } [Fact] public async void DeleteClient() { // Arrange var createdClient = await _clientsApi.CreateClient(_testClient); // Act await _clientsApi.DeleteClient(createdClient.Id); var clients = (await _clientsApi.GetClients()).ToList(); // Assert Assert.Empty(clients.Where(c => c.Id == createdClient.Id)); } [Fact] public async void UpdateClient() { // Arrange var createdClient = await _clientsApi.CreateClient(_testClient); var clientUpdateInfo = new Client {Name = "Updated"}; // Act await _clientsApi.UpdateClient(clientUpdateInfo, createdClient.Id); var updatedClient = await _clientsApi.GetClient(createdClient.Id); // Assert Assert.Equal(clientUpdateInfo.Name, updatedClient.Name); } } }