public async Task UpdatesNowPlaying() { var trackPlayed = DateTime.UtcNow.AddMinutes(-1); var testScrobble = new Scrobble(ARTIST_NAME, ALBUM_NAME, TRACK_NAME, trackPlayed) { Duration = new TimeSpan(0, 0, 3, 49, 200), AlbumArtist = ARTIST_NAME }; var response = await Lastfm.Track.UpdateNowPlayingAsync(testScrobble); Assert.IsTrue(response.Success); var tracks = await Lastfm.User.GetRecentScrobbles(Lastfm.Auth.UserSession.Username, null, 1, 1); var expectedTrack = new LastTrack { Name = TRACK_NAME, ArtistName = ARTIST_NAME, AlbumName = ALBUM_NAME, Mbid = "1b9ee1d8-c5a7-44d9-813e-85beb0d59f1b", ArtistMbid = "b1570544-93ab-4b2b-8398-131735394202", Url = new Uri("http://www.last.fm/music/Crystal+Castles/_/Not+in+Love"), Images = new LastImageSet("http://userserve-ak.last.fm/serve/34s/61473043.png", "http://userserve-ak.last.fm/serve/64s/61473043.png", "http://userserve-ak.last.fm/serve/126/61473043.png", "http://userserve-ak.last.fm/serve/300x300/61473043.png"), IsNowPlaying = true }; var expectedJson = expectedTrack.TestSerialise(); var actualJson = tracks.Content.FirstOrDefault().TestSerialise(); Assert.AreEqual(expectedJson, actualJson, expectedJson.DifferencesTo(actualJson)); }
public async Task ScrobblesSingle() { var trackPlayed = DateTimeOffset.UtcNow.AddMinutes(-1).RoundToNearestSecond(); var testScrobble = new Scrobble("Hot Chip", "The Warning", "Over and Over", trackPlayed) { AlbumArtist = ARTIST_NAME, ChosenByUser = false }; var response = await Lastfm.Scrobbler.ScrobbleAsync(testScrobble); Assert.IsTrue(response.Success); var expectedTrack = new LastTrack { Name = TRACK_NAME, ArtistName = ARTIST_NAME, AlbumName = ALBUM_NAME, }; var expectedJson = expectedTrack.TestSerialise(); var tracks = await Lastfm.User.GetRecentScrobbles(Lastfm.Auth.UserSession.Username, null, null, false, 1, 1); var scrobbledTrack = tracks.Single(x => !x.IsNowPlaying.GetValueOrDefault(false)); // This test fails here when it took too much time to test the whole solution // TestHelper.AssertSerialiseEqual(trackPlayed, scrobbledTrack.TimePlayed); scrobbledTrack.TimePlayed = null; // Some properties change from time to time; parsing is covered in unit tests scrobbledTrack.Mbid = null; scrobbledTrack.ArtistMbid = null; scrobbledTrack.Images = null; scrobbledTrack.Url = null; scrobbledTrack.ArtistImages = null; scrobbledTrack.ArtistUrl = null; scrobbledTrack.IsLoved = null; var actualJson = scrobbledTrack.TestSerialise(); Assert.AreEqual(expectedJson, actualJson, expectedJson.DifferencesTo(actualJson)); }
public async Task UpdatesNowPlaying() { var trackPlayed = DateTime.UtcNow.AddMinutes(-1); var testScrobble = new Scrobble(ARTIST_NAME, ALBUM_NAME, TRACK_NAME, trackPlayed) { Duration = new TimeSpan(0, 0, 3, 49, 200), AlbumArtist = ARTIST_NAME }; var response = await Lastfm.Track.UpdateNowPlayingAsync(testScrobble); Assert.IsTrue(response.Success); await Task.Delay(1000); var tracks = await Lastfm.User.GetRecentScrobbles(Lastfm.Auth.UserSession.Username, null, null, false, 1, 1); var expectedTrack = new LastTrack { Name = TRACK_NAME, ArtistName = ARTIST_NAME, AlbumName = ALBUM_NAME, IsNowPlaying = true }; var actual = tracks.Content.Single(x => x.IsNowPlaying.GetValueOrDefault(false)); // Some properties change from time to time actual.Mbid = null; actual.ArtistMbid = null; actual.Images = null; actual.Url = null; actual.ArtistImages = null; actual.ArtistUrl = null; actual.IsLoved = null; var expectedJson = expectedTrack.TestSerialise(); var actualJson = actual.TestSerialise(); Assert.AreEqual(expectedJson, actualJson, expectedJson.DifferencesTo(actualJson)); }
public async Task ScrobblesSingle() { var trackPlayed = DateTimeOffset.UtcNow.AddMinutes(-1).RoundToNearestSecond(); var testScrobble = new Scrobble("Hot Chip", "The Warning", "Over and Over", trackPlayed) { AlbumArtist = ARTIST_NAME, ChosenByUser = false }; var response = await Lastfm.Scrobbler.ScrobbleAsync(testScrobble); Assert.IsTrue(response.Success); var expectedTrack = new LastTrack { Name = TRACK_NAME, ArtistName = ARTIST_NAME, AlbumName = ALBUM_NAME }; var expectedJson = expectedTrack.TestSerialise(); var tracks = await Lastfm.User.GetRecentScrobbles(Lastfm.Auth.UserSession.Username, null, 1, 1); Assert.IsTrue(tracks.Any()); var actual = tracks.Content.First(); TestHelper.AssertSerialiseEqual(trackPlayed, actual.TimePlayed); actual.TimePlayed = null; // Some properties change from time to time; parsing is covered in unit tests actual.Mbid = null; actual.ArtistMbid = null; actual.Images = null; actual.Url = null; var actualJson = actual.TestSerialise(); Assert.AreEqual(expectedJson, actualJson, expectedJson.DifferencesTo(actualJson)); }
public async Task ScrobblesSingle() { var trackPlayed = DateTime.UtcNow.AddMinutes(-1); var testScrobble = new Scrobble("Hot Chip", "The Warning", "Over and Over", trackPlayed) { AlbumArtist = ARTIST_NAME, ChosenByUser = false }; var trackApi = new TrackApi(Auth); var response = await trackApi.ScrobbleAsync(testScrobble); Assert.IsTrue(response.Success); var userApi = new UserApi(Auth); var tracks = await userApi.GetRecentScrobbles(Auth.UserSession.Username, null, 0, 1); var expectedTrack = new LastTrack { Name = TRACK_NAME, ArtistName = ARTIST_NAME, AlbumName = ALBUM_NAME, Mbid = "c1af4137-92c5-43e4-ba4a-b43c7004a624", ArtistMbid = "d8915e13-d67a-4aa0-9c0b-1f126af951af", Url = new Uri("http://www.last.fm/music/Hot+Chip/_/Over+and+Over"), Images = new LastImageSet("http://userserve-ak.last.fm/serve/34s/50921593.png", "http://userserve-ak.last.fm/serve/64s/50921593.png", "http://userserve-ak.last.fm/serve/126/50921593.png", "http://userserve-ak.last.fm/serve/300x300/50921593.png"), TimePlayed = trackPlayed.RoundToNearestSecond() }; var expectedJson = expectedTrack.TestSerialise(); var actualJson = tracks.Content.FirstOrDefault().TestSerialise(); Assert.AreEqual(expectedJson, actualJson, expectedJson.DifferencesTo(actualJson)); }