public void GetUserFavoritePhotos_ShouldReturnFavoritePhotos()
        {
            var user    = UserCreator.Create("test");
            var visitor = UserCreator.Create("visitor");
            var photo1  = PhotoCreator.Create(user, false, false);
            var photo2  = PhotoCreator.Create(user, false, false);
            var photo3  = PhotoCreator.Create(visitor, false, false);

            var favorites = new List <PhotoFavorite>()
            {
                PhotoFavoriteCreator.Create(photo1, visitor),
                PhotoFavoriteCreator.Create(photo2, visitor),
                PhotoFavoriteCreator.Create(photo3, user),
            };

            var photosRepo = DeletableEntityRepositoryMock.Get <Photo>(new List <Photo>()
            {
                photo1, photo2, photo3
            });
            var favoritesRepo = EfRepositoryMock.Get <PhotoFavorite>(favorites);

            var service          = new FavoritesService(favoritesRepo.Object, photosRepo.Object);
            var userFavorites    = service.GetUserFavoritePhotos <PhotoViewModel>(user.Id);
            var visitorFavorites = service.GetUserFavoritePhotos <PhotoViewModel>(visitor.Id);

            Assert.Single(userFavorites);
            Assert.Equal(2, visitorFavorites.Count);
        }
        public void UserHasFavoritePhoto_ShouldFalseWhenPhotoIsNotFavoriteToTheUser()
        {
            var user        = UserCreator.Create("test");
            var visitorUser = UserCreator.Create("visitor");
            var photo       = PhotoCreator.Create(user, false, false);
            var favorites   = new List <PhotoFavorite>()
            {
                PhotoFavoriteCreator.Create(photo, visitorUser)
            };

            var photosRepo = DeletableEntityRepositoryMock.Get <Photo>(new List <Photo>()
            {
                photo
            });
            var favoritesRepo = EfRepositoryMock.Get <PhotoFavorite>(favorites);

            var service = new FavoritesService(favoritesRepo.Object, photosRepo.Object);
            var actual  = service.UserHasFavoritePhoto(photo.Id, user.Id);

            Assert.False(actual);
        }
        public void Toggle_ShouldRemoveFavoriteWhenMappingExists()
        {
            var user        = UserCreator.Create("test");
            var visitorUser = UserCreator.Create("visitor");
            var photo       = PhotoCreator.Create(user, false, false);
            var favorites   = new List <PhotoFavorite>()
            {
                PhotoFavoriteCreator.Create(photo, visitorUser)
            };

            var photosRepo = DeletableEntityRepositoryMock.Get <Photo>(new List <Photo>()
            {
                photo
            });
            var favoritesRepo = EfRepositoryMock.Get <PhotoFavorite>(favorites);

            var service = new FavoritesService(favoritesRepo.Object, photosRepo.Object);

            service.ToggleAsync(photo.Id, visitorUser.Id).Wait();

            Assert.Empty(favorites);
        }