Summary
SABnzbd downloads were landing in Import Blocked with the error \Inconsistency: Download has no path set. When SABnzbd finishes a download, it moves the job from its active queue into history. \FetchDownloadsAsync\ was correctly matching these history entries and marking the download as \Completed, but it never copied the SABnzbd \storage\ path back to \Download.DownloadPath. The import processor later threw because \DownloadPath\ was empty.
Closes #631
Changes
Fixed
- \SabnzbdAdapter.FetchDownloadsAsync: populate \dl.DownloadPath\ from the matched SABnzbd history slot's \storage\ field when a completed history entry is found
Added
- Regression test \PollSABnzbd_SetsDownloadPath_FromHistoryStorage_WhenPathWasEmpty\ in \SabnzbdAdapterTests\ to prevent future regressions
Testing
- New unit test \PollSABnzbd_SetsDownloadPath_FromHistoryStorage_WhenPathWasEmpty\ asserts that after \MonitorDownloadsAsync, the download's \DownloadPath\ is populated from the SABnzbd history \storage\ value
- Full test suite: 673/673 passed, no regressions
Notes
\DownloadClientGateway.FetchDownloadsAsync\ already runs the resulting \DownloadPath\ through \RemotePathMappingService.TranslatePathAsync\ after the adapter returns, so path mapping (remote → local) continues to work correctly for Docker and other remote setups.
Automated Canary build