public void Check_that_we_dont_get_a_track_back_when_track_is_restricted() { // Arrange var trackPagedList = new TrackPagedList { Tracks = new List <Track> { track }, Total = 1 }; var rule = new Mock <ISearchTrackRule>(); rule.Setup(r => r.IsTrackRestricted(track)).Returns(true); var listOfTrackRules = new List <ISearchTrackRule> { rule.Object }; var listOfAlbumRules = new Mock <IEnumerable <ISearchAlbumRule> >(); var listOfArtistRules = new Mock <IEnumerable <ISearchArtistRule> >(); var classUnderTest = new SearchRuleHelper(listOfTrackRules, listOfAlbumRules.Object, listOfArtistRules.Object); // Act var result = classUnderTest.FilterTracks(trackPagedList); // Assert Assert.That(result.Tracks.FirstOrDefault() == null); Assert.That(result.Total == 0); }
public TrackPagedList FilterTracks(TrackPagedList pagedTracks) { IList <Track> filteredTracks = pagedTracks.Tracks.Where(track => !searchTrackRules.Any(s => s.IsTrackRestricted(track))).ToList(); pagedTracks.Tracks = filteredTracks; pagedTracks.Total = pagedTracks.Tracks.Count(); return(pagedTracks); }
public SearchResults SearchAll(string searchTerm, string user) { Login(); using (var search = session.Search(searchTerm, 0, 30, 0, 15, 0, 15, 0, 0, sp_search_type.STANDARD)) { search.WaitForCompletion(); if (!search.IsComplete) { logger.Error("Search for {0} timed out", searchTerm); return(null); } var results = new SearchResults(); //set up artists var pagedArtists = new ArtistPagedList { Total = search.TotalArtists, Artists = search.Artists.Select(a => new ArtistMapper().Map(a, this)).ToArray() }; //set up albums var pagedAlbums = new AlbumPagedList { Total = search.TotalAlbums, Albums = search.Albums.Where(a => a.IsAvailable) .Select(a => albumMapper.Map(a, this, true)) .ToArray() }; ////set up tracks var pagedTracks = new TrackPagedList { Total = search.TotalTracks, Tracks = search.Tracks .Select(t => trackMapper.Map(t, this, user, true, true)) .Where(t => t.IsAvailable) .ToArray() }; results.PagedArtists = pagedArtists; results.PagedAlbums = pagedAlbums; results.PagedTracks = pagedTracks; return(results); } }
public SearchResults SearchAll(string searchTerm, string user) { var restRequest = new RestRequest { Resource = "tracks", Method = Method.GET, OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }, RequestFormat = DataFormat.Json, }; restRequest.AddParameter("q", searchTerm); var tracks = ExecuteRequest <List <SoundTrack.Track> >(restRequest); var results = new SearchResults(); //set up tracks var pagedTracks = new TrackPagedList { Total = tracks.Count, Tracks = tracks .Where(scTrack => scTrack.streamable) .Select(t => trackMapper.Map(t, this, user, true)) .ToArray() }; results.PagedTracks = pagedTracks; results.PagedAlbums = new AlbumPagedList { Total = 0, Albums = new List <Album>().ToArray() }; results.PagedArtists = new ArtistPagedList { Total = 0, Artists = new List <Artist>().ToArray() }; logger.Debug("Search completed for term {0}", searchTerm); return(results); }