Added tests for cache status detection

This commit is contained in:
Sumner Evans
2020-05-15 15:12:27 -06:00
parent 8ed07e79bc
commit 10c968ea44
3 changed files with 53 additions and 2 deletions

View File

@@ -685,6 +685,7 @@ class FilesystemAdapter(CachingAdapter):
cache_info_extra["file_id"] = params[0]
elif data_key == KEYS.SONG_FILE_PERMANENT:
data_key = KEYS.SONG_FILE
cache_info_extra["cache_permanently"] = True
# Set the cache info.
@@ -711,7 +712,7 @@ class FilesystemAdapter(CachingAdapter):
cache_info.save()
# Special handling for Song
if data_key == KEYS.SONG_FILE:
if data_key == KEYS.SONG_FILE and data:
path, buffer_filename = data
if path:

View File

@@ -842,6 +842,19 @@ class AdapterManager:
return Result(do_batch_download_songs, is_download=True, on_cancel=on_cancel)
@staticmethod
def batch_permanently_cache_songs(
song_ids: Sequence[str],
before_download: Callable[[str], None],
on_song_download_complete: Callable[[str], None],
) -> Result[None]:
assert AdapterManager._instance
# This only really makes sense if we have a caching_adapter.
if not AdapterManager._instance.caching_adapter:
return Result(None)
# TODO ACTUALLY IMPLEMENT THIS
raise NotImplementedError()
@staticmethod
def batch_delete_cached_songs(
song_ids: Sequence[str], on_song_delete: Callable[[str], None]

View File

@@ -9,7 +9,7 @@ import pytest
from peewee import SelectQuery
from sublime.adapters import api_objects as SublimeAPI, CacheMissError
from sublime.adapters import api_objects as SublimeAPI, CacheMissError, SongCacheStatus
from sublime.adapters.filesystem import FilesystemAdapter
from sublime.adapters.subsonic import api_objects as SubsonicAPI
@@ -374,6 +374,43 @@ def test_malformed_song_path(cache_adapter: FilesystemAdapter):
assert song_uri2.endswith("fine/path/song2.mp3")
def test_get_cached_status(cache_adapter: FilesystemAdapter):
print('ohea1')
cache_adapter.ingest_new_data(KEYS.SONG, ("1",), MOCK_SUBSONIC_SONGS[1])
assert (
cache_adapter.get_cached_status(cache_adapter.get_song_details("1"))
== SongCacheStatus.NOT_CACHED
)
print('ohea2')
cache_adapter.ingest_new_data(KEYS.SONG_FILE, ("1",), (None, MOCK_SONG_FILE))
assert (
cache_adapter.get_cached_status(cache_adapter.get_song_details("1"))
== SongCacheStatus.CACHED
)
print('ohea3')
cache_adapter.ingest_new_data(KEYS.SONG_FILE_PERMANENT, ("1",), None)
assert (
cache_adapter.get_cached_status(cache_adapter.get_song_details("1"))
== SongCacheStatus.PERMANENTLY_CACHED
)
print('ohea4')
cache_adapter.invalidate_data(KEYS.SONG_FILE, ("1",))
assert (
cache_adapter.get_cached_status(cache_adapter.get_song_details("1"))
== SongCacheStatus.CACHED_STALE
)
print('ohea5')
cache_adapter.delete_data(KEYS.SONG_FILE, ("1",))
assert (
cache_adapter.get_cached_status(cache_adapter.get_song_details("1"))
== SongCacheStatus.NOT_CACHED
)
def test_delete_playlists(cache_adapter: FilesystemAdapter):
cache_adapter.ingest_new_data(
KEYS.PLAYLIST_DETAILS,