public async Task Test_DeleteBoard_Success()
        {
            var boardToDeleteId = ApplicationDbMock.Boards.FirstOrDefault().Id;

            await _repository.DeleteBoardAsync(boardToDeleteId);

            Assert.DoesNotContain(ApplicationDbMock.Boards, x => x.Id == boardToDeleteId);

            ApplicationDbMock.Initialize();
        }
        public async Task Test_DeleteProject_Success()
        {
            var projectToDeleteId = ApplicationDbMock.Projects.FirstOrDefault().Id;

            await _repository.DeleteProjectAsync(projectToDeleteId);

            Assert.DoesNotContain(ApplicationDbMock.Projects, x => x.Id == projectToDeleteId);
            Assert.DoesNotContain(ApplicationDbMock.Boards, x => x.ProjectId == projectToDeleteId);

            ApplicationDbMock.Initialize();
        }
        public async Task Test_CreateProject_Success()
        {
            var newProject = new Project
            {
                Id = "testProjectId"
            };

            await _repository.CreateProjectAsync(newProject);

            Assert.Contains(ApplicationDbMock.Projects, p => p.Id == newProject.Id);

            ApplicationDbMock.Initialize();
        }
        public async Task Test_CreateBoard_Success()
        {
            var newBoard = new Board
            {
                Id = "1234"
            };

            await _repository.CreateBoardAsync(newBoard);

            Assert.Contains(ApplicationDbMock.Boards, x => x.Id == newBoard.Id);

            ApplicationDbMock.Initialize();
        }
        public async Task Test_UpdateProject_Success()
        {
            var projectToUpdate = ApplicationDbMock.Projects.FirstOrDefault();

            projectToUpdate.Description = "1234";

            await _repository.UpdateProjectAsync(projectToUpdate);

            Assert.Equal(
                projectToUpdate.Description,
                ApplicationDbMock.Projects.SingleOrDefault(x => x.Id == projectToUpdate.Id).Description);

            ApplicationDbMock.Initialize();
        }
        public async Task Test_DeleteUser_Success()
        {
            ApplicationDbMock.Initialize();

            var usernameToDelete = ApplicationDbMock.Users.FirstOrDefault().Username;

            await _repository.DeleteUserAsync(usernameToDelete);

            Assert.DoesNotContain(ApplicationDbMock.Users, u => u.Username == usernameToDelete);
            Assert.DoesNotContain(ApplicationDbMock.Projects, p => p.HostUsername == usernameToDelete);
            Assert.DoesNotContain(ApplicationDbMock.Boards, b => b.Id.Contains(usernameToDelete));

            ApplicationDbMock.Initialize();
        }
        public async Task Test_UpdateUser_Success()
        {
            ApplicationDbMock.Initialize();

            var userToUpdate = ApplicationDbMock.Users.FirstOrDefault();

            userToUpdate.Password = "******";

            await _repository.UpdateUserAsync(userToUpdate);

            Assert.True(ApplicationDbMock.Users.Single(u => u.Username == userToUpdate.Username).Password == "testpassword");

            ApplicationDbMock.Initialize();
        }
        public async Task Test_CreateUser_Success()
        {
            ApplicationDbMock.Initialize();

            var newUser = new User
            {
                Username = "******",
                Name     = "Mark Masloedov",
                Password = "******",
                Email    = "*****@*****.**"
            };

            await _repository.CreateUserAsync(newUser);

            Assert.Contains(ApplicationDbMock.Users, u => u.Username == newUser.Username);

            ApplicationDbMock.Initialize();
        }