public async Task AcceptFriendshipAsync_FriendshipStateNotRequested_ThrowException()
        {
            // Arrange
            var friendship = new Friendship
            {
                FromUserId = user2.Id,
                ToUserId   = user1.Id,
                State      = FriendshipState.Accepted,
                Id         = Guid.NewGuid(),
            };

            var mockRepository = new Mock <IFriendshipRepository>();

            mockRepository.Setup(repository => repository.GetByIdAsync(friendship.Id))
            .ReturnsAsync(friendship);

            var friendshipService = new FriendshipService(mockRepository.Object, mockUserService.Object);

            // Act
            Exception expectedExcetpion = null;

            try
            {
                var result = await friendshipService.AcceptFriendshipAsync(friendship.Id);
            }
            catch (Exception ex)
            {
                expectedExcetpion = ex;
            }

            // Assert
            Assert.IsNotNull(expectedExcetpion);
            Assert.IsInstanceOf <BadRequestExceptions>(expectedExcetpion);
            Assert.AreEqual(expectedExcetpion.Message, "this Friendship state is not Requested");
        }
        public async Task AcceptFriendshipAsync_AcceptYourFriendshipRequest_ReturnOne()
        {
            // Arrange
            var friendship = new Friendship
            {
                FromUserId = user2.Id,
                ToUserId   = user1.Id,
                State      = FriendshipState.Requested,
                Id         = Guid.NewGuid(),
            };

            var mockRepository = new Mock <IFriendshipRepository>();

            mockRepository.Setup(repository => repository.GetByIdAsync(friendship.Id))
            .ReturnsAsync(friendship);
            mockRepository.Setup(repository => repository.UpdateAsync(
                                     It.Is <Friendship>(x => x.FromUserId == user2.Id && x.ToUserId == user1.Id &&
                                                        x.Id == friendship.Id && x.State == FriendshipState.Accepted)))
            .ReturnsAsync(1);

            var friendshipService = new FriendshipService(mockRepository.Object, mockUserService.Object);

            // Act
            var result = await friendshipService.AcceptFriendshipAsync(friendship.Id);

            // Assert
            Assert.AreEqual(result, 1);
        }
        public async Task AcceptFriendshipAsync_InvalidFriendshipId_ThrowException()
        {
            // Arrange
            var friendshipId      = Guid.NewGuid();
            var mockRepository    = new Mock <IFriendshipRepository>();
            var friendshipService = new FriendshipService(mockRepository.Object, mockUserService.Object);

            // Act
            Exception expectedExcetpion = null;

            try
            {
                var result = await friendshipService.AcceptFriendshipAsync(friendshipId);
            }
            catch (Exception ex)
            {
                expectedExcetpion = ex;
            }

            // Assert
            Assert.IsNotNull(expectedExcetpion);
            Assert.IsInstanceOf <BadRequestExceptions>(expectedExcetpion);
            Assert.AreEqual(expectedExcetpion.Message, $"couldn't find any Friendship with id = {friendshipId}");
        }