mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-16 02:02:55 -07:00
Some rules #865
This commit is contained in:
parent
d73899fc53
commit
974cb1ebb3
22 changed files with 289 additions and 131 deletions
|
@ -1,4 +1,5 @@
|
|||
using System.Security.Principal;
|
||||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Ombi.Core.Claims;
|
||||
using Ombi.Core.Models.Requests;
|
||||
|
@ -20,64 +21,64 @@ namespace Ombi.Core.Tests.Rule
|
|||
private Mock<IPrincipal> PrincipalMock { get; }
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenAdminAndRequestMovie()
|
||||
public async Task Should_ReturnSuccess_WhenAdminAndRequestMovie()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.Admin)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenAdminAndRequestTV()
|
||||
public async Task Should_ReturnSuccess_WhenAdminAndRequestTV()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.Admin)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenAutoApproveMovieAndRequestMovie()
|
||||
public async Task Should_ReturnSuccess_WhenAutoApproveMovieAndRequestMovie()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.AutoApproveMovie)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenAutoApproveTVAndRequestTV()
|
||||
public async Task Should_ReturnSuccess_WhenAutoApproveTVAndRequestTV()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.AutoApproveTv)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnFail_WhenNoClaimsAndRequestMovie()
|
||||
public async Task Should_ReturnFail_WhenNoClaimsAndRequestMovie()
|
||||
{
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, false);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnFail_WhenNoClaimsAndRequestTV()
|
||||
public async Task Should_ReturnFail_WhenNoClaimsAndRequestTV()
|
||||
{
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, false);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.Security.Principal;
|
||||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Ombi.Core.Claims;
|
||||
using Ombi.Core.Models.Requests;
|
||||
|
@ -19,62 +20,62 @@ namespace Ombi.Core.Tests.Rule
|
|||
private Mock<IPrincipal> PrincipalMock { get; }
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenRequestingMovieWithMovieRole()
|
||||
public async Task Should_ReturnSuccess_WhenRequestingMovieWithMovieRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.RequestMovie)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnFail_WhenRequestingMovieWithoutMovieRole()
|
||||
public async Task Should_ReturnFail_WhenRequestingMovieWithoutMovieRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.RequestMovie)).Returns(false);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, false);
|
||||
Assert.Equal(string.IsNullOrEmpty(result.Message), false);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenRequestingMovieWithAdminRole()
|
||||
public async Task Should_ReturnSuccess_WhenRequestingMovieWithAdminRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.Admin)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.Movie };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenRequestingTVWithAdminRole()
|
||||
public async Task Should_ReturnSuccess_WhenRequestingTVWithAdminRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.Admin)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnSuccess_WhenRequestingTVWithTVRole()
|
||||
public async Task Should_ReturnSuccess_WhenRequestingTVWithTVRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.RequestTv)).Returns(true);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnFail_WhenRequestingTVWithoutTVRole()
|
||||
public async Task Should_ReturnFail_WhenRequestingTVWithoutTVRole()
|
||||
{
|
||||
PrincipalMock.Setup(x => x.IsInRole(OmbiClaims.RequestTv)).Returns(false);
|
||||
var request = new BaseRequestModel() { Type = Store.Entities.RequestType.TvShow };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, false);
|
||||
Assert.Equal(string.IsNullOrEmpty(result.Message), false);
|
||||
|
|
51
src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs
Normal file
51
src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs
Normal file
|
@ -0,0 +1,51 @@
|
|||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Ombi.Core.Models.Requests;
|
||||
using Ombi.Core.Models.Requests.Movie;
|
||||
using Ombi.Core.Models.Search;
|
||||
using Ombi.Core.Requests.Models;
|
||||
using Ombi.Core.Rule.Rules.Search;
|
||||
using Ombi.Store.Context;
|
||||
using Ombi.Store.Entities;
|
||||
using Ombi.Store.Repository;
|
||||
using Xunit;
|
||||
|
||||
namespace Ombi.Core.Tests.Rule.Search
|
||||
{
|
||||
public class ExistignRequestRuleTests
|
||||
{
|
||||
public ExistignRequestRuleTests()
|
||||
{
|
||||
MovieMock = new Mock<IRequestService<MovieRequestModel>>();
|
||||
TvMock = new Mock<IRequestService<TvRequestModel>>();
|
||||
Rule = new ExistingRequestRule(MovieMock.Object, TvMock.Object);
|
||||
}
|
||||
|
||||
private ExistingRequestRule Rule { get; }
|
||||
private Mock<IRequestService<MovieRequestModel>> MovieMock { get; }
|
||||
private Mock<IRequestService<TvRequestModel>> TvMock { get; }
|
||||
|
||||
// TODO continue tests
|
||||
// https://stackoverflow.com/questions/27483709/testing-ef-async-methods-with-sync-methods-with-moq
|
||||
public async Task ShouldBe_Requested_WhenExisitngMovie()
|
||||
{
|
||||
var list = DbHelper.GetQueryableMockDbSet(new MovieRequestModel
|
||||
{
|
||||
ProviderId = 123,
|
||||
Approved = true
|
||||
});
|
||||
MovieMock.Setup(x => x.GetAllQueryable()).Returns(list);
|
||||
var search = new SearchMovieViewModel
|
||||
{
|
||||
Id = 123,
|
||||
|
||||
};
|
||||
var result = await Rule.Execute(search);
|
||||
|
||||
Assert.True(result.Success);
|
||||
Assert.Equal(search.Approved, true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
50
src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs
Normal file
50
src/Ombi.Core.Tests/Rule/Search/PlexAvailabilityRuleTests.cs
Normal file
|
@ -0,0 +1,50 @@
|
|||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Ombi.Core.Models.Search;
|
||||
using Ombi.Core.Rule.Rules.Search;
|
||||
using Ombi.Store.Context;
|
||||
using Ombi.Store.Entities;
|
||||
using Ombi.Store.Repository;
|
||||
using Xunit;
|
||||
|
||||
namespace Ombi.Core.Tests.Rule.Search
|
||||
{
|
||||
public class PlexAvailabilityRuleTests
|
||||
{
|
||||
public PlexAvailabilityRuleTests()
|
||||
{
|
||||
ContextMock = new Mock<IPlexContentRepository>();
|
||||
Rule = new PlexAvailabilityRule(ContextMock.Object);
|
||||
}
|
||||
|
||||
private PlexAvailabilityRule Rule { get; }
|
||||
private Mock<IPlexContentRepository> ContextMock { get; }
|
||||
|
||||
[Fact]
|
||||
public async Task ShouldBe_Available_WhenFoundInPlex()
|
||||
{
|
||||
ContextMock.Setup(x => x.Get(It.IsAny<string>())).ReturnsAsync(new PlexContent
|
||||
{
|
||||
Url = "TestUrl"
|
||||
});
|
||||
var search = new SearchMovieViewModel();
|
||||
var result = await Rule.Execute(search);
|
||||
|
||||
Assert.True(result.Success);
|
||||
Assert.Equal(search.PlexUrl, "TestUrl");
|
||||
Assert.Equal(search.Available, true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ShouldBe_NotAvailable_WhenNotFoundInPlex()
|
||||
{
|
||||
ContextMock.Setup(x => x.Get(It.IsAny<string>())).Returns(Task.FromResult(default(PlexContent)));
|
||||
var search = new SearchMovieViewModel();
|
||||
var result = await Rule.Execute(search);
|
||||
|
||||
Assert.True(result.Success);
|
||||
Assert.Equal(search.PlexUrl, null);
|
||||
Assert.Equal(search.Available, false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Ombi.Core.Models.Search;
|
||||
using Ombi.Core.Rule.Rules.Search;
|
||||
|
@ -19,7 +20,7 @@ namespace Ombi.Core.Tests.Rule.Search
|
|||
private Mock<IOmbiContext> ContextMock { get; }
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnApproved_WhenMovieIsInRadarr()
|
||||
public async Task Should_ReturnApproved_WhenMovieIsInRadarr()
|
||||
{
|
||||
var list = DbHelper.GetQueryableMockDbSet(new RadarrCache
|
||||
{
|
||||
|
@ -29,7 +30,7 @@ namespace Ombi.Core.Tests.Rule.Search
|
|||
ContextMock.Setup(x => x.RadarrCache).Returns(list);
|
||||
|
||||
var request = new SearchMovieViewModel { Id = 123 };
|
||||
var result = Rule.Execute(request);
|
||||
var result =await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, true);
|
||||
|
@ -37,7 +38,7 @@ namespace Ombi.Core.Tests.Rule.Search
|
|||
|
||||
|
||||
[Fact]
|
||||
public void Should_ReturnNotApproved_WhenMovieIsNotInRadarr()
|
||||
public async Task Should_ReturnNotApproved_WhenMovieIsNotInRadarr()
|
||||
{
|
||||
var list = DbHelper.GetQueryableMockDbSet(new RadarrCache
|
||||
{
|
||||
|
@ -47,7 +48,7 @@ namespace Ombi.Core.Tests.Rule.Search
|
|||
ContextMock.Setup(x => x.RadarrCache).Returns(list);
|
||||
|
||||
var request = new SearchMovieViewModel { Id = 123 };
|
||||
var result = Rule.Execute(request);
|
||||
var result = await Rule.Execute(request);
|
||||
|
||||
Assert.Equal(result.Success, true);
|
||||
Assert.Equal(request.Approved, false);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue