using System.Collections.Generic; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Core.MediaCover; using NzbDrone.Core.Test.Framework; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.MediaCoverTests { [TestFixture] public class CoverAlreadyExistsSpecificationFixture : CoreTest { private Dictionary _headers; [SetUp] public void Setup() { _headers = new Dictionary(); Mocker.GetMock().Setup(c => c.GetFileSize(It.IsAny())).Returns(100); Mocker.GetMock().Setup(c => c.GetHeader(It.IsAny())).Returns(_headers); } private void GivenFileExistsOnDisk() { Mocker.GetMock().Setup(c => c.FileExists(It.IsAny())).Returns(true); } private void GivenExistingFileSize(long bytes) { GivenFileExistsOnDisk(); Mocker.GetMock().Setup(c => c.GetFileSize(It.IsAny())).Returns(bytes); } [Test] public void should_return_false_if_file_not_exists() { Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeFalse(); } [Test] public void should_return_false_if_file_exists_but_diffrent_size() { GivenExistingFileSize(100); _headers.Add(HttpProvider.ContentLenghtHeader, "200"); Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeFalse(); } [Test] public void should_return_ture_if_file_exists_and_same_size() { GivenExistingFileSize(100); _headers.Add(HttpProvider.ContentLenghtHeader, "100"); Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeTrue(); } [Test] public void should_return_true_if_there_is_no_size_header_and_file_exist() { GivenExistingFileSize(100); Subject.AlreadyExists("http://url", "c:\\file.exe").Should().BeFalse(); ExceptionVerification.ExpectedWarns(1); } } }