2020-02-22 22:02:44 +00:00
|
|
|
using System;
|
|
|
|
|
using System.Net.Http;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using Xunit;
|
|
|
|
|
using SuccessfulCodeTools.LowLevelHttpClient;
|
2020-04-13 12:31:21 +01:00
|
|
|
using Newtonsoft.Json;
|
2020-02-22 22:02:44 +00:00
|
|
|
|
|
|
|
|
namespace BritishHorseRacingApi.Tests
|
|
|
|
|
{
|
|
|
|
|
public class ApiClientTests
|
|
|
|
|
{
|
2020-04-14 09:11:04 +01:00
|
|
|
public static string _cookie = "D_ZID=3F37C446-48FB-3F85-B8D2-66FC90A17473; D_ZUID=27B27203-7708-3F5E-8C01-86A8BF3A21DD; D_HID=BC00CAA4-06EE-39E0-8579-A00DCFA20171; D_SID=188.172.158.138:JT/OEx87nl5ScspTQk38UsDfuIz94DbCf5CYsIC7WpU; bha-ie-test=true; __utmc=36595059; __utmz=36595059.1586780062.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); D_IID=A18DB74E-9ABD-33E1-BF94-96209AF6178E; D_UID=9CDC96FD-4EFE-308E-BC28-2F105AC0B01B; bha_token=%7B%22token%22%3A%22NmZjNDgzNTI0YmFlYzM5MmJkN2U4N2E2MTg2YjVlMWY%3D%22%2C%22timestamp%22%3A1586811155132%7D; __utma=36595059.39554265.1586780062.1586811153.1586848611.7; __utmt=1; __utmb=36595059.1.10.1586848611";
|
2020-04-13 12:31:21 +01:00
|
|
|
|
2020-02-22 22:02:44 +00:00
|
|
|
[Fact]
|
|
|
|
|
public async Task GetToken()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
//Act
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Assert
|
|
|
|
|
Assert.False(String.IsNullOrWhiteSpace(token));
|
|
|
|
|
}
|
|
|
|
|
private const string _userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36";
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task Test()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
|
|
|
|
var client = new CustomHttpClient(13718);
|
|
|
|
|
var message = new CustomHttpRequestMessage(HttpMethod.Get, "http://www.britishhorseracing.com/feeds/v1/token/request");
|
|
|
|
|
message.Headers.Add("Accept", "application/json, text/plain, */*");
|
|
|
|
|
message.Headers.Add("User-Agent", _userAgent);
|
|
|
|
|
message.Headers.Add("Host", "www.britishhorseracing.com");
|
|
|
|
|
message.Headers.Add("Connection", "close");
|
|
|
|
|
message.Headers.Add("accept-encoding", "gzip, deflate");
|
|
|
|
|
var result = await client.SendAsync(message);
|
|
|
|
|
Assert.NotNull(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetRaceResult()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
2020-04-14 09:11:04 +01:00
|
|
|
var client = new ApiClient(cookie: _cookie);
|
2020-02-22 22:02:44 +00:00
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Act
|
|
|
|
|
var result = await client.GetRaceResults(2018, 42638, 0);
|
|
|
|
|
//Assert
|
|
|
|
|
Assert.Equal(6, result.Total);
|
|
|
|
|
Assert.Equal(6, result.Data.Length);
|
|
|
|
|
Assert.Equal(42638, result.Data[0].RaceId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetFixtures()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
2020-04-14 09:11:04 +01:00
|
|
|
var client = new ApiClient(cookie: _cookie);
|
2020-02-22 22:02:44 +00:00
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Act
|
|
|
|
|
var result = await client.GetFixtures(2019, 2);
|
|
|
|
|
//Assert
|
|
|
|
|
Assert.Equal(111, result.Total);
|
2020-04-14 09:11:04 +01:00
|
|
|
Assert.Equal(100, result.Data.Length);
|
2020-02-22 22:02:44 +00:00
|
|
|
Assert.Equal(18142, result.Data[0].FixtureId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetAllFixturesForDay()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Act
|
|
|
|
|
var results = await client.GetAllFixturesForDay(2019, 2, 28);
|
|
|
|
|
//Assert
|
|
|
|
|
Assert.True(results.All(e => e.FixtureDate.Day == 28));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetAllRacesForDay()
|
|
|
|
|
{
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
var results = await client.GetAllRacesForDay(2019, 2, 28);
|
|
|
|
|
Assert.True(results.Count > 0);
|
|
|
|
|
}
|
2020-04-13 12:31:21 +01:00
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
|
[InlineData(2020, 31967, 0, 4)]
|
|
|
|
|
[InlineData(2019, 16974, 0, 18)]
|
|
|
|
|
public async Task GetRaceRunners(int year, int raceId, int divisionSequence, int expectedRunnerCount)
|
2020-02-22 22:02:44 +00:00
|
|
|
{
|
2020-04-13 12:31:21 +01:00
|
|
|
var client = new ApiClient(cookie: _cookie);
|
2020-02-22 22:02:44 +00:00
|
|
|
var token = await client.GetNewToken();
|
2020-04-13 12:31:21 +01:00
|
|
|
var results = await client.GetRaceRunners(year, raceId, divisionSequence);
|
|
|
|
|
Assert.Equal(expectedRunnerCount, results.Data.Length);
|
2020-02-22 22:02:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetAllRaceResultsForDay()
|
|
|
|
|
{
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
var results = await client.GetAllRaceResultsForDay(2020, 2, 23);
|
|
|
|
|
Assert.True(results.Count > 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetRaces()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Act
|
|
|
|
|
var result = await client.GetRaces(2019, 18188);
|
|
|
|
|
//Arrange
|
|
|
|
|
Assert.Equal(6, result.Total);
|
|
|
|
|
Assert.Equal(6, result.Data.Length);
|
|
|
|
|
Assert.Equal(46136, result.Data[0].RaceId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetRaceCourse()
|
|
|
|
|
{
|
|
|
|
|
//Arrange
|
|
|
|
|
var client = new ApiClient();
|
|
|
|
|
var token = await client.GetNewToken();
|
|
|
|
|
//Act
|
|
|
|
|
var result = await client.GetRacecourse(18);
|
|
|
|
|
//Arrange
|
|
|
|
|
Assert.Equal(18, result.CourseId);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|