IW4M-Admin/Tests/ApplicationTests/ServiceTests.cs
2020-05-25 13:04:44 -05:00

174 lines
5.6 KiB
C#

using ApplicationTests.Fixtures;
using Microsoft.Extensions.DependencyInjection;
using NUnit.Framework;
using SharedLibraryCore.Dtos;
using SharedLibraryCore.Interfaces;
using SharedLibraryCore.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ApplicationTests
{
[TestFixture]
public class ServiceTests
{
private IServiceProvider serviceProvider;
private IDatabaseContextFactory contextFactory;
private ClientService clientService;
[SetUp]
public void Setup()
{
serviceProvider = new ServiceCollection()
.AddSingleton<ClientService>()
.BuildBase()
.BuildServiceProvider();
contextFactory = serviceProvider.GetRequiredService<IDatabaseContextFactory>();
clientService = serviceProvider.GetRequiredService<ClientService>();
}
#region QUERY_RESOURCE
[Test]
public async Task Test_QueryClientResource_Xuid()
{
var client = ClientGenerators.CreateBasicClient(null);
client.NetworkId = -1;
var query = new FindClientRequest()
{
Xuid = client.NetworkId.ToString("X")
};
using var context = contextFactory.CreateContext();
context.Clients.Add(client);
await context.SaveChangesAsync();
var result = await clientService.QueryResource(query);
Assert.IsNotEmpty(result.Results);
Assert.AreEqual(query.Xuid, result.Results.First().Xuid);
context.Clients.Remove(client);
await context.SaveChangesAsync();
}
[Test]
public async Task Test_QueryClientResource_NameExactMatch()
{
var query = new FindClientRequest()
{
Name = "test"
};
using var context = contextFactory.CreateContext();
var client = ClientGenerators.CreateBasicClient(null);
client.Name = query.Name;
context.Clients.Add(client);
await context.SaveChangesAsync();
var result = await clientService.QueryResource(query);
Assert.IsNotEmpty(result.Results);
Assert.AreEqual(query.Name, result.Results.First().Name);
context.Clients.Remove(client);
await context.SaveChangesAsync();
}
[Test]
public async Task Test_QueryClientResource_NameCaseInsensitivePartial()
{
var query = new FindClientRequest()
{
Name = "TEST"
};
using var context = contextFactory.CreateContext();
var client = ClientGenerators.CreateBasicClient(null);
client.Name = "atesticle";
context.Clients.Add(client);
await context.SaveChangesAsync();
var result = await clientService.QueryResource(query);
Assert.IsNotEmpty(result.Results);
Assert.IsTrue(result.Results.First().Name.ToUpper().Contains(query.Name));
context.Clients.Remove(client);
await context.SaveChangesAsync();
}
[Test]
public async Task Test_QueryClientResource_SortDirection()
{
var firstClient = ClientGenerators.CreateBasicClient(null);
firstClient.ClientId = 0;
firstClient.NetworkId = -1;
firstClient.LastConnection = DateTime.Now.AddHours(-1);
firstClient.Name = "test";
var secondClient = ClientGenerators.CreateBasicClient(null);
secondClient.ClientId = 0;
secondClient.NetworkId = -2;
secondClient.LastConnection = DateTime.Now;
secondClient.Name = firstClient.Name;
var query = new FindClientRequest()
{
Name = firstClient.Name
};
using var context = contextFactory.CreateContext();
context.Clients.Add(firstClient);
context.Clients.Add(secondClient);
await context.SaveChangesAsync();
var result = await clientService.QueryResource(query);
Assert.IsNotEmpty(result.Results);
Assert.AreEqual(secondClient.NetworkId.ToString("X"), result.Results.First().Xuid);
Assert.AreEqual(firstClient.NetworkId.ToString("X"), result.Results.Last().Xuid);
query.Direction = SortDirection.Ascending;
result = await clientService.QueryResource(query);
Assert.IsNotEmpty(result.Results);
Assert.AreEqual(firstClient.NetworkId.ToString("X"), result.Results.First().Xuid);
Assert.AreEqual(secondClient.NetworkId.ToString("X"), result.Results.Last().Xuid);
context.Clients.Remove(firstClient);
context.Clients.Remove(secondClient);
await context.SaveChangesAsync();
}
[Test]
public async Task Test_QueryClientResource_NoMatch()
{
var query = new FindClientRequest()
{
Name = "test"
};
using var context = contextFactory.CreateContext();
var client = ClientGenerators.CreateBasicClient(null);
client.Name = "client";
context.Clients.Add(client);
await context.SaveChangesAsync();
var result = await clientService.QueryResource(query);
Assert.IsEmpty(result.Results);
context.Clients.Remove(client);
await context.SaveChangesAsync();
}
#endregion
}
}