public void UsersDoNotConnectWhenOtherUserDoesNotExist(
            [Frozen(Matching.ImplementedInterfaces)] FakeDB db,
            User user,
            int otherUserId,
            ConnectionsController sut)
        {
            db.Add(user);
            db.IsDirty = false;

            var actual = sut.Post(user.Id.ToString(), otherUserId.ToString());

            var err = Assert.IsAssignableFrom <BadRequestErrorMessageResult>(actual);

            Assert.Equal("Other user not found.", err.Message);
            Assert.False(db.IsDirty);
        }
        public void UsersFailToConnectWhenOtherUserIdIsInvalid(
            [Frozen(Matching.ImplementedInterfaces)] FakeDB db,
            User user,
            string otherUserId,
            ConnectionsController sut)
        {
            Assert.False(int.TryParse(otherUserId, out _));
            db.Add(user);
            db.IsDirty = false;

            var actual = sut.Post(user.Id.ToString(), otherUserId);

            var err = Assert.IsAssignableFrom <BadRequestErrorMessageResult>(actual);

            Assert.Equal("Invalid ID for other user.", err.Message);
            Assert.False(db.IsDirty);
        }
        public void UsersSuccessfullyConnect(
            [Frozen(Matching.ImplementedInterfaces)] FakeDB db,
            User user,
            User otherUser,
            ConnectionsController sut)
        {
            db.Add(user);
            db.Add(otherUser);
            db.IsDirty = false;

            var actual = sut.Post(user.Id.ToString(), otherUser.Id.ToString());

            var ok = Assert.IsAssignableFrom <OkNegotiatedContentResult <User> >(
                actual);

            Assert.Equal(otherUser, ok.Content);
            Assert.True(db.IsDirty);
            Assert.Contains(otherUser.Id, user.Connections);
        }