added ApplicationUpdateCommand
This commit is contained in:
parent
02fe3f9f5a
commit
ecce355ebf
|
@ -8,6 +8,7 @@ using NzbDrone.Common;
|
||||||
using NzbDrone.Common.Model;
|
using NzbDrone.Common.Model;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
using NzbDrone.Core.Update;
|
using NzbDrone.Core.Update;
|
||||||
|
using NzbDrone.Core.Update.Commands;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
using NzbDrone.Test.Common.Categories;
|
using NzbDrone.Test.Common.Categories;
|
||||||
|
|
||||||
|
@ -46,7 +47,7 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(_sandboxFolder)).Returns(true);
|
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(_sandboxFolder)).Returns(true);
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>().Verify(c => c.DeleteFolder(_sandboxFolder, true));
|
Mocker.GetMock<IDiskProvider>().Verify(c => c.DeleteFolder(_sandboxFolder, true));
|
||||||
}
|
}
|
||||||
|
@ -56,7 +57,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(_sandboxFolder)).Returns(false);
|
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(_sandboxFolder)).Returns(false);
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>().Verify(c => c.DeleteFolder(_sandboxFolder, true), Times.Never());
|
Mocker.GetMock<IDiskProvider>().Verify(c => c.DeleteFolder(_sandboxFolder, true), Times.Never());
|
||||||
}
|
}
|
||||||
|
@ -67,7 +69,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
var updateArchive = Path.Combine(_sandboxFolder, _updatePackage.FileName);
|
var updateArchive = Path.Combine(_sandboxFolder, _updatePackage.FileName);
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
Mocker.GetMock<IHttpProvider>().Verify(c => c.DownloadFile(_updatePackage.Url, updateArchive));
|
Mocker.GetMock<IHttpProvider>().Verify(c => c.DownloadFile(_updatePackage.Url, updateArchive));
|
||||||
}
|
}
|
||||||
|
@ -77,7 +80,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
var updateArchive = Path.Combine(_sandboxFolder, _updatePackage.FileName);
|
var updateArchive = Path.Combine(_sandboxFolder, _updatePackage.FileName);
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
Mocker.GetMock<ArchiveProvider>().Verify(c => c.ExtractArchive(updateArchive, _sandboxFolder));
|
Mocker.GetMock<ArchiveProvider>().Verify(c => c.ExtractArchive(updateArchive, _sandboxFolder));
|
||||||
}
|
}
|
||||||
|
@ -87,7 +91,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
var updateClientFolder = Mocker.GetMock<IEnvironmentProvider>().Object.GetUpdateClientFolder();
|
var updateClientFolder = Mocker.GetMock<IEnvironmentProvider>().Object.GetUpdateClientFolder();
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>().Verify(c => c.MoveDirectory(updateClientFolder, _sandboxFolder));
|
Mocker.GetMock<IDiskProvider>().Verify(c => c.MoveDirectory(updateClientFolder, _sandboxFolder));
|
||||||
|
@ -100,7 +105,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Mocker.GetMock<IProcessProvider>().Verify(
|
Mocker.GetMock<IProcessProvider>().Verify(
|
||||||
|
@ -115,7 +121,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IUpdatePackageProvider>().Setup(c => c.GetLatestUpdate()).Returns<UpdatePackage>(null);
|
Mocker.GetMock<IUpdatePackageProvider>().Setup(c => c.GetLatestUpdate()).Returns<UpdatePackage>(null);
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
ExceptionVerification.AssertNoUnexcpectedLogs();
|
ExceptionVerification.AssertNoUnexcpectedLogs();
|
||||||
}
|
}
|
||||||
|
@ -133,7 +140,8 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||||
Mocker.Resolve<DiskProvider>();
|
Mocker.Resolve<DiskProvider>();
|
||||||
Mocker.Resolve<ArchiveProvider>();
|
Mocker.Resolve<ArchiveProvider>();
|
||||||
|
|
||||||
Subject.InstallAvailableUpdate();
|
Subject.Execute(new CheckForUpdateCommand());
|
||||||
|
|
||||||
|
|
||||||
updateSubFolder.Refresh();
|
updateSubFolder.Refresh();
|
||||||
|
|
||||||
|
|
|
@ -505,6 +505,7 @@
|
||||||
<Compile Include="Tv\Series.cs" />
|
<Compile Include="Tv\Series.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Tv\SeriesStatusType.cs" />
|
<Compile Include="Tv\SeriesStatusType.cs" />
|
||||||
|
<Compile Include="Update\Commands\CheckForUpdateCommand.cs" />
|
||||||
<Compile Include="Update\UpdatePackageProvider.cs" />
|
<Compile Include="Update\UpdatePackageProvider.cs" />
|
||||||
<Compile Include="Update\UpdatePackage.cs" />
|
<Compile Include="Update\UpdatePackage.cs" />
|
||||||
<Compile Include="Update\UpdateService.cs" />
|
<Compile Include="Update\UpdateService.cs" />
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
using NzbDrone.Common.Messaging;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Update.Commands
|
||||||
|
{
|
||||||
|
public class CheckForUpdateCommand : ICommand
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,18 +6,19 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
|
using NzbDrone.Common.Messaging;
|
||||||
using NzbDrone.Core.Update;
|
using NzbDrone.Core.Update;
|
||||||
|
using NzbDrone.Core.Update.Commands;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Update
|
namespace NzbDrone.Core.Update
|
||||||
{
|
{
|
||||||
public interface IUpdateService
|
public interface IUpdateService
|
||||||
{
|
{
|
||||||
void InstallAvailableUpdate();
|
|
||||||
Dictionary<DateTime, string> GetUpdateLogFiles();
|
Dictionary<DateTime, string> GetUpdateLogFiles();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UpdateService : IUpdateService
|
public class UpdateService : IUpdateService, IExecute<ApplicationUpdateCommand>
|
||||||
{
|
{
|
||||||
private readonly IUpdatePackageProvider _updatePackageProvider;
|
private readonly IUpdatePackageProvider _updatePackageProvider;
|
||||||
private readonly IEnvironmentProvider _environmentProvider;
|
private readonly IEnvironmentProvider _environmentProvider;
|
||||||
|
@ -43,19 +44,6 @@ public class UpdateService : IUpdateService
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InstallAvailableUpdate()
|
|
||||||
{
|
|
||||||
var latestAvailable = _updatePackageProvider.GetLatestUpdate();
|
|
||||||
|
|
||||||
if (latestAvailable == null || latestAvailable.Version <= _environmentProvider.Version)
|
|
||||||
{
|
|
||||||
_logger.Debug("No update available.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallUpdate(latestAvailable);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InstallUpdate(UpdatePackage updatePackage)
|
private void InstallUpdate(UpdatePackage updatePackage)
|
||||||
{
|
{
|
||||||
|
@ -108,5 +96,17 @@ public class UpdateService : IUpdateService
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
public void Execute(ApplicationUpdateCommand message)
|
||||||
|
{
|
||||||
|
var latestAvailable = _updatePackageProvider.GetLatestUpdate();
|
||||||
|
|
||||||
|
if (latestAvailable == null || latestAvailable.Version <= _environmentProvider.Version)
|
||||||
|
{
|
||||||
|
_logger.Debug("No update available.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
InstallUpdate(latestAvailable);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue