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); }