Merge branch 'develop'
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 707 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 48 KiB |
BIN
Logo/Square.psd
|
@ -0,0 +1,54 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using FizzWare.NBuilder;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.Disk;
|
||||||
|
using NzbDrone.Core.HealthCheck.Checks;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.HealthCheck.Checks
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class RootFolderCheckFixture : CoreTest<RootFolderCheck>
|
||||||
|
{
|
||||||
|
private void GivenMissingRootFolder()
|
||||||
|
{
|
||||||
|
var series = Builder<Series>.CreateListOfSize(1)
|
||||||
|
.Build()
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
Mocker.GetMock<ISeriesService>()
|
||||||
|
.Setup(s => s.GetAllSeries())
|
||||||
|
.Returns(series);
|
||||||
|
|
||||||
|
Mocker.GetMock<IDiskProvider>()
|
||||||
|
.Setup(s => s.GetParentFolder(series.First().Path))
|
||||||
|
.Returns(@"C:\TV");
|
||||||
|
|
||||||
|
Mocker.GetMock<IDiskProvider>()
|
||||||
|
.Setup(s => s.FolderExists(It.IsAny<String>()))
|
||||||
|
.Returns(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_return_error_when_no_series()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<ISeriesService>()
|
||||||
|
.Setup(s => s.GetAllSeries())
|
||||||
|
.Returns(new List<Series>());
|
||||||
|
|
||||||
|
Subject.Check().ShouldBeOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_error_if_series_parent_is_missing()
|
||||||
|
{
|
||||||
|
GivenMissingRootFolder();
|
||||||
|
|
||||||
|
Subject.Check().ShouldBeError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
|
using FluentAssertions;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
using NzbDrone.Common.EnvironmentInfo;
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Core.HealthCheck;
|
||||||
using NzbDrone.Core.HealthCheck.Checks;
|
using NzbDrone.Core.HealthCheck.Checks;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,7 @@
|
||||||
<Compile Include="Framework\CoreTest.cs" />
|
<Compile Include="Framework\CoreTest.cs" />
|
||||||
<Compile Include="Framework\DbTest.cs" />
|
<Compile Include="Framework\DbTest.cs" />
|
||||||
<Compile Include="Framework\NBuilderExtensions.cs" />
|
<Compile Include="Framework\NBuilderExtensions.cs" />
|
||||||
|
<Compile Include="HealthCheck\Checks\RootFolderCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\DownloadClientCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\DownloadClientCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\UpdateCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\UpdateCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\IndexerCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\IndexerCheckFixture.cs" />
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Core.Qualities;
|
using NzbDrone.Core.Qualities;
|
||||||
|
@ -105,6 +104,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||||
[TestCase("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", false)]
|
[TestCase("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", false)]
|
||||||
[TestCase("S07E23 - [WEBDL].mkv ", false)]
|
[TestCase("S07E23 - [WEBDL].mkv ", false)]
|
||||||
[TestCase("Fringe S04E22 720p WEB-DL DD5.1 H264-EbP.mkv", false)]
|
[TestCase("Fringe S04E22 720p WEB-DL DD5.1 H264-EbP.mkv", false)]
|
||||||
|
[TestCase("House.S04.720p.Web-Dl.Dd5.1.h264-P2PACK", false)]
|
||||||
public void should_parse_webdl720p_quality(string title, bool proper)
|
public void should_parse_webdl720p_quality(string title, bool proper)
|
||||||
{
|
{
|
||||||
ParseAndVerifyQuality(title, Quality.WEBDL720p, proper);
|
ParseAndVerifyQuality(title, Quality.WEBDL720p, proper);
|
||||||
|
|
|
@ -32,6 +32,12 @@ namespace NzbDrone.Core.IndexerSearch
|
||||||
|
|
||||||
foreach (var season in series.Seasons)
|
foreach (var season in series.Seasons)
|
||||||
{
|
{
|
||||||
|
if (!season.Monitored)
|
||||||
|
{
|
||||||
|
_logger.Debug("Season {0} of {1} is not monitored, skipping seaarch", season.SeasonNumber, series.Title);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var decisions = _nzbSearchService.SeasonSearch(message.SeriesId, season.SeasonNumber);
|
var decisions = _nzbSearchService.SeasonSearch(message.SeriesId, season.SeasonNumber);
|
||||||
downloadedCount += _downloadApprovedReports.DownloadApproved(decisions).Count;
|
downloadedCount += _downloadApprovedReports.DownloadApproved(decisions).Count;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ namespace NzbDrone.Core.Notifications
|
||||||
|
|
||||||
var episodeTitles = String.Join(" + ", episodes.Select(e => e.Title));
|
var episodeTitles = String.Join(" + ", episodes.Select(e => e.Title));
|
||||||
|
|
||||||
return String.Format("{0} - {1}{2} - {3} {4}",
|
return String.Format("{0} - {1}{2} - {3} [{4}]",
|
||||||
series.Title,
|
series.Title,
|
||||||
episodes.First().SeasonNumber,
|
episodes.First().SeasonNumber,
|
||||||
episodeNumbers,
|
episodeNumbers,
|
||||||
|
@ -71,7 +71,7 @@ namespace NzbDrone.Core.Notifications
|
||||||
public void Handle(EpisodeDownloadedEvent message)
|
public void Handle(EpisodeDownloadedEvent message)
|
||||||
{
|
{
|
||||||
var downloadMessage = new DownloadMessage();
|
var downloadMessage = new DownloadMessage();
|
||||||
downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.ParsedEpisodeInfo.Quality);
|
downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.Quality);
|
||||||
downloadMessage.Series = message.Episode.Series;
|
downloadMessage.Series = message.Episode.Series;
|
||||||
downloadMessage.EpisodeFile = message.EpisodeFile;
|
downloadMessage.EpisodeFile = message.EpisodeFile;
|
||||||
downloadMessage.OldFiles = message.OldFiles;
|
downloadMessage.OldFiles = message.OldFiles;
|
||||||
|
|
|
@ -88,12 +88,26 @@ namespace NzbDrone.Update
|
||||||
return startupContext;
|
return startupContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Count() >= 3)
|
else if (args.Count() == 3)
|
||||||
{
|
{
|
||||||
startupContext.UpdateLocation = args[1];
|
startupContext.UpdateLocation = args[1];
|
||||||
startupContext.ExecutingApplication = args[2];
|
startupContext.ExecutingApplication = args[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.Debug("Arguments:");
|
||||||
|
|
||||||
|
foreach (var arg in args)
|
||||||
|
{
|
||||||
|
logger.Debug(" {0}", arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
var message = String.Format("Number of arguments are unexpected, expected: 3, found: {0}", args.Count());
|
||||||
|
|
||||||
|
throw new ArgumentOutOfRangeException("args", message);
|
||||||
|
}
|
||||||
|
|
||||||
return startupContext;
|
return startupContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: @screen-md-min) {
|
@media (min-width: @screen-md-min) {
|
||||||
width : 140px;
|
width : 135px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,6 @@
|
||||||
@import "../Content/mixins";
|
@import "../Content/mixins";
|
||||||
@import "../Content/variables";
|
@import "../Content/variables";
|
||||||
|
|
||||||
.table {
|
|
||||||
|
|
||||||
//table-layout: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
.series-title {
|
.series-title {
|
||||||
.text-overflow();
|
.text-overflow();
|
||||||
|
|
||||||
|
@ -24,9 +19,10 @@
|
||||||
color: #428bca;
|
color: #428bca;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
&.focus, &.hover {
|
&:focus, &:hover {
|
||||||
color: #2a6496;
|
color: #2a6496;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @lg {
|
@media @lg {
|
||||||
|
|
|
@ -87,3 +87,19 @@ h3 {
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tooltips
|
||||||
|
|
||||||
|
.help-inline-checkbox, .help-inline {
|
||||||
|
.tooltip-inner {
|
||||||
|
white-space : pre-wrap;
|
||||||
|
min-width : 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-link ~ .tooltip {
|
||||||
|
.tooltip-inner {
|
||||||
|
white-space : normal;
|
||||||
|
min-width : 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ define(
|
||||||
|
|
||||||
Handlebars.registerHelper('EpisodeProgressClass', function () {
|
Handlebars.registerHelper('EpisodeProgressClass', function () {
|
||||||
if (this.episodeFileCount === this.episodeCount) {
|
if (this.episodeFileCount === this.episodeCount) {
|
||||||
if (this.continuing) {
|
if (this.status === 'continuing') {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="rename-preview-item">
|
<div class="rename-preview-item">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="rename-checkbox span">
|
<div class="rename-checkbox col-md-1">
|
||||||
<label class="checkbox-button" title="Rename File">
|
<label class="checkbox-button" title="Rename File">
|
||||||
<input type="checkbox" name="rename"/>
|
<input type="checkbox" name="rename"/>
|
||||||
<div class="btn btn-icon-only">
|
<div class="btn">
|
||||||
<i></i>
|
<i></i>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -23,15 +23,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.rename-checkbox {
|
.rename-checkbox {
|
||||||
width: 20px;
|
width: 40px;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
||||||
.checkbox-button {
|
.checkbox-button {
|
||||||
.btn {
|
.btn {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
min-width: 10px;
|
width: 38px;
|
||||||
width: 10px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,8 +46,7 @@
|
||||||
.checkbox-button {
|
.checkbox-button {
|
||||||
.btn {
|
.btn {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
min-width: 10px;
|
width: 38px;
|
||||||
width: 10px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,17 +9,7 @@ define(
|
||||||
console.log('starting signalR');
|
console.log('starting signalR');
|
||||||
|
|
||||||
$('body').tooltip({
|
$('body').tooltip({
|
||||||
selector: '[title]',
|
selector: '[title]'
|
||||||
container: 'body'
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).click(function(e) {
|
|
||||||
|
|
||||||
if ($(e.target).attr('title') !== undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.tooltip').remove();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|