using System.Linq; using Moq; using NUnit.Framework; using NzbDrone.Common.Contract; using NzbDrone.Test.Common; namespace NzbDrone.Common.Test { [TestFixture] // ReSharper disable InconsistentNaming public class ReportingService_ReportParseError_Fixture : TestBase { [SetUp] public void SetUp() { ReportingService.ClearCache(); } [TearDown] public void TearDown() { ReportingService.ClearCache(); } [Test] public void report_parse_error_should_send_report_to_server() { const string badTitle = "Bad Title"; ReportingService.ReportParseError(badTitle); MockedRestProvider.Verify(p => p.PostData(It.Is(c => c.ToLower().StartsWith("http://services.nzbdrone.com/")), It.Is(c => c.Title == badTitle)), Times.Once()); } [Test] public void report_parse_error_should_send_duplicated_report_once() { const string badTitle = "Bad Title"; ReportingService.ReportParseError(badTitle); ReportingService.ReportParseError(badTitle); MockedRestProvider.Verify(p => p.PostData(It.IsAny(), It.IsAny()), Times.Once()); } [Test] public void report_parse_error_should_send_duplicated_report_once_with_diffrent_casing() { const string badTitle = "Bad Title"; ReportingService.ReportParseError(badTitle.ToUpper()); ReportingService.ReportParseError(badTitle); MockedRestProvider.Verify(p => p.PostData(It.IsAny(), It.IsAny()), Times.Once()); } [Test] public void report_parse_error_should_send_multiple_reports_if_titles_are_diffrent() { ReportingService.ReportParseError("title 1"); ReportingService.ReportParseError("title 2"); MockedRestProvider.Verify(p => p.PostData(It.IsAny(), It.IsAny()), Times.Exactly(2)); MockedRestProvider.Verify(p => p.PostData(It.IsAny(), It.Is(c => c.Title == "title 1")), Times.Once()); MockedRestProvider.Verify(p => p.PostData(It.IsAny(), It.Is(c => c.Title == "title 2")), Times.Once()); } [Test] public void report_parse_error() { ReportingService.RestProvider = new RestProvider(new EnvironmentProvider()); ReportingService.ReportParseError("Test error"); } } }