using System.Linq;
using System.Threading.Tasks;
using Xunit;

namespace Wabbajack.Networking.NexusApi.Test;

public class NexusApiTests
{
    private readonly NexusApi _api;

    public NexusApiTests(NexusApi api)
    {
        _api = api;
    }

    [Fact]
    public async Task CanValidateUser()
    {
        var (info, headers) = await _api.Validate();
        Assert.True(info.IsPremium);
    }

    [Fact]
    public async Task CanGetModInfo()
    {
        var (_, originalHeaders) = await _api.Validate();

        var (info, headers) = await _api.ModInfo("skyrimspecialedition", 12604);
        Assert.Equal("SkyUI", info.Name);

        var (files, _) = await _api.ModFiles("skyrimspecialedition", 12604);

        Assert.True(files.Files.Length > 0);

        var (file, _) = await _api.FileInfo("skyrimspecialedition", 12604,
            files.Files.OrderByDescending(f => f.FileId).First().FileId);

        Assert.Equal("MAIN", file.CategoryName);

        var (links, _) = await _api.DownloadLink("skyrimspecialedition", 12604, file.FileId);
        Assert.True(links.Length > 0);
    }
}