/// <summary> /// Tags a certain playlist as "liked" by a certain user and adds it to his/her Favorites collection /// </summary> /// <param name="playlistId">ID of the playlist</param> /// <param name="userId">ID of the user</param> /// <returns>True of successful, otherwise false</returns> public async Task <bool> AddPlaylistToFavoritesAsync(int playlistId, int userId) { var result = await this.context.Favorites .FirstOrDefaultAsync(fav => fav.PlaylistId == playlistId && fav.UserId == userId); if (result != null) { if (result.IsFavorite == true) { return(false); } else { result.IsFavorite = true; await context.SaveChangesAsync(); return(true); } } PlaylistFavorite item = new PlaylistFavorite { PlaylistId = playlistId, IsFavorite = true, UserId = userId }; await context.Favorites.AddAsync(item); await context.SaveChangesAsync(); return(true); }
public async Task ReturnTrue_WhenPlaylistFavoriteWasCreatedButDisliked() { var options = Utils.GetOptions(nameof(ReturnTrue_WhenPlaylistFavoriteWasCreatedButDisliked)); Playlist firstPlaylist = new Playlist { Id = 32, Title = "Home", PlaylistPlaytime = 5524, UserId = 2, Rank = 552348, IsDeleted = false }; Playlist secondPlaylist = new Playlist { Id = 33, Title = "Metal", PlaylistPlaytime = 5024, UserId = 2, Rank = 490258, IsDeleted = false }; User user = new User() { Id = 4 }; PlaylistFavorite favorite = new PlaylistFavorite() { Id = 2, UserId = 4, PlaylistId = 32, IsFavorite = false }; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); var mockImageService = new Mock <IPixaBayImageService>(); using (var arrangeContext = new RidePalDbContext(options)) { arrangeContext.Playlists.Add(firstPlaylist); arrangeContext.Playlists.Add(secondPlaylist); arrangeContext.Users.Add(user); arrangeContext.Favorites.Add(favorite); arrangeContext.SaveChanges(); } using (var assertContext = new RidePalDbContext(options)) { //Act var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object); var result = await sut.AddPlaylistToFavoritesAsync(32, 4); //Assert Assert.IsTrue(result); } }
public async Task ReturnFalse_WhenPlaylistFavoriteWasAlreadyRemoved() { var options = Utils.GetOptions(nameof(ReturnFalse_WhenPlaylistFavoriteWasAlreadyRemoved)); Playlist firstPlaylist = new Playlist { Id = 39, Title = "Home", PlaylistPlaytime = 5524, UserId = 2, Rank = 552348, IsDeleted = false }; User user = new User() { Id = 9 }; PlaylistFavorite favorite = new PlaylistFavorite() { Id = 6, UserId = 9, PlaylistId = 39, IsFavorite = false }; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); var mockImageService = new Mock <IPixaBayImageService>(); using (var arrangeContext = new RidePalDbContext(options)) { arrangeContext.Playlists.Add(firstPlaylist); arrangeContext.Users.Add(user); arrangeContext.Favorites.Add(favorite); arrangeContext.SaveChanges(); } using (var assertContext = new RidePalDbContext(options)) { //Act var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object); var result = await sut.RemovePlaylistFromFavoritesAsync(39, 9); //Assert Assert.IsFalse(result); } }
public void ReturnTheCorrectPlaylistsPerPageForFavoritePlaylists() { var options = Utils.GetOptions(nameof(ReturnTheCorrectPlaylistsPerPageForFavoritePlaylists)); Playlist firstPlaylist = new Playlist { Id = 75, Title = "Home", PlaylistPlaytime = 5524, UserId = 35, Rank = 552348, IsDeleted = false }; Playlist secondPlaylist = new Playlist { Id = 76, Title = "Metal", PlaylistPlaytime = 5024, UserId = 35, Rank = 490258, IsDeleted = false }; Playlist thirdPlaylist = new Playlist { Id = 77, Title = "Jazz", PlaylistPlaytime = 5074, UserId = 35, Rank = 580258, IsDeleted = false }; User user = new User() { Id = 35 }; PlaylistFavorite firstFavorite = new PlaylistFavorite() { Id = 40, UserId = 35, PlaylistId = 75, IsFavorite = true }; PlaylistFavorite secondFavorite = new PlaylistFavorite() { Id = 41, UserId = 35, PlaylistId = 76, IsFavorite = true }; PlaylistFavorite thirdFavorite = new PlaylistFavorite() { Id = 42, UserId = 35, PlaylistId = 77, IsFavorite = true }; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); var mockImageService = new Mock <IPixaBayImageService>(); using (var arrangeContext = new RidePalDbContext(options)) { arrangeContext.Playlists.Add(firstPlaylist); arrangeContext.Playlists.Add(secondPlaylist); arrangeContext.Playlists.Add(thirdPlaylist); arrangeContext.Users.Add(user); arrangeContext.Favorites.Add(firstFavorite); arrangeContext.Favorites.Add(secondFavorite); arrangeContext.Favorites.Add(thirdFavorite); arrangeContext.SaveChanges(); } using (var assertContext = new RidePalDbContext(options)) { //Act var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object); var result = sut.GetPlaylistsPerPageOfCollection(1, 35, "favorites").ToList(); //Assert Assert.AreEqual(result.Count, 3); } }
public void ReturnTheCorrectPlaylists_WhenParamsAreValid() { var options = Utils.GetOptions(nameof(ReturnTheCorrectPlaylists_WhenParamsAreValid)); Playlist firstPlaylist = new Playlist { Id = 41, Title = "Home", PlaylistPlaytime = 5524, UserId = 2, Rank = 552348, IsDeleted = false }; Playlist secondPlaylist = new Playlist { Id = 42, Title = "Metal", PlaylistPlaytime = 5024, UserId = 2, Rank = 490258, IsDeleted = false }; User user = new User() { Id = 11 }; PlaylistFavorite firstFavorite = new PlaylistFavorite() { Id = 10, UserId = 11, PlaylistId = 41, IsFavorite = true }; PlaylistFavorite secondFavorite = new PlaylistFavorite() { Id = 11, UserId = 11, PlaylistId = 42, IsFavorite = true }; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); var mockImageService = new Mock <IPixaBayImageService>(); using (var arrangeContext = new RidePalDbContext(options)) { arrangeContext.Playlists.Add(firstPlaylist); arrangeContext.Playlists.Add(secondPlaylist); arrangeContext.Users.Add(user); arrangeContext.Favorites.Add(firstFavorite); arrangeContext.Favorites.Add(secondFavorite); arrangeContext.SaveChanges(); } using (var assertContext = new RidePalDbContext(options)) { //Act var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object); var result = sut.GetFavoritePlaylistsOfUser(11).Result.ToList(); //Assert Assert.AreEqual(result.Count, 2); Assert.AreEqual(result[0].Id, firstPlaylist.Id); Assert.AreEqual(result[0].Title, firstPlaylist.Title); Assert.AreEqual(result[1].Id, secondPlaylist.Id); Assert.AreEqual(result[1].Title, secondPlaylist.Title); } }