public async Task ShouldRemoveSpecificOccurrencesOfItemsFromPlaylist() { // Arrange const string playlistId = "40C5k2GWBlficlUyQKmR0S"; const string snapshotId = "initialsnapshot"; var urisWithPositions = new[] { new UriWithPositions { Uri = SpotifyUri.OfTrack("3n3Ppam7vgaVa1iaRUc9Lp"), Positions = new[] { 1, 2 } }, new UriWithPositions { Uri = SpotifyUri.OfEpisode("512ojhOuo1ktJprKbVcKyQ"), Positions = null }, new UriWithPositions { Uri = SpotifyUri.OfTrack("3twNvmDtFQtAd5gMKedhLD"), Positions = new[] { 5 } }, }; this.MockHttp .ExpectSpotifyRequest(HttpMethod.Delete, $"playlists/{playlistId}/tracks") .WithExactQueryString(string.Empty) .WithJsonContent(j => { if (!(j.EnumerateObject().Count() == 2 && j.TryGetProperty("snapshot_id", out var snapshotProperty) && snapshotProperty.GetString() == snapshotId && j.TryGetProperty("tracks", out var array))) { return(false); } return (array.EnumerateArray().Count() == 3 && array[0].EnumerateObject().Count() == 2 && array[0].GetProperty("uri").GetString() == urisWithPositions[0].Uri && array[0].GetProperty("positions").EnumerateArray().Select(x => x.GetInt32()).SequenceEqual(urisWithPositions[0].Positions) && array[1].EnumerateObject().Count() == 1 && array[1].GetProperty("uri").GetString() == urisWithPositions[1].Uri && array[2].EnumerateObject().Count() == 2 && array[2].GetProperty("uri").GetString() == urisWithPositions[2].Uri && array[2].GetProperty("positions").EnumerateArray().Select(x => x.GetInt32()).SequenceEqual(urisWithPositions[2].Positions)); }) .Respond(HttpStatusCode.OK, "application/json", "{}"); // Act var result = await this.Client.Playlists(playlistId).Items.RemoveAsync(urisWithPositions, snapshotId); // Assert this.MockHttp.VerifyNoOutstandingExpectation(); result.Should().NotBeNull(); }
public async Task ShouldReplacePlaylistItems() { // Arrange const string playlistId = "40C5k2GWBlficlUyQKmR0S"; var uris = new[] { SpotifyUri.OfTrack("3n3Ppam7vgaVa1iaRUc9Lp"), SpotifyUri.OfEpisode("512ojhOuo1ktJprKbVcKyQ") }; this.MockHttp .ExpectSpotifyRequest(HttpMethod.Put, $"playlists/{playlistId}/tracks") .WithExactQueryString(string.Empty) .WithJsonContent(j => j.EnumerateObject().Count() == 1 && j.TryGetProperty("uris", out var array) && array.EnumerateArray().ToArray().Select(x => x.GetString()).SequenceEqual(uris)) .Respond(HttpStatusCode.OK, "application/json", "{}"); // Act var result = await this.Client.Playlists(playlistId).Items.ReplaceAsync(uris); // Assert this.MockHttp.VerifyNoOutstandingExpectation(); result.Should().NotBeNull(); }