コード例 #1
0
        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);
        }
コード例 #2
0
        public async Task RemoveMemeFromCollectionAsync_Should_Throw_ApplicationUserIsNotAuthorizedException()
        {
            // 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
            };
            ServiceResponseDto addMemeToCollectionResultDto = await CollectionItemDetailService.AddMemeToCollectionAsync(addMemeToCollectionDto);

            Assert.IsTrue(addMemeToCollectionResultDto.Success);


            RemoveMemeFromCollectionDto removeMemeFromCollectionDto = new RemoveMemeFromCollectionDto
            {
                CollectionId           = 1,
                CollectionItemDetailId = 1,
                UserId = 2
            };

            // Act & Assert
            ServiceResponseDto serviceResponseDto =
                await CollectionItemDetailService.RemoveMemeFromCollectionAsync(removeMemeFromCollectionDto);

            Assert.IsFalse(serviceResponseDto.Success);
            Assert.AreEqual(serviceResponseDto.Message, "Failed to remove meme because user is not authorized.");
        }
コード例 #3
0
        public async Task RemoveMemeFromCollectionAsync_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
            };
            ServiceResponseDto addMemeToCollectionResultDto = await CollectionItemDetailService.AddMemeToCollectionAsync(addMemeToCollectionDto);

            Assert.IsTrue(addMemeToCollectionResultDto.Success);
            RemoveMemeFromCollectionDto removeMemeFromCollectionDto = new RemoveMemeFromCollectionDto
            {
                CollectionId           = 1,
                CollectionItemDetailId = 1,
                UserId = 1
            };

            // Act
            ServiceResponseDto serviceResponseDto = await CollectionItemDetailService.RemoveMemeFromCollectionAsync(removeMemeFromCollectionDto);

            // Assert
            Assert.IsTrue(serviceResponseDto.Success);
            List <CollectionItemDetail> collectionItemDetails = (await CollectionItemDetailRepository.GetAllAsync()).ToList();

            Assert.AreEqual(collectionItemDetails.Count, 0);
        }