aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Server.Implementations.Tests/Library
AgeCommit message (Collapse)Author
8 daysFix extras naming and version assignmentShadowghost
9 daysMerge pull request #17399 from Shadowghost/fix-extra-yearCody Robibero
Fix incorrect year on local trailers
10 daysRemove added comments (#17395 review)Paolo Antinori
13 daysfix: avoid NRE when sorting by user-dependent keys without a userPaolo Antinori
A query sorted by a user-dependent key (PlayCount, IsFavoriteOrLiked, DatePlayed, IsPlayed, IsUnplayed) but carrying no User caused a NullReferenceException inside UserDataManager.GetUserData, surfacing as "Failed to compare two elements in the array" (InvalidOperationException wrapping the NRE from the LINQ sort) and 500-ing the /Items request. Root cause: LibraryManager.GetComparer assigned comparer.User = user without a null guard, so PlayCountComparer.GetValue called UserDataManager.GetUserData(null, item), dereferencing user.Id. Two-part fix: - LibraryManager.GetComparer: when user is null and the sort key requires a user (IUserBaseItemComparer), substitute the SortName comparer so the result stays deterministic instead of 500-ing. SortName is the project's canonical tiebreaker (ItemsController injects it for album-by-artist). - UserDataManager.GetUserData: ArgumentNullException.ThrowIfNull(user) as defense in depth (matches the existing guards on the SaveUserData overloads in the same file). On master this overload was rewritten to use ResolveUserDataRow, so the NRE dereferences user.Id rather than user.InternalId as on the release branch — same bug, different line. Also fixes DateLastMediaAddedComparer being statically mis-tagged as IUserBaseItemComparer: its GetDate is static and never reads User, so it does not need one. Without this, the SortName fallback above would wrongly engage for DateLastContentAdded on anonymous queries (returning SortName order instead of date order). Re-tagged to IBaseItemComparer and dropped the unused User/UserManager/UserDataManager properties. Tests: - UserDataManagerTests.GetUserData_NullUser_ThrowsArgumentNullException: reproduces the crash (NRE -> now ArgumentNullException). Added to master's existing UserDataManagerTests. - LibraryManagerSortTests.Sort_UserDependentKey_NullUser_FallsBackToSortNameWithoutThrowing: Sort with a user-dependent key + null user no longer throws and returns items ordered by the SortName fallback (direction preserved). - LibraryManagerSortTests.Sort_DateLastContentAdded_NullUser_OrdersByDateNotSortName: guards that DateLastContentAdded still sorts by date with no user (fixture chosen so date-desc and SortName-desc disagree, so a revert is caught). Full Jellyfin.Server.Implementations.Tests suite: 642 passed, 0 failed. Fixes #17393
13 daysFix incorrect year on local trailersShadowghost
2026-07-20Merge pull request #17320 from TaterTechStudios/fix/item-correct-selectorCody Robibero
Fix: Fetch the correct row matching the most up to date file
2026-07-20Merge pull request #17254 from sjakub/attribute_aliasesCody Robibero
Add additional attribute aliases and improve attribute detection
2026-07-15Move GetUserDataBatch to use ResolveUserDataRow when item.UserData isn't ↵Jordan Rushing
preloaded
2026-07-14remove PlaybackPositionTicks from MediaSourceInfoShadowghost
2026-07-13Fix: Fetch the correct row matching the most up to date fileJordan Rushing
2026-07-07Added more aliases for attributesJakub Schmidtke
Adds tvdb alias for tvdbid and imdb alias for imdbid. It also fixes an issue where tmdb alias was being ignored if it was followed by something like "tmdbidfoo". The same issue prevented imdb pattern matching from working, if it was followed by something like "imdbidfoo". It also allows for detecting the first matching occurence, whether it was an alias or not. Finally, it ignores attributes with values consisting of only whitespaces.
2026-06-09Coalesce alternate-version progress onto primary in resume filterShadowghost
2026-05-11Implement multiple versions for episodes.Shadowghost
2026-05-07Add OriginalLanguage as option to PreferredAudioLanguage (#12579)Erik W
* Add OriginalLanguage as option to PreferredAudioLanguage * Support for multiple original languages * Add original audio stream indicator * Fetch OriginalLanguage from TMDB * Adapt to EFCore refactor * Fix PlayDefaultAudioTrack OriginalLanguage behavior * Fix better PlayDefaultAudioTrack OriginalLanguage behavior * Add comment to ItemFields * Improved PlayDefaultAudioTrack behavior * Add migration for original language * Use sting.Equals for string comparisons * Always set dto OriginalLanguage * Remove OriginalLanguage from ItemFields --------- Co-authored-by: Lampan-git <lampan-git@users.noreply.github.com>
2026-05-06Merge branch 'master' into feature/season-provider-id-from-pathBond-009
2026-05-03Implement ignore rule cachingShadowghost
2026-03-25Parse provider IDs from season and episode folder/file namesMarc Brooks
Season and episode directories/files can now include provider ID attributes in their names (e.g. "Season 01 [tvdbid=22222]" or "Show S01E01 [tmdbid=99999].mkv"), consistent with the existing behavior for series folders. Supported providers: imdbid, tvdbid, tvmazeid, tmdbid. Adds TmdbSeasonExternalId and TmdbEpisodeExternalId so that the TMDB season and episode IDs are surfaced in the metadata editor. Seasons do not have their own IMDb IDs, so we don't support imdbid parsing in SeasonResolver. Instead, generate IMDb season URLs via ImdbExternalUrlProvider using the parent series' IMDb ID and the season number, matching the IMDb URL format: imdb.com/title/{seriesId}/episodes/?season={N} Add tests for the ExternalUrlProviders.
2026-02-02Merge pull request #14927 from nileshp87/patch-1Bond-009
Add curly brace and parentheses support for parsing attribute values
2026-02-02Fix testsBond-009
2026-01-28Backport pull request #16077 from jellyfin/release-10.11.ztheguymadmax
Revert hidden directory ignore pattern Original-merge: 644327eb762a907328c68ab9f5d61a151cd96897 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2026-01-18Backport pull request #16029 from jellyfin/release-10.11.ztheguymadmax
Skip hidden directories and .ignore paths in library monitoring Original-merge: 2cb7fb52d2221d9daa39206089b578c2c0fcb549 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28Backport pull request #15746 from jellyfin/release-10.11.zShadowghost
Skip invalid ignore rules Original-merge: 6e60634c9f078cc01e343b07a0a6b2a5c230478c Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-10Add curly brace and parentheses support for parsing attribute values from pathsNilesh Patel
2025-07-26Enhance extra rules for video and audio file naming; update tests for new ↵Sven Cazier
naming conventions
2025-04-26Add .gitignore style ignoring (#13906)Tim Eisele
2024-04-13Chore: Adds unit tests to support (#11351)Jordan Fearnley
2023-12-18Fix testsBond_009
2023-12-08Convert CollectionType to use lowercase enum namesCody Robibero
2023-11-09Convert CollectionType, SpecialFolderType to enum (#9764)Cody Robibero
* Convert CollectionType, SpecialFolderType to enum * Hide internal enum CollectionType values * Apply suggestions from code review Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> * Fix recent change * Update Jellyfin.Data/Attributes/OpenApiIgnoreEnumAttribute.cs Co-authored-by: Patrick Barron <barronpm@gmail.com> --------- Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> Co-authored-by: Patrick Barron <barronpm@gmail.com>
2023-10-08Reduce string literal length by using verbatim stringStepan Goremykin
2023-09-27Ignore .zfs folderBond_009
Maybe helps with #10215 ?
2023-03-30Add DLL whitelist support for pluginsAmbulantRex
2023-03-18Add test for cleaning extra namesSenorSmartyPants
2023-03-06Fix cases where multiple files are resolved as a single bookJoe Rogers
2023-03-06Add tests for audio book resolvingJoe Rogers
2023-03-06Inject IDirectoryService where needed instead of passing it through ↵Joe Rogers
ItemResolveArgs
2023-03-06Remove some BaseItem references to make ItemResolveArgs more usable for testing.Joe Rogers
2023-01-07Deduplicate media stream ordering code (#9014)Bond-009
2022-12-14Fix debug builds (#8909)Bond-009
2022-05-17Fix default audio selection ignoring typeJoe Rogers
2022-04-30Add tests for preferred audio language selectionJoe Rogers
2022-02-20Fix #7100 by catching the exception on opening invalid UDF imagesStanislav Ionascu
When an invalid UDF image is opened by the UdfReader, it may throw and exception. This change is to catch and log the exception.
2022-02-14Fix MediaStreamSelectorBond_009
2022-01-16Add alternate resolver test, generate extra folder namesJoe Rogers
2022-01-15Add -extra suffix for consistencyJoe Rogers
2022-01-15Order rules so directory takes precedence over namingJoe Rogers
2022-01-02Merge pull request #7058 from cvium/the_most_important_featureBond-009
2022-01-01Remove file extension filter and fix buildcvium
2021-12-31Add ability to search by -Cody Robibero
2021-12-28Use dedicated resolvers for extrascvium