using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using Nancy; using Nancy.Testing; using Sony.Filtr.AdminAPI.Modules.SpotifySpecific; using Sony.Filtr.AdminAPI.ViewModels; using Sony.Filtr.Contracts.Entities; namespace Sony.Filtr.AdminAPI.Testing { [TestClass] public class SpotifyPlaylistModuleTest : FiltrUnitTestBase { private static Browser _DefaultLoggedInBrowser; [ClassInitialize] public static void InitTestSuite(TestContext testContext) { _DefaultLoggedInBrowser = BuildDefaultBrowser(); } [TestMethod] public void Can_Get_Playlists_With_Track_By_TrackId_Not_In_Any_Playlists() { var url = "/spotifyPlaylistsWithTrack/"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("trackId", "0NGruoxqLViPU0PQ2rECdV"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Count == 0); } [TestMethod] public void Can_Get_Playlists_With_Track_By_TrackId() { var url = "/spotifyPlaylistsWithTrack/"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("trackId", "7rk4qijbPZ43Bx5zonp7Cz"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } [TestMethod] public void Can_Get_Playlists_With_Track_By_TrackId_Not_In_Database() { var url = "/spotifyPlaylistsWithTrack/"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("trackId", "0YBExWgXPXU2pMv6ZLGMvI"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } [TestMethod] public void Can_Get_Playlists_With_Track_By_ISRC() { var url = "/spotifyPlaylistsWithTrack/"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("isrc", "GBCEN1602599"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } [TestMethod] public void Can_Get_MarketPlaylists_In_Specific_Market() { var applicationId = 6; //sweden var url = $"/{applicationId}/marketPlaylists"; var result = _DefaultLoggedInBrowser.Get(url); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } [TestMethod] public void Can_Get_MarketOverview() { var url = $"/marketPlaylists/Overview"; var result = _DefaultLoggedInBrowser.Get(url); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); //TODO: This test needs to have recent streaming data available to produce results. var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } [TestMethod] public void Can_Get_Spotify_Playlists_For_User() { var url = $"/spotifyPlaylistsByUser/"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("userUri", "spotify:user:VirUZI"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson>(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Items); Assert.IsTrue(responseModel.Items.Any()); } } }