diff --git a/src/NzbDrone.Core.Test/Download/DownloadClientTests/TransmissionTests/TransmissionFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadClientTests/TransmissionTests/TransmissionFixture.cs index 010491e06..fa0a5fc16 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadClientTests/TransmissionTests/TransmissionFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadClientTests/TransmissionTests/TransmissionFixture.cs @@ -19,6 +19,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests protected TransmissionTorrent _downloading; protected TransmissionTorrent _failed; protected TransmissionTorrent _completed; + protected Dictionary _transmissionConfigItems; [SetUp] public void Setup() @@ -87,15 +88,15 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests .Setup(s => s.Get(It.IsAny())) .Returns(r => new HttpResponse(r, new HttpHeader(), new Byte[0])); - var configItems = new Dictionary(); + _transmissionConfigItems = new Dictionary(); - configItems.Add("download-dir", @"C:/Downloads/Finished/transmission"); - configItems.Add("incomplete-dir", null); - configItems.Add("incomplete-dir-enabled", false); + _transmissionConfigItems.Add("download-dir", @"C:/Downloads/Finished/transmission"); + _transmissionConfigItems.Add("incomplete-dir", null); + _transmissionConfigItems.Add("incomplete-dir-enabled", false); Mocker.GetMock() .Setup(v => v.GetConfig(It.IsAny())) - .Returns(configItems); + .Returns(_transmissionConfigItems); } @@ -230,6 +231,24 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests .Verify(v => v.AddTorrentFromData(It.IsAny(), @"C:/Downloads/Finished/transmission/.nzbdrone", It.IsAny()), Times.Once()); } + [Test] + public void Download_with_category_should_not_have_double_slashes() + { + GivenTvCategory(); + GivenSuccessfulDownload(); + + _transmissionConfigItems["download-dir"] += "/"; + + var remoteEpisode = CreateRemoteEpisode(); + + var id = Subject.Download(remoteEpisode); + + id.Should().NotBeNullOrEmpty(); + + Mocker.GetMock() + .Verify(v => v.AddTorrentFromData(It.IsAny(), @"C:/Downloads/Finished/transmission/.nzbdrone", It.IsAny()), Times.Once()); + } + [TestCase("magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR&tr=udp", "CBC2F069FE8BB2F544EAE707D75BCD3DE9DCF951")] public void Download_should_get_hash_from_magnet_url(String magnetUrl, String expectedHash) { diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs index 56b75448f..3f7e01010 100644 --- a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs +++ b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs @@ -71,7 +71,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission var config = _proxy.GetConfig(Settings); var destDir = (String)config.GetValueOrDefault("download-dir"); - return String.Format("{0}/.{1}", destDir, Settings.TvCategory); + return string.Format("{0}/.{1}", destDir.TrimEnd('/'), Settings.TvCategory); } public override IEnumerable GetItems()