public async void Approve_ApproveNullFriendhsip_NothingHappens()
        {
            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();

            Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member, otherMember1 }.AsQueryable());
            memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member);

            Mock<DbSet<Friendship>> friendshipDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Friendship>().AsQueryable());
            friendshipDbSetStub.Setup(db => db.Add(It.IsAny<Friendship>())).Returns<Friendship>(i => i).Verifiable();

            dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object);
            dbStub.Setup(db => db.Friendships).Returns(friendshipDbSetStub.Object);

            Mock<ControllerContext> context = new Mock<ControllerContext>();
            context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null);
            context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true);

            Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>();
            idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId);

            FriendListController controller = new FriendListController(dbStub.Object, idGetterStub.Object)
            {
                ControllerContext = context.Object
            };

            await controller.Approve(otherMember1.UserId);

            Assert.That(
                () =>
                    friendshipDbSetStub.Verify(db => db.Add(It.IsAny<Friendship>()),
                    Times.Never),
                Throws.Nothing);
            Assert.That(
                () =>
                    dbStub.Verify(db => db.SaveChangesAsync(),
                    Times.Never),
                Throws.Nothing);
        }
        public async void Approve_UserApprovesRequest_ChangesFriendshipToAccepted()
        {
            Friendship received = new Friendship
            {
                ReceiverId = member.UserId,
                Receiver = member,
                RequesterId = otherMember1.UserId,
                Requester = otherMember1,
                RequestStatus = FriendshipRequestStatus.Pending
            };

            Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake();

            Mock<DbSet<Member>> memberDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Member> { member, otherMember1 }.AsQueryable());
            memberDbSetStub.Setup(db => db.FindAsync(member.UserId)).ReturnsAsync(member);

            Mock<DbSet<Friendship>> friendshipDbSetStub = TestHelpers.GetFakeAsyncDbSet(new List<Friendship> { received }.AsQueryable());
            friendshipDbSetStub.Setup(db => db.Add(It.IsAny<Friendship>())).Returns<Friendship>(i => i).Verifiable();

            dbStub.Setup(db => db.Members).Returns(memberDbSetStub.Object);
            dbStub.Setup(db => db.Friendships).Returns(friendshipDbSetStub.Object);

            Mock<ControllerContext> context = new Mock<ControllerContext>();
            context.Setup(c => c.HttpContext.User.Identity).Returns<IIdentity>(null);
            context.Setup(c => c.HttpContext.User.Identity.IsAuthenticated).Returns(true);

            Mock<IGuidUserIdGetter> idGetterStub = new Mock<IGuidUserIdGetter>();
            idGetterStub.Setup(id => id.GetUserId(It.IsAny<IIdentity>())).Returns(member.UserId);

            FriendListController controller = new FriendListController(dbStub.Object, idGetterStub.Object)
            {
                ControllerContext = context.Object
            };

            await controller.Approve(otherMember1.UserId);

            Assert.That(received.RequestStatus == FriendshipRequestStatus.Accepted);
            Assert.That(
                () =>
                    dbStub.Verify(db => db.SaveChangesAsync(),
                    Times.Exactly(1)),
                Throws.Nothing);
        }