parent
c1fba9093d
commit
48880e4964
@ -0,0 +1,61 @@
|
|||||||
|
using System.Net;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using NzbDrone.Common;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.DataAugmentation.Scene;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.DataAugmentationFixture.Scene
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
|
||||||
|
public class SceneMappingProxyFixture : CoreTest<SceneMappingProxy>
|
||||||
|
{
|
||||||
|
private const string SCENE_MAPPING_URL = "http://services.nzbdrone.com/SceneMapping/Active";
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<IConfigService>().SetupGet(s => s.ServiceRootUrl)
|
||||||
|
.Returns("http://services.nzbdrone.com");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void fetch_should_return_list_of_mappings()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString(SCENE_MAPPING_URL))
|
||||||
|
.Returns(ReadAllText("Files", "SceneMappings.json"));
|
||||||
|
|
||||||
|
var mappings = Subject.Fetch();
|
||||||
|
|
||||||
|
mappings.Should().NotBeEmpty();
|
||||||
|
|
||||||
|
mappings.Should().NotContain(c => string.IsNullOrWhiteSpace(c.CleanTitle));
|
||||||
|
mappings.Should().NotContain(c => string.IsNullOrWhiteSpace(c.SceneName));
|
||||||
|
mappings.Should().NotContain(c => c.TvdbId == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_throw_on_server_error()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString(SCENE_MAPPING_URL))
|
||||||
|
.Throws(new WebException());
|
||||||
|
Assert.Throws<WebException>(() => Subject.Fetch());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_throw_on_bad_json()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<HttpProvider>()
|
||||||
|
.Setup(s => s.DownloadString(SCENE_MAPPING_URL))
|
||||||
|
.Returns("bad json");
|
||||||
|
Assert.Throws<JsonReaderException>(() => Subject.Fetch());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net;
|
||||||
|
using FizzWare.NBuilder;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.DataAugmentation.Scene;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.DataAugmentationFixture.Scene
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
|
||||||
|
public class SceneMappingServiceFixture : DbTest<SceneMappingService, SceneMapping>
|
||||||
|
{
|
||||||
|
|
||||||
|
private List<SceneMapping> _fakeMappings;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
_fakeMappings = Builder<SceneMapping>.CreateListOfSize(5).BuildListOfNew();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void UpdateMappings_purge_existing_mapping_and_add_new_ones()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<ISceneMappingProxy>().Setup(c => c.Fetch()).Returns(_fakeMappings);
|
||||||
|
|
||||||
|
Subject.UpdateMappings();
|
||||||
|
|
||||||
|
AssertMappingUpdated();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void UpdateMappings_should_not_delete_if_fetch_fails()
|
||||||
|
{
|
||||||
|
|
||||||
|
Mocker.GetMock<ISceneMappingProxy>().Setup(c => c.Fetch()).Throws(new WebException());
|
||||||
|
|
||||||
|
Subject.UpdateMappings();
|
||||||
|
|
||||||
|
AssertNoUpdate();
|
||||||
|
|
||||||
|
ExceptionVerification.ExpectedErrors(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void UpdateMappings_should_not_delete_if_fetch_returns_empty_list()
|
||||||
|
{
|
||||||
|
|
||||||
|
Mocker.GetMock<ISceneMappingProxy>().Setup(c => c.Fetch()).Returns(new List<SceneMapping>());
|
||||||
|
|
||||||
|
Subject.UpdateMappings();
|
||||||
|
|
||||||
|
AssertNoUpdate();
|
||||||
|
|
||||||
|
ExceptionVerification.ExpectedWarns(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AssertNoUpdate()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<ISceneMappingProxy>().Verify(c => c.Fetch(), Times.Once());
|
||||||
|
Mocker.GetMock<ISceneMappingRepository>().Verify(c => c.Purge(), Times.Never());
|
||||||
|
Mocker.GetMock<ISceneMappingRepository>().Verify(c => c.InsertMany(_fakeMappings), Times.Never());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AssertMappingUpdated()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<ISceneMappingProxy>().Verify(c => c.Fetch(), Times.Once());
|
||||||
|
Mocker.GetMock<ISceneMappingRepository>().Verify(c => c.Purge(), Times.Once());
|
||||||
|
Mocker.GetMock<ISceneMappingRepository>().Verify(c => c.InsertMany(_fakeMappings), Times.Once());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using NLog;
|
using NLog;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Core.Configuration;
|
using NzbDrone.Core.Configuration;
|
||||||
|
|
||||||
namespace NzbDrone.Core.ReferenceData
|
namespace NzbDrone.Core.DataAugmentation.DailySeries
|
||||||
{
|
{
|
||||||
|
|
||||||
public interface IDailySeriesDataProxy
|
public interface IDailySeriesDataProxy
|
@ -0,0 +1,30 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using NzbDrone.Common;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.DataAugmentation.Scene
|
||||||
|
{
|
||||||
|
public interface ISceneMappingProxy
|
||||||
|
{
|
||||||
|
List<SceneMapping> Fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SceneMappingProxy : ISceneMappingProxy
|
||||||
|
{
|
||||||
|
private readonly HttpProvider _httpProvider;
|
||||||
|
private readonly IConfigService _configService;
|
||||||
|
|
||||||
|
public SceneMappingProxy(HttpProvider httpProvider, IConfigService configService)
|
||||||
|
{
|
||||||
|
_httpProvider = httpProvider;
|
||||||
|
_configService = configService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<SceneMapping> Fetch()
|
||||||
|
{
|
||||||
|
var mappingsJson = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/SceneMapping/Active");
|
||||||
|
return JsonConvert.DeserializeObject<List<SceneMapping>>(mappingsJson);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,7 @@
|
|||||||
using System.Data;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NzbDrone.Core.Datastore;
|
using NzbDrone.Core.Datastore;
|
||||||
|
|
||||||
namespace NzbDrone.Core.ReferenceData
|
namespace NzbDrone.Core.DataAugmentation.Scene
|
||||||
{
|
{
|
||||||
public interface ISceneMappingRepository : IBasicRepository<SceneMapping>
|
public interface ISceneMappingRepository : IBasicRepository<SceneMapping>
|
||||||
{
|
{
|
@ -1,49 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using NzbDrone.Common;
|
|
||||||
using NzbDrone.Core.Configuration;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.ReferenceData
|
|
||||||
{
|
|
||||||
public interface ISceneMappingProxy
|
|
||||||
{
|
|
||||||
List<SceneMapping> Fetch();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SceneMappingProxy : ISceneMappingProxy
|
|
||||||
{
|
|
||||||
private readonly HttpProvider _httpProvider;
|
|
||||||
private readonly IConfigService _configService;
|
|
||||||
|
|
||||||
public SceneMappingProxy(HttpProvider httpProvider, IConfigService configService)
|
|
||||||
{
|
|
||||||
_httpProvider = httpProvider;
|
|
||||||
_configService = configService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SceneMapping> Fetch()
|
|
||||||
{
|
|
||||||
var mappingsJson = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/SceneMapping/Active");
|
|
||||||
return JsonConvert.DeserializeObject<List<SceneMapping>>(mappingsJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* public virtual bool SubmitMapping(int id, string postTitle)
|
|
||||||
{
|
|
||||||
Logger.Trace("Parsing example post");
|
|
||||||
var episodeParseResult = Parser.ParseTitle(postTitle);
|
|
||||||
var cleanTitle = episodeParseResult.CleanTitle;
|
|
||||||
var title = episodeParseResult.SeriesTitle.Replace('.', ' ');
|
|
||||||
Logger.Trace("Example post parsed. CleanTitle: {0}, Title: {1}", cleanTitle, title);
|
|
||||||
|
|
||||||
var newMapping = String.Format("/SceneMapping/AddPending?cleanTitle={0}&id={1}&title={2}", cleanTitle, id, title);
|
|
||||||
var response = _httpProvider.DownloadString(_configService.ServiceRootUrl + newMapping);
|
|
||||||
|
|
||||||
if (JsonConvert.DeserializeObject<String>(response).Equals("Ok"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue