From 599cb013d59cb0d941bdb8a14cdc0ebc7bd18115 Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Thu, 14 Sep 2017 16:08:46 +0100 Subject: [PATCH] Tests --- build.cake | 27 +-- .../Engine/MovieRequestEngineTests.cs | 158 +++++++++--------- src/Ombi.Core.Tests/Ombi.Core.Tests.csproj | 9 +- src/Ombi.DependencyInjection/IocExtensions.cs | 4 +- .../Ombi.Notifications.Tests.csproj | 8 +- .../PlexAvailabilityCheckerTests.cs | 6 +- .../Jobs/Plex/PlexAvailabilityChecker.cs | 8 +- src/Ombi.Store/Context/OmbiContext.cs | 1 - src/Ombi/ClientApp/main.ts | 4 +- src/Ombi/Startup.cs | 3 - 10 files changed, 117 insertions(+), 111 deletions(-) diff --git a/build.cake b/build.cake index 8830177ec..3e511ce3b 100644 --- a/build.cake +++ b/build.cake @@ -1,4 +1,4 @@ -#tool "xunit.runner.console" +#tool "nuget:?package=NUnit.Runners #tool "nuget:?package=GitVersion.CommandLine" #addin "Cake.Gulp" #addin "Cake.Npm" @@ -174,49 +174,50 @@ Task("Publish-OSX") Task("Publish-Ubuntu") .Does(() => { - publishSettings.Runtime = "ubuntu-x64"; + publishSettings.Runtime = "ubuntu-x64"; publishSettings.OutputDirectory = Directory(buildDir) + Directory("netcoreapp2.0/ubuntu-x64/published"); - DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); + DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); CopyFile(buildDir + "/netcoreapp2.0/ubuntu-x64/Swagger.xml", buildDir + "/netcoreapp2.0/ubuntu-x64/published/Swagger.xml"); - DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); + DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); }); Task("Publish-Debian") .Does(() => { - publishSettings.Runtime = "debian.8-x64"; + publishSettings.Runtime = "debian.8-x64"; publishSettings.OutputDirectory = Directory(buildDir) + Directory("netcoreapp2.0/debian.8-x64/published"); - DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); + DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); CopyFile(buildDir + "/netcoreapp2.0/debian.8-x64/Swagger.xml", buildDir + "/netcoreapp2.0/debian.8-x64/published/Swagger.xml"); - DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); + DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); }); Task("Publish-Centos") .Does(() => { - publishSettings.Runtime = "centos.7-x64"; + publishSettings.Runtime = "centos.7-x64"; publishSettings.OutputDirectory = Directory(buildDir) + Directory("netcoreapp2.0/centos.7-x64/published"); - DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); + DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); CopyFile(buildDir + "/netcoreapp2.0/centos.7-x64/Swagger.xml", buildDir + "/netcoreapp2.0/centos.7-x64/published/Swagger.xml"); - DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); + DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); }); Task("Publish-Linux") .Does(() => { - publishSettings.Runtime = "linux-x64"; + publishSettings.Runtime = "linux-x64"; publishSettings.OutputDirectory = Directory(buildDir) + Directory("netcoreapp2.0/linux-x64/published"); - DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); + DotNetCorePublish("./src/Ombi/Ombi.csproj", publishSettings); CopyFile(buildDir + "/netcoreapp2.0/linux-x64/Swagger.xml", buildDir + "/netcoreapp2.0/linux-x64/published/Swagger.xml"); - DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); + DotNetCorePublish("./src/Ombi.Updater/Ombi.Updater.csproj", publishSettings); }); Task("Run-Unit-Tests") .IsDependentOn("Publish") .Does(() => { + NUnit("./src/**/bin/Release/*.Tests.dll"); }); ////////////////////////////////////////////////////////////////////// diff --git a/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs b/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs index d9d7c932f..9b12e0b01 100644 --- a/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs +++ b/src/Ombi.Core.Tests/Engine/MovieRequestEngineTests.cs @@ -2,14 +2,16 @@ //using System.Linq; //using System.Threading.Tasks; //using Moq; +//using NUnit.Framework; //using Ombi.Core.Engine; //using Ombi.Core.Models.Requests; //using Ombi.Store.Entities.Requests; //using Ombi.Store.Repository; -//using Xunit; +//using Assert = Xunit.Assert; //namespace Ombi.Core.Tests.Engine //{ +// [TestFixture] // public class MovieRequestEngineTests // { // public MovieRequestEngineTests() @@ -22,7 +24,7 @@ // private MovieRequestEngine Engine { get; } // private Mock RequestService { get; } -// [Fact] +// [Test] // public async Task GetNewRequests_Should_ReturnEmpty_WhenThereAreNoNewRequests() // { // var requests = new List @@ -39,95 +41,95 @@ // Assert.False(result.Any()); // } -// //[Fact] -// //public async Task GetNewRequests_Should_ReturnOnlyNewRequests_WhenThereAreMultipleRequests() -// //{ -// // var requests = new List -// // { -// // new MovieRequestModel { Available = true }, -// // new MovieRequestModel { Approved = true }, -// // new MovieRequestModel(), -// // }; -// // RequestService.Setup(x => x.GetAllAsync()).ReturnsAsync(requests); +// [Test] +// public async Task GetNewRequests_Should_ReturnOnlyNewRequests_WhenThereAreMultipleRequests() +// { +// var requests = new List +// { +// new MovieRequests { Available = true }, +// new MovieRequests { Approved = true }, +// new MovieRequests(), +// }; +// RequestService.Setup(x => x.Get()).Returns(requests.AsQueryable); -// // var result = await Engine.GetNewRequests(); +// var result = await Engine.GetNewRequests(); -// // Assert.Equal(result.Count(), 1); -// // Assert.All(result, x => -// // { -// // Assert.Equal(x.Available, false); -// // Assert.Equal(x.Approved, false); -// // }); -// //} +// Assert.Single(result); +// Assert.All(result, x => +// { +// Assert.False(x.Available); +// Assert.False(x.Approved); +// }); +// } -// //[Fact] -// //public async Task GetApprovedRequests_Should_ReturnEmpty_WhenThereAreNoApprovedRequests() -// //{ -// // var requests = new List -// // { -// // new MovieRequestModel { Available = true }, -// // }; -// // RequestService.Setup(x => x.GetAllAsync()).ReturnsAsync(requests); +// [Test] +// public async Task GetApprovedRequests_Should_ReturnEmpty_WhenThereAreNoApprovedRequests() +// { +// var requests = new List +// { +// new MovieRequests { Available = true }, +// }; +// RequestService.Setup(x => x.Get()).Returns(requests.AsQueryable); -// // var result = await Engine.GetApprovedRequests(); +// var result = await Engine.GetApprovedRequests(); -// // Assert.False(result.Any()); -// //} +// Assert.False(result.Any()); +// } -// //[Fact] -// //public async Task GetApprovedRequests_Should_ReturnOnlyApprovedRequests_WhenThereAreMultipleRequests() -// //{ -// // var requests = new List -// // { -// // new MovieRequestModel { Available = true }, -// // new MovieRequestModel { Approved = true }, -// // new MovieRequestModel(), -// // }; -// // RequestService.Setup(x => x.GetAllAsync()).ReturnsAsync(requests); +// [Test] +// public async Task GetApprovedRequests_Should_ReturnOnlyApprovedRequests_WhenThereAreMultipleRequests() +// { +// var requests = new List +// { +// new MovieRequests { Available = true }, +// new MovieRequests { Approved = true }, +// new MovieRequests(), +// }; +// RequestService.Setup(x => x.Get()).Returns(requests.AsQueryable); -// // var result = await Engine.GetApprovedRequests(); +// var result = await Engine.GetApprovedRequests(); -// // Assert.Equal(result.Count(), 1); -// // Assert.All(result, x => -// // { -// // Assert.Equal(x.Available, false); -// // Assert.Equal(x.Approved, true); -// // }); -// //} +// Assert.Single(result); +// Assert.All(result, x => +// { +// Assert.False(x.Available); +// Assert.True(x.Approved); +// }); +// } -// //[Fact] -// //public async Task GetAvailableRequests_Should_ReturnEmpty_WhenThereAreNoAvailableRequests() -// //{ -// // var requests = new List -// // { -// // new MovieRequestModel { Approved = true }, -// // }; -// // RequestService.Setup(x => x.GetAllAsync()).ReturnsAsync(requests); +// [Test] +// public async Task GetAvailableRequests_Should_ReturnEmpty_WhenThereAreNoAvailableRequests() +// { +// var requests = new List +// { +// new MovieRequests { Approved = true }, +// }; +// RequestService.Setup(x => x.Get()).Returns(requests.AsQueryable); -// // var result = await Engine.GetAvailableRequests(); +// var result = await Engine.GetAvailableRequests(); -// // Assert.False(result.Any()); -// //} +// Assert.False(result.Any()); +// } -// //[Fact] -// //public async Task GetAvailableRequests_Should_ReturnOnlyAvailableRequests_WhenThereAreMultipleRequests() -// //{ -// // var requests = new List -// // { -// // new MovieRequestModel { Available = true }, -// // new MovieRequestModel { Approved = true }, -// // new MovieRequestModel(), -// // }; -// // RequestService.Setup(x => x.GetAllAsync()).ReturnsAsync(requests); +// [Test] +// public async Task GetAvailableRequests_Should_ReturnOnlyAvailableRequests_WhenThereAreMultipleRequests() +// { +// var requests = new List +// { +// new MovieRequests { Available = true }, +// new MovieRequests { Approved = true }, +// new MovieRequests(), +// }; +// RequestService.Setup(x => x.Get()).Returns(requests.AsQueryable); -// // var result = await Engine.GetAvailableRequests(); +// var result = await Engine.GetAvailableRequests(); -// // Assert.Equal(result.Count(), 1); -// // Assert.All(result, x => -// // { -// // Assert.Equal(x.Available, true); -// // Assert.Equal(x.Approved, false); -// // }); -// //} +// Assert.Single(result); +// Assert.All(result, x => +// { +// Assert.True(x.Available); +// Assert.False(x.Approved); +// }); +// } // } //} \ No newline at end of file diff --git a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj index aacbf66a9..6ed010778 100644 --- a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj +++ b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj @@ -5,9 +5,12 @@ - - - + + + + + + diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index 645abc49e..1a99c83d7 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Hangfire; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -112,7 +113,6 @@ namespace Ombi.DependencyInjection services.AddSingleton(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -120,6 +120,8 @@ namespace Ombi.DependencyInjection services.AddTransient(); services.AddTransient(); services.AddTransient(); + + services.AddTransient(); } public static void RegisterJobs(this IServiceCollection services) diff --git a/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj b/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj index d3576132b..fa669e385 100644 --- a/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj +++ b/src/Ombi.Notifications.Tests/Ombi.Notifications.Tests.csproj @@ -5,10 +5,10 @@ - - - - + + + + diff --git a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs index 9372e077a..c313816d8 100644 --- a/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs +++ b/src/Ombi.Schedule.Tests/PlexAvailabilityCheckerTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading.Tasks; using Castle.Components.DictionaryAdapter; +using Hangfire; using Moq; using NUnit.Framework; using Ombi.Core.Notifications; @@ -23,7 +24,7 @@ namespace Ombi.Schedule.Tests _movie = new Mock(); _movie = new Mock(); _notify = new Mock(); - Checker = new PlexAvailabilityChecker(_repo.Object, _tv.Object, _movie.Object, _notify.Object); + Checker = new PlexAvailabilityChecker(_repo.Object, _tv.Object, _movie.Object, _notify.Object, new Mock().Object); } private readonly Mock _repo; @@ -59,8 +60,7 @@ namespace Ombi.Schedule.Tests _movie.Setup(x => x.Get()).Returns(new List { request }.AsQueryable()); await Checker.Start(); - - _movie.Verify(x => x.Save(), Times.Once); + Assert.False(request.Available); } diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs b/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs index 0b87df7cb..e3578b25d 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexAvailabilityChecker.cs @@ -15,18 +15,20 @@ namespace Ombi.Schedule.Jobs.Plex public class PlexAvailabilityChecker : IPlexAvailabilityChecker { public PlexAvailabilityChecker(IPlexContentRepository repo, ITvRequestRepository tvRequest, IMovieRequestRepository movies, - INotificationService notification) + INotificationService notification, IBackgroundJobClient background) { _tvRepo = tvRequest; _repo = repo; _movieRepo = movies; _notificationService = notification; + _backgroundJobClient = background; } private readonly ITvRequestRepository _tvRepo; private readonly IMovieRequestRepository _movieRepo; private readonly IPlexContentRepository _repo; private readonly INotificationService _notificationService; + private readonly IBackgroundJobClient _backgroundJobClient; public async Task Start() { @@ -64,7 +66,7 @@ namespace Ombi.Schedule.Jobs.Plex { // We have fulfulled this request! child.Available = true; - BackgroundJob.Enqueue(() => _notificationService.Publish(new NotificationOptions + _backgroundJobClient.Enqueue(() => _notificationService.Publish(new NotificationOptions { DateTime = DateTime.Now, NotificationType = NotificationType.RequestAvailable, @@ -94,7 +96,7 @@ namespace Ombi.Schedule.Jobs.Plex movie.Available = true; if (movie.Available) { - BackgroundJob.Enqueue(() => _notificationService.Publish(new NotificationOptions + _backgroundJobClient.Enqueue(() => _notificationService.Publish(new NotificationOptions { DateTime = DateTime.Now, NotificationType = NotificationType.RequestAvailable, diff --git a/src/Ombi.Store/Context/OmbiContext.cs b/src/Ombi.Store/Context/OmbiContext.cs index 4ec9716da..5df010ef8 100644 --- a/src/Ombi.Store/Context/OmbiContext.cs +++ b/src/Ombi.Store/Context/OmbiContext.cs @@ -22,7 +22,6 @@ namespace Ombi.Store.Context } - public DbSet NotificationTemplates { get; set; } public DbSet Settings { get; set; } public DbSet PlexContent { get; set; } diff --git a/src/Ombi/ClientApp/main.ts b/src/Ombi/ClientApp/main.ts index 84d7dd210..d88f1b98b 100644 --- a/src/Ombi/ClientApp/main.ts +++ b/src/Ombi/ClientApp/main.ts @@ -10,8 +10,8 @@ if (module['hot']) { module['hot'].accept(); module['hot'].dispose(() => { // Before restarting the app, we create a new root element and dispose the old one - const oldRootElem = document.querySelector('app'); - const newRootElem = document.createElement('app'); + const oldRootElem = document.querySelector('ombi'); + const newRootElem = document.createElement('ombi'); if (oldRootElem && oldRootElem.parentNode) { oldRootElem.parentNode.insertBefore(newRootElem, oldRootElem); } diff --git a/src/Ombi/Startup.cs b/src/Ombi/Startup.cs index 86642c272..447ceed9e 100644 --- a/src/Ombi/Startup.cs +++ b/src/Ombi/Startup.cs @@ -196,9 +196,6 @@ namespace Ombi { var ctx = serviceProvider.GetService(); - - - loggerFactory.AddSerilog(); if (env.IsDevelopment())