Files
allstarr/allstarr.Tests/CacheKeyBuilderTests.cs
T

104 lines
4.3 KiB
C#

using allstarr.Services.Common;
using Xunit;
namespace allstarr.Tests;
public class CacheKeyBuilderTests
{
[Fact]
public void SearchKey_ShouldIncludeRouteContextDimensions()
{
var key = CacheKeyBuilder.BuildSearchKey(
" DATA ",
"MusicAlbum",
500,
0,
"efa26829c37196b030fa31d127e0715b",
"DateCreated,SortName",
"Descending",
true,
"1635cd7d23144ba08251ebe22a56119e");
Assert.Equal(
"search:data:musicalbum:500:0:efa26829c37196b030fa31d127e0715b:datecreated,sortname:descending:true:1635cd7d23144ba08251ebe22a56119e:",
key);
}
[Fact]
public void SearchKey_ShouldDifferentiateFavoriteOnlyQueries()
{
var normalKey = CacheKeyBuilder.BuildSearchKey(
"Sunflower",
"Audio",
100,
0,
"parent",
"SortName",
"Ascending",
true,
"user-1",
"false");
var favoritesOnlyKey = CacheKeyBuilder.BuildSearchKey(
"Sunflower",
"Audio",
100,
0,
"parent",
"SortName",
"Ascending",
true,
"user-1",
"true");
Assert.NotEqual(normalKey, favoritesOnlyKey);
Assert.EndsWith(":false", normalKey);
Assert.EndsWith(":true", favoritesOnlyKey);
}
[Fact]
public void SearchKey_OldOverload_ShouldRemainCompatible()
{
Assert.Equal("search:data:Audio:500:0", CacheKeyBuilder.BuildSearchKey("DATA", "Audio", 500, 0));
}
[Fact]
public void SpotifyKeys_ShouldMatchExpectedFormats()
{
Assert.Equal("spotify:playlist:Road Trip", CacheKeyBuilder.BuildSpotifyPlaylistKey("Road Trip"));
Assert.Equal("spotify:playlist:items:Road Trip", CacheKeyBuilder.BuildSpotifyPlaylistItemsKey("Road Trip"));
Assert.Equal("spotify:playlist:ordered:Road Trip", CacheKeyBuilder.BuildSpotifyPlaylistOrderedKey("Road Trip"));
Assert.Equal("spotify:matched:ordered:Road Trip", CacheKeyBuilder.BuildSpotifyMatchedTracksKey("Road Trip"));
Assert.Equal("spotify:matched:Road Trip", CacheKeyBuilder.BuildSpotifyLegacyMatchedTracksKey("Road Trip"));
Assert.Equal("spotify:playlist:stats:Road Trip", CacheKeyBuilder.BuildSpotifyPlaylistStatsKey("Road Trip"));
Assert.Equal("spotify:manual-map:Road Trip:abc123", CacheKeyBuilder.BuildSpotifyManualMappingKey("Road Trip", "abc123"));
Assert.Equal("spotify:external-map:Road Trip:abc123", CacheKeyBuilder.BuildSpotifyExternalMappingKey("Road Trip", "abc123"));
Assert.Equal("spotify:global-map:abc123", CacheKeyBuilder.BuildSpotifyGlobalMappingKey("abc123"));
Assert.Equal("spotify:global-map:all-ids", CacheKeyBuilder.BuildSpotifyGlobalMappingsIndexKey());
}
[Fact]
public void LyricsAndGenreKeys_ShouldMatchExpectedFormats()
{
Assert.Equal("lyrics:Artist:Title:Album:240", CacheKeyBuilder.BuildLyricsKey("Artist", "Title", "Album", 240));
Assert.Equal("lyricsplus:Artist:Title:Album:240", CacheKeyBuilder.BuildLyricsPlusKey("Artist", "Title", "Album", 240));
Assert.Equal("lyrics:manual-map:Artist:Title", CacheKeyBuilder.BuildLyricsManualMappingKey("Artist", "Title"));
Assert.Equal("lyrics:id:42", CacheKeyBuilder.BuildLyricsByIdKey(42));
Assert.Equal("genre:Track:Artist", CacheKeyBuilder.BuildGenreEnrichmentKey("Track", "Artist"));
Assert.Equal("genre:Track:Artist", CacheKeyBuilder.BuildGenreEnrichmentKey("Track:Artist"));
Assert.Equal("genre:rock", CacheKeyBuilder.BuildGenreKey("Rock"));
}
[Fact]
public void MusicBrainzAndOdesliKeys_ShouldMatchExpectedFormats()
{
Assert.Equal("musicbrainz:isrc:USABC123", CacheKeyBuilder.BuildMusicBrainzIsrcKey("USABC123"));
Assert.Equal("musicbrainz:search:title:artist:5", CacheKeyBuilder.BuildMusicBrainzSearchKey("Title", "Artist", 5));
Assert.Equal("musicbrainz:mbid:abc-def", CacheKeyBuilder.BuildMusicBrainzMbidKey("abc-def"));
Assert.Equal("odesli:tidal-to-spotify:123", CacheKeyBuilder.BuildOdesliTidalToSpotifyKey("123"));
Assert.Equal("odesli:url-to-spotify:https://example.com/track", CacheKeyBuilder.BuildOdesliUrlToSpotifyKey("https://example.com/track"));
}
}