Пример #1
0
        /// <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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
            }
        }