public async Task GetTracks_TrackIdsMarket_AvailableMarketsIsNull() { // arrange string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" }; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTracks(trackIds, SpotifyCountryCodes.New_Zealand); // assert Assert.IsNull(response[0].AvailableMarkets); }
public async Task GetTracks_TrackIdsNoMarket_MarketsArrayPopulated() { // arrange string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" }; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTracks(trackIds); // assert Assert.IsTrue(response[0].AvailableMarkets.Length > 0); }
public async Task GetTrack_TrackIdNoMarket_MarketsArrayExists() { // arrange const string trackId = "5lA3pwMkBdd24StM90QrNR"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrack(trackId); // assert Assert.IsTrue(response.AvailableMarkets.Length > 0); }
public async Task GetTracksAudioFeatures_TrackIds_ThreeFeatures() { // arrange string[] trackIds = new[] { "5lA3pwMkBdd24StM90QrNR", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" }; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTracksAudioFeatures(trackIds); // assert Assert.IsTrue(response != null && response.Length == 3); }
public async Task GetTrackAudioFeatures_TrackId_TempoNotZero() { // arrange const string trackId = "5lA3pwMkBdd24StM90QrNR"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrackAudioFeatures(trackId); // assert Assert.IsTrue(response.Tempo != 0); }
public async Task GetTrack_TrackId_CorrectTrackName() { // arrange const string trackId = "5lA3pwMkBdd24StM90QrNR"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrack(trackId); // assert Assert.AreEqual("P.Y.T. (Pretty Young Thing)", response.Name); }
public async Task GetTrackByIsrcCode_NonExistentIsrc_ResultIsNull() { // arrange const string isrc = "NOPE12345678"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var track = await api.GetTrackByIsrcCode(isrc); // assert Assert.IsNull(track); }
public async Task GetTrackByIsrcCode_Isrc_CorrectResult() { // arrange const string isrc = "GBBKS1700108"; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var track = await api.GetTrackByIsrcCode(isrc); // assert Assert.AreEqual(isrc, track.ExternalIds.Isrc); }
public async Task GetTrack_TrackIdMarket_AvailableMarketsIsNull() { // arrange const string trackId = "11dFghVXANMlKmJXsNCbd8"; const string market = SpotifyCountryCodes.Spain; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrack(trackId, market); // assert Assert.IsNull(response?.AvailableMarkets?.Length == 0 ? null : "Array not empty."); }
public async Task SearchTracks_NonExistentIsrc_ItemsZero() { // arrange const string isrc = "NOPE12345678"; const string query = "isrc:" + isrc; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.SearchTracks(query); // assert Assert.AreEqual(0, response.Items.Length); }
public async Task SearchTracks_Isrc_CorrectResult() { // arrange const string isrc = "USUM71703861"; const string query = "isrc:" + isrc; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.SearchTracks(query); // assert Assert.AreEqual(isrc, response.Items[0].ExternalIds.Isrc); }
public async Task GetTrack_TrackIdMarket_AvailableMarketsIsNull() { // arrange const string trackId = "5lA3pwMkBdd24StM90QrNR"; const string market = SpotifyCountryCodes.New_Zealand; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrack(trackId, market); // assert Assert.IsNull(response.AvailableMarkets); }
public async Task GetTracks_TrackIds_CorrectTrackNames() { // arrange string[] trackIds = new[] { "11dFghVXANMlKmJXsNCbNl", "20I6sIOMTCkB6w7ryavxtO", "7xGfFoTpQ2E7fRF5lN10tr" }; var http = new HttpClient(); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTracks(trackIds); // assert Assert.AreEqual("Cut To The Feeling", response[0].Name); Assert.AreEqual("Call Me Maybe", response[1].Name); Assert.AreEqual("Run Away With Me", response[2].Name); }
//[TestMethod] // not a reliable test - intermittent gateway timeout on Spotify end public async Task GetTrackAudioAnalysis_TrackId_BarsIsNotNullOrZero() { // arrange const string trackId = "5lA3pwMkBdd24StM90QrNR"; var http = new HttpClient(); http.Timeout = TimeSpan.FromSeconds(30); var accounts = new AccountsService(http, TestsHelper.GetLocalConfig()); var api = new TracksApi(http, accounts); // act var response = await api.GetTrackAudioAnalysis(trackId); // assert Assert.IsTrue(response.Bars != null && response.Bars.Length > 0); }
public async Task <PlaylistModel> GetPlaylist(string id) { try { var http = new HttpClient(); var accounts = new AccountsService(http, _configuration); var playlistsApi = new PlaylistsApi(http, accounts); var tracksApi = new TracksApi(http, accounts); int limit = 100; var playlistTracks = await playlistsApi.GetTracks(id, limit : limit); int offset = 0; int j = 0; // Go through all pages since Spotify only returns 100 tracks at once for a playlist var trackModels = new List <TrackModel>(); while (playlistTracks.Items.Any()) { var tracksWithAudioFeatures = await tracksApi.GetTracksAudioFeatures(playlistTracks.Items.Select(x => x.Track.Id).ToArray()); trackModels.AddRange(tracksWithAudioFeatures.Select(x => new TrackModel { ExternalId = x.Id, Danceability = x.Danceability, Energy = x.Energy, Valence = x.Valence, Popularity = playlistTracks.Items.FirstOrDefault(y => y.Track.Id == x.Id)?.Track.Popularity ?? 0, Artists = playlistTracks.Items.FirstOrDefault(y => y.Track.Id == x.Id)?.Track.Artists.FirstOrDefault()?.Name ?? string.Empty, Name = playlistTracks.Items.FirstOrDefault(y => y.Track.Id == x.Id)?.Track.Name ?? string.Empty, PreviewUrl = playlistTracks.Items.FirstOrDefault(y => y.Track.Id == x.Id)?.Track.PreviewUrl ?? string.Empty, })); offset += limit; playlistTracks = await playlistsApi.GetTracks(id, limit : limit, offset : offset); } var newPlaylist = new PlaylistModel(id, trackModels); return(newPlaylist); } catch (Exception e) { Trace.TraceError(e.ToString()); throw new Exception("Error getting playlist from Spotify"); } }