using System; using System.Collections.Generic; using System.Net; using System.Threading.Tasks; using Moq; using Newtonsoft.Json.Linq; using NUnit.Framework; using Ombi.Api.IntegrationTests.Harness; using Ombi.Core.Models; namespace Ombi.Api.IntegrationTests.Tests { /// /// Contract tests for the recently-added endpoints the mobile app's discover screen reads. The /// recently-added engine is mocked so the serialized item shapes are pinned. /// [TestFixture] public class RecentlyAddedContractTests : IntegrationTestBase { [Test] public async Task RecentlyAddedMovies_ReturnsExpectedShape() { Factory.RecentlyAddedEngine .Setup(x => x.GetRecentlyAddedMovies(It.IsAny(), It.IsAny())) .Returns(new List { new RecentlyAddedMovieModel { Id = 1, Title = "M", Overview = "o", ImdbId = "tt1", TheMovieDbId = "123", ReleaseYear = "2020", AddedAt = DateTime.UtcNow } }); var (status, body) = await GetAsync("/api/v1/RecentlyAdded/movies"); Assert.That(status, Is.EqualTo(HttpStatusCode.OK)); var item = (JObject)AsArray(body)[0]; AssertHasProperties(item, "id", "title", "overview", "imdbId", "theMovieDbId", "releaseYear", "addedAt"); } [Test] public async Task RecentlyAddedTv_ReturnsExpectedShape() { Factory.RecentlyAddedEngine .Setup(x => x.GetRecentlyAddedTv(It.IsAny(), It.IsAny(), It.IsAny())) .Returns(new List { new RecentlyAddedTvModel { Id = 1, Title = "S", Overview = "o", ImdbId = "tt1", TheMovieDbId = "123", ReleaseYear = "2020" } }); var (status, body) = await GetAsync("/api/v1/RecentlyAdded/tv"); Assert.That(status, Is.EqualTo(HttpStatusCode.OK)); var item = (JObject)AsArray(body)[0]; AssertHasProperties(item, "id", "title", "overview", "imdbId", "theMovieDbId", "releaseYear"); } } }