public void GetDefaultLyrics_UserLanguage() { var result = LyricsHelper.GetDefaultLyrics(lyrics, new OptionalCultureCode("es"), new[] { new OptionalCultureCode("mi-ku"), new OptionalCultureCode(OptionalCultureCode.LanguageCode_English) }, null); result?.CultureCode.Should().Be(OptionalCultureCode.LanguageCode_English, "CultureCode"); }
public void GetDefaultLyrics_Original() { var result = LyricsHelper.GetDefaultLyrics(lyrics, new OptionalCultureCode("es"), new[] { new OptionalCultureCode("mi-ku") }, new Lazy <IEnumerable <UserKnownLanguage> >(() => null)); result?.CultureCode.Should().Be(OptionalCultureCode.LanguageCode_Japanese, "CultureCode"); }
public SongDetailsContract GetSongDetails(int songId, int albumId, string hostname, ContentLanguagePreference?languagePreference, IEnumerable <OptionalCultureCode> userLanguages) { return(HandleQuery(session => { var lang = languagePreference ?? PermissionContext.LanguagePreference; var song = session.Load <Song>(songId); var contract = new SongDetailsContract(song, lang, GetSongPools(session, songId), config.SpecialTags); var user = PermissionContext.LoggedUser; if (user != null) { var rating = session.Query <FavoriteSongForUser>() .FirstOrDefault(s => s.Song.Id == songId && s.User.Id == user.Id); contract.UserRating = (rating != null ? rating.Rating : SongVoteRating.Nothing); } contract.CommentCount = Comments(session).GetCount(songId); contract.LatestComments = session.Query <SongComment>() .Where(c => c.EntryForComment.Id == songId) .OrderByDescending(c => c.Created).Take(3).ToArray() .Select(c => new CommentForApiContract(c, userIconFactory)).ToArray(); contract.Hits = session.Query <SongHit>().Count(h => h.Song.Id == songId); contract.ListCount = session.Query <SongInList>().Count(l => l.Song.Id == songId); contract.Suggestions = GetSongSuggestions(session, song).Select(s => new SongForApiContract(s, lang, SongOptionalFields.AdditionalNames | SongOptionalFields.ThumbUrl)).ToArray(); contract.PreferredLyrics = LyricsHelper.GetDefaultLyrics(contract.LyricsFromParents, new OptionalCultureCode(CultureInfo.CurrentUICulture, true), userLanguages, new Lazy <IEnumerable <UserKnownLanguage> >(() => session.OfType <User>().GetLoggedUserOrNull(permissionContext)?.KnownLanguages, false)); if (albumId != 0) { var album = session.Load <Album>(albumId); var track = album.Songs.FirstOrDefault(s => song.Equals(s.Song)); if (track != null) { contract.Album = new DataContracts.Albums.AlbumContract(album, lang); contract.AlbumSong = new SongInAlbumContract(track, lang, false); var previousIndex = album.PreviousTrackIndex(track.Index); var previous = album.Songs.FirstOrDefault(s => s.Index == previousIndex); contract.PreviousSong = previous != null && previous.Song != null ? new SongInAlbumContract(previous, lang, false) : null; var nextIndex = album.NextTrackIndex(track.Index); var next = album.Songs.FirstOrDefault(s => s.Index == nextIndex); contract.NextSong = next != null && next.Song != null ? new SongInAlbumContract(next, lang, false) : null; } } if (song.Deleted) { var mergeEntry = GetMergeRecord(session, songId); contract.MergedTo = (mergeEntry != null ? new SongContract(mergeEntry.Target, lang) : null); } AddSongHit(session, song, hostname); return contract; })); }
public void GetDefaultLyrics_UiLanguage() { var result = LyricsHelper.GetDefaultLyrics(lyrics, new OptionalCultureCode(OptionalCultureCode.LanguageCode_English), null, null); Assert.AreEqual(OptionalCultureCode.LanguageCode_English, result?.CultureCode, "CultureCode"); }