using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using Nancy; using Nancy.Testing; using Sony.Filtr.AdminAPI.Modules.AnalyzePlaylist.ViewModels; namespace Sony.Filtr.AdminAPI.Testing { [TestClass] public class SonyTracksModuleTest : FiltrUnitTestBase { private static Browser _DefaultLoggedInBrowser; [ClassInitialize] public static void InitTestSuite(TestContext testContext) { _DefaultLoggedInBrowser = BuildDefaultBrowser(); } [TestMethod] public void Can_Analyze_Playlist() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:sonymusicentertainment:playlist:7AnvOrPIQLV8VIASFhN07Z"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(responseModel.Tracks.Any()); } [TestMethod] public void Can_Analyze_Playlist_With_Region() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:sonymusicentertainment:playlist:7AnvOrPIQLV8VIASFhN07Z"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); with.Query("region", "se"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(responseModel.Tracks.Any()); } [TestMethod] public void Can_Analyze_Playlist_With_Special_Latin_Region() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:sonymusicentertainment:playlist:7AnvOrPIQLV8VIASFhN07Z"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); with.Query("region", "latin"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(responseModel.Tracks.Any()); } [TestMethod] public void Can_Analyze_Playlist_Without_Tracks() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:viruzi:playlist:640IXWs1loaPlPhhYwuxop"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(!responseModel.Tracks.Any()); } [TestMethod] public void Can_Analyze_Playlist_With_Tracks_Without_Album_UPC() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:viruzi:playlist:2w6OREjjmHqNMpC5eLUn45"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); with.Query("region", "se"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(responseModel.Tracks.Any()); Assert.IsTrue(responseModel.Tracks.Any(a=> string.IsNullOrWhiteSpace(a.AlbumUpc))); } [TestMethod] public void Can_Analyze_Playlist_With_Tracks_In_Playlist_Without_ISRC() { var url = "/sonyTracks/analyze"; var playlistUri = "spotify:user:spotifytaiwan:playlist:2YZCRKyNbYrzYzKJ0qKyVN"; var result = _DefaultLoggedInBrowser.Get(url, with => { with.Query("playlistUri", playlistUri); with.Query("region", "se"); }); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var responseModel = result.Body.DeserializeJson(); Assert.IsNotNull(responseModel); Assert.IsNotNull(responseModel.Tracks); Assert.IsTrue(responseModel.Tracks.Any()); Assert.IsTrue(responseModel.Tracks.Any(a => string.IsNullOrWhiteSpace(a.AlbumUpc))); } } }