public async void GetFriendRequestsNoFriends_Async()
        {
            // Arrange
            var person           = CreatePerson();
            var requestingFriend = CreatePerson();

            await _personRepository.AddPersonAsync(person);

            await _personRepository.AddPersonAsync(requestingFriend);

            var friendsWith = new Relationships.FriendsWith();

            // Only one-way relationship
            await _personRepository.CreateFriendRelationshipAsync(requestingFriend, person, friendsWith);

            // Act
            var friendRequests = await _FriendRepository.GetFriendRequests(person, friendsWith);

            // Assert
            Assert.True(friendRequests.Where(f => f.Name == requestingFriend.Name).ToArray().Length == 1);
            Assert.True(friendRequests.ToArray().Length == 1);

            // Clean Up
            await _FriendRepository.DeleteFriendsWithRelationshipAsync(requestingFriend, person);

            await _personRepository.DeletePersonAsync(person);

            await _personRepository.DeletePersonAsync(requestingFriend);
        }
        public async void AddFriendsAsync_Test()
        {
            // Arrange
            var person1     = CreatePerson();
            var person2     = CreatePerson();
            var friendsWith = new Relationships.FriendsWith();

            await _personRepository.AddPersonAsync(person1);

            await _personRepository.AddPersonAsync(person2);

            // Act
            await _personRepository.CreateFriendRelationshipAsync(person1, person2, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(person2, person1, friendsWith);

            var friends = await _FriendRepository.GetConfirmedFriendsWithRelationshipAsync(person1, friendsWith);

            // Assert
            Assert.True(friends.Count() == 1);
            Assert.True(friends.FirstOrDefault().Name == person2.Name);

            // CleanUp
            await _FriendRepository.DeleteFriendsWithRelationshipAsync(person1, person2);

            await _personRepository.DeletePersonAsync(person1);

            await _personRepository.DeletePersonAsync(person2);
        }
        public async void CreateFriendRequests_test()
        {
            // Arrange
            var person = new Person()
            {
                Name           = "user1",
                Portrait       = @"Https://User1PortraitLink",
                HashedPassword = "******",
                EmailConfirmed = "True",
                Email          = "*****@*****.**"
            };
            var friend = new Person()
            {
                Name           = "friend1",
                Portrait       = @"Https://friend1PortraitLink",
                HashedPassword = "******",
                EmailConfirmed = "True",
                Email          = "*****@*****.**"
            };
            var requestedfriend = new Person()
            {
                Name           = "requestedfriend1",
                Portrait       = @"Https://requestedfriend1PortraitLink",
                HashedPassword = "******",
                EmailConfirmed = "True",
                Email          = "*****@*****.**"
            };
            var requestingfriend = new Person()
            {
                Name           = "requestingfriend1",
                Portrait       = @"Https://requestingfriend1PortraitLink",
                HashedPassword = "******",
                EmailConfirmed = "True",
                Email          = "*****@*****.**"
            };

            await _personRepository.AddPersonAsync(person);

            await _personRepository.AddPersonAsync(friend);

            await _personRepository.AddPersonAsync(requestedfriend);

            await _personRepository.AddPersonAsync(requestingfriend);

            var friendsWith = new Relationships.FriendsWith();

            // Only one-way relationship
            await _personRepository.CreateFriendRelationshipAsync(requestingfriend, person, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(person, requestedfriend, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(person, friend, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(friend, person, friendsWith);
        }
        public async void GetFriendsAsync_Test()
        {
            // Arrange
            var person     = CreatePerson();
            var friend1    = CreatePerson();
            var friend2    = CreatePerson();
            var notaFriend = CreatePerson();

            await _personRepository.AddPersonAsync(person);

            await _personRepository.AddPersonAsync(friend1);

            await _personRepository.AddPersonAsync(friend2);

            await _personRepository.AddPersonAsync(notaFriend);

            var friendsWith = new Relationships.FriendsWith();

            await _personRepository.CreateFriendRelationshipAsync(person, friend1, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(friend1, person, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(person, friend2, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(friend2, person, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(friend1, notaFriend, friendsWith);

            // Act
            var personsFriends = await _FriendRepository.GetConfirmedFriendsWithRelationshipAsync(person, friendsWith);

            // Assert
            Assert.True(personsFriends.Where(f => f.Name == friend1.Name).ToList().Count == 1);
            Assert.True(personsFriends.Where(f => f.Name == friend2.Name).ToList().Count == 1);
            Assert.True(personsFriends.Where(f => f.Name == notaFriend.Name).ToList().Count == 0);
            Assert.True(personsFriends.ToList().Count == 2);

            // Clean Up
            await _FriendRepository.DeleteFriendsWithRelationshipAsync(person, friend1);

            await _FriendRepository.DeleteFriendsWithRelationshipAsync(person, friend2);

            await _FriendRepository.DeleteFriendsWithRelationshipAsync(friend1, notaFriend);

            await _personRepository.DeletePersonAsync(person);

            await _personRepository.DeletePersonAsync(friend1);

            await _personRepository.DeletePersonAsync(friend2);

            await _personRepository.DeletePersonAsync(notaFriend);
        }
        public async void RemoveFriendAsync_Test()
        {
            // Arrange
            var person         = CreatePerson();
            var friendsForever = CreatePerson();
            var noLongerFriend = CreatePerson();
            var friendsWith    = new Relationships.FriendsWith();

            await _personRepository.AddPersonAsync(person);

            await _personRepository.AddPersonAsync(friendsForever);

            await _personRepository.AddPersonAsync(noLongerFriend);

            await _personRepository.CreateFriendRelationshipAsync(person, noLongerFriend, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(person, friendsForever, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(noLongerFriend, person, friendsWith);

            await _personRepository.CreateFriendRelationshipAsync(friendsForever, person, friendsWith);

            // Act
            var everyoneIsFriends = await _FriendRepository.GetConfirmedFriendsWithRelationshipAsync(person, friendsWith);

            await _FriendRepository.DeleteFriendsWithRelationshipAsync(person, noLongerFriend);

            var someoneIsLeftout = await _FriendRepository.GetConfirmedFriendsWithRelationshipAsync(person, friendsWith);

            // Assert
            Assert.True(everyoneIsFriends.Where(f => f.Name == friendsForever.Name).ToList().Count == 1);
            Assert.True(everyoneIsFriends.Where(f => f.Name == noLongerFriend.Name).ToList().Count == 1);
            Assert.True(everyoneIsFriends.ToList().Count == 2);

            Assert.True(someoneIsLeftout.Where(f => f.Name == friendsForever.Name).ToList().Count == 1);
            Assert.True(someoneIsLeftout.Where(f => f.Name == noLongerFriend.Name).ToList().Count == 0);
            Assert.True(someoneIsLeftout.ToList().Count == 1);

            // CleanUp
            await _FriendRepository.DeleteFriendsWithRelationshipAsync(person, friendsForever);

            await _personRepository.DeletePersonAsync(person);

            await _personRepository.DeletePersonAsync(friendsForever);

            await _personRepository.DeletePersonAsync(noLongerFriend);
        }