mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 02:26:55 -07:00
test(request-limits): ✅ Added tests for the new RequestLimitRules
This commit is contained in:
parent
e31ee8d892
commit
1ba054e439
1 changed files with 258 additions and 0 deletions
258
src/Ombi.Core.Tests/Rule/Request/RequestLimitRuleTests.cs
Normal file
258
src/Ombi.Core.Tests/Rule/Request/RequestLimitRuleTests.cs
Normal file
|
@ -0,0 +1,258 @@
|
|||
using Moq;
|
||||
using Moq.AutoMock;
|
||||
using NUnit.Framework;
|
||||
using Ombi.Core.Rule;
|
||||
using Ombi.Core.Rule.Rules.Request;
|
||||
using Ombi.Core.Services;
|
||||
using Ombi.Store.Entities;
|
||||
using Ombi.Store.Entities.Requests;
|
||||
using Ombi.Store.Repository.Requests;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ombi.Core.Tests.Rule.Request
|
||||
{
|
||||
[TestFixture]
|
||||
public class RequestLimitRuleTests
|
||||
{
|
||||
private AutoMocker _mocker;
|
||||
private RequestLimitRule _subject;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_mocker = new AutoMocker();
|
||||
_subject = _mocker.CreateInstance<RequestLimitRule>();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MovieRule_No_Limit()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMovieRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = false
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Movie
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MovieRule_Limit_NotReached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMovieRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 2,
|
||||
Remaining = 1
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Movie
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task MovieRule_Limit_Reached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMovieRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 1,
|
||||
Remaining = 0
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Movie
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(false));
|
||||
}
|
||||
[Test]
|
||||
public async Task MusicRule_No_Limit()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMusicRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = false
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Album
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task MusicRule_Limit_NotReached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMusicRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 2,
|
||||
Remaining = 1
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Album
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task MusicRule_Limit_Reached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingMusicRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 1,
|
||||
Remaining = 0
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.Album
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(false));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TvRule_No_Limit()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingTvRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = false
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new Store.Entities.Requests.BaseRequest
|
||||
{
|
||||
RequestType = RequestType.TvShow
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TvRule_Limit_NotReached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingTvRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 2,
|
||||
Remaining = 1
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new ChildRequests
|
||||
{
|
||||
RequestType = RequestType.TvShow,
|
||||
SeasonRequests = new List<SeasonRequests>
|
||||
{
|
||||
new SeasonRequests
|
||||
{
|
||||
Episodes = new List<EpisodeRequests>
|
||||
{
|
||||
new EpisodeRequests()
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(true));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task TvRule_Limit_Reached()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingTvRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 1,
|
||||
Remaining = 0
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new ChildRequests
|
||||
{
|
||||
RequestType = RequestType.TvShow,
|
||||
SeasonRequests = new List<SeasonRequests>
|
||||
{
|
||||
new SeasonRequests
|
||||
{
|
||||
Episodes = new List<EpisodeRequests>
|
||||
{
|
||||
new EpisodeRequests()
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(false));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TvRule_Limit_Reached_ManyEpisodes()
|
||||
{
|
||||
var limitService = _mocker.GetMock<IRequestLimitService>();
|
||||
limitService.Setup(x => x.GetRemainingTvRequests(It.IsAny<OmbiUser>())).ReturnsAsync(new Models.RequestQuotaCountModel
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = 1,
|
||||
Remaining = 5
|
||||
});
|
||||
|
||||
var result = await _subject.Execute(new ChildRequests
|
||||
{
|
||||
RequestType = RequestType.TvShow,
|
||||
SeasonRequests = new List<SeasonRequests>
|
||||
{
|
||||
new SeasonRequests
|
||||
{
|
||||
Episodes = new List<EpisodeRequests>
|
||||
{
|
||||
new EpisodeRequests(),
|
||||
new EpisodeRequests(),
|
||||
new EpisodeRequests(),
|
||||
}
|
||||
},
|
||||
new SeasonRequests
|
||||
{
|
||||
Episodes = new List<EpisodeRequests>
|
||||
{
|
||||
new EpisodeRequests(),
|
||||
new EpisodeRequests(),
|
||||
new EpisodeRequests(),
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Assert.That(result, Is.InstanceOf<RuleResult>().With.Property(nameof(RuleResult.Success)).EqualTo(false));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue