public async Task <ServiceResponseDto> RemoveMemeFromCollectionAsync(RemoveMemeFromCollectionDto removeMemeFromCollectionDto)
        {
            ServiceResponseDto serviceResultDto = new ServiceResponseDto();

            bool isOwnerOfCollection = await _collectionRepository.ExistsAsync(collection =>
                                                                               collection.Id.Equals(removeMemeFromCollectionDto.CollectionId) &&
                                                                               collection.UserId.Equals(removeMemeFromCollectionDto.UserId));

            CollectionItemDetail actualCollectionItemDetail = await _collectionItemDetailRepository
                                                              .FindSingleByExpressionAsync(collectionItemDetail => collectionItemDetail.Id.Equals(removeMemeFromCollectionDto.CollectionItemDetailId));

            // TODO: check if user is currently subscribed?

            if (!actualCollectionItemDetail.AddedByUserId.Equals(removeMemeFromCollectionDto.UserId) || !isOwnerOfCollection)
            {
                serviceResultDto.Message = "Failed to remove meme because user is not authorized.";
                return(serviceResultDto);
            }

            if (await _collectionItemDetailRepository.DeleteAsync(actualCollectionItemDetail))
            {
                serviceResultDto.Success = true;
                serviceResultDto.Message = "Successfully removed meme from collection.";
            }
            else
            {
                serviceResultDto.Message = "Failed to remove meme from the collection";
            }
            return(serviceResultDto);
        }
Example #2
0
        public async Task AddMemeToCollectionAsync_Should_Pass()
        {
            // Arrange
            MemeDto expectedMemeDto = new MemeDto
            {
                Id       = "a0Q558q",
                ImageUrl = "https://images-cdn.9gag.com/photo/a0Q558q_700b.jpg",
                VideoUrl = "http://img-9gag-fun.9cache.com/photo/a0Q558q_460sv.mp4",
                PageUrl  = "http://9gag.com/gag/a0Q558q",
                Title    = "Old but Gold"
            };
            Meme entity = DtoToEntityConverter.Convert <Meme, MemeDto>(expectedMemeDto);

            Assert.IsTrue(await MemeRepository.CreateAsync(entity));
            AddMemeToCollectionDto addMemeToCollectionDto = new AddMemeToCollectionDto
            {
                MemeId       = "a0Q558q",
                UserId       = 1,
                CollectionId = 1
            };

            // Act
            ServiceResponseDto addMemeToCollectionResultDto = await CollectionItemDetailService.AddMemeToCollectionAsync(addMemeToCollectionDto);

            // Assert
            Assert.IsTrue(addMemeToCollectionResultDto.Success);
            Assert.AreEqual(addMemeToCollectionResultDto.Message, "Successfully added meme to the collection.");
            CollectionItemDetail actualCollectionItemDetail = (await CollectionItemDetailRepository.GetAllAsync()).First();

            Assert.IsTrue(
                actualCollectionItemDetail.MemeId.Equals("a0Q558q") &&
                actualCollectionItemDetail.AddedByUserId.Equals(1) &&
                actualCollectionItemDetail.CollectionId.Equals(1));
        }
        public async Task <ServiceResponseDto> AddMemeToCollectionAsync(AddMemeToCollectionDto addMemeToCollectionDto)
        {
            ServiceResponseDto serviceResultDto = new ServiceResponseDto();

            if (!await _memeRepository.ExistsAsync(meme => meme.Id.Equals(addMemeToCollectionDto.MemeId)))
            {
                serviceResultDto.Message = "Meme does not exist.";
                return(serviceResultDto);
            }

            if (await _collectionItemDetailRepository.ExistsAsync(collectionItemDetail =>
                                                                  collectionItemDetail.MemeId.Equals(addMemeToCollectionDto.MemeId) &&
                                                                  collectionItemDetail.CollectionId.Equals(addMemeToCollectionDto.CollectionId)))
            {
                serviceResultDto.Message = "Meme already exists in the collection.";
                return(serviceResultDto);
            }

            CollectionItemDetail actualCollectionItemDetail = new CollectionItemDetail
            {
                AddedByUserId = addMemeToCollectionDto.UserId,
                CollectionId  = addMemeToCollectionDto.CollectionId,
                MemeId        = addMemeToCollectionDto.MemeId
            };

            if (await _collectionItemDetailRepository.CreateAsync(actualCollectionItemDetail))
            {
                serviceResultDto.Success = true;
                serviceResultDto.Message = "Successfully added meme to the collection.";
            }
            else
            {
                serviceResultDto.Message = "Failed to add meme to the collection.";
            }
            return(serviceResultDto);
        }