You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readarr/NzbDrone.Core.Test/Indexers/NewznabServiceTest.cs

90 lines
2.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Security.Policy;
using FizzWare.NBuilder;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.Indexers
{
[TestFixture]
// ReSharper disable InconsistentNaming
public class NewznabProviderTest : CoreTest<NewznabService>
{
private void WithInvalidName()
{
Mocker.GetMock<INewznabRepository>()
.Setup(s => s.All())
.Returns(new List<NewznabDefinition>{new NewznabDefinition { OID = 1, Name = "", Url = "http://www.nzbdrone.com" }});
}
private void WithExisting()
{
Mocker.GetMock<INewznabRepository>()
.Setup(s => s.All())
.Returns(new List<NewznabDefinition> { new NewznabDefinition { OID = 1, Name = "Nzbs.org", Url = "http://nzbs.org" } });
}
[Test]
public void InitializeNewznabIndexers_should_initialize_build_in_indexers()
{
Subject.Init();
Mocker.GetMock<INewznabRepository>()
.Verify(s => s.Insert(It.Is<NewznabDefinition>(n => n.BuiltIn)), Times.Exactly(3));
}
[Test]
public void should_delete_indexers_without_names()
{
WithInvalidName();
Subject.Init();
Mocker.GetMock<INewznabRepository>()
.Verify(s => s.Delete(1), Times.Once());
}
[Test]
public void should_add_new_indexers()
{
WithExisting();
Subject.Init();
Mocker.GetMock<INewznabRepository>()
.Verify(s => s.Insert(It.IsAny<NewznabDefinition>()), Times.Exactly(2));
}
[Test]
public void should_update_existing()
{
WithExisting();
Subject.Init();
Mocker.GetMock<INewznabRepository>()
.Verify(s => s.Update(It.IsAny<NewznabDefinition>()), Times.Once());
}
[Test]
public void CheckHostname_should_do_nothing_if_hostname_is_valid()
{
Subject.CheckHostname("http://www.google.com");
}
[Test]
public void CheckHostname_should_log_error_and_throw_exception_if_dnsHostname_is_invalid()
{
Assert.Throws<SocketException>(() => Subject.CheckHostname("http://BadName"));
ExceptionVerification.ExpectedErrors(1);
}
}
}