public async Task Challenges_ReturnsStatusCode500_WhenEmpty()
        {
            // Arrange
            var mockUserManager   = new FakeUserManager();
            var mockLoggerFactory = new Mock <ILoggerFactory>();
            var mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(f => f.CreateLogger(It.IsAny <string>()))
            .Returns(mockLogger.Object);
            var mockMapper           = new Mock <IMapper>();
            var mockChallengeService = new Mock <IChallengeService>();

            var challengeController = new ChallengeController(
                mockUserManager,
                mockLoggerFactory.Object,
                mockMapper.Object,
                mockChallengeService.Object
                );

            // Act
            var result = await challengeController.Challenges() as StatusCodeResult;

            // Assert
            Assert.IsType <StatusCodeResult>(result);
            Assert.Equal(500, result.StatusCode);
        }
        public async Task Challenges_ReturnsChallenges_WhenNotEmpty()
        {
            // Arrange
            var mockUserManager   = new FakeUserManager();
            var mockLoggerFactory = new Mock <ILoggerFactory>();
            var mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(f => f.CreateLogger(It.IsAny <string>()))
            .Returns(mockLogger.Object);
            var mockMapper           = new Mock <IMapper>();
            var challenges           = new List <ChallengeDto>();
            var mockChallengeService = new Mock <IChallengeService>();

            mockChallengeService.Setup(c => c.GetReceivedChallengesAsync(It.IsAny <int>()))
            .ReturnsAsync(challenges)
            .Verifiable();
            mockChallengeService.Setup(c => c.GetGivenChallengesAsync(It.IsAny <int>()))
            .ReturnsAsync(challenges)
            .Verifiable();

            var challengeController = new ChallengeController(
                mockUserManager,
                mockLoggerFactory.Object,
                mockMapper.Object,
                mockChallengeService.Object
                );

            // Act
            var result = await challengeController.Challenges() as ViewResult;

            // Assert
            Assert.IsType <ViewResult>(result);
            var model = Assert.IsType <ChallengeViewModel>(result.Model);

            Assert.Equal(challenges, model.GivenChallenges);
            Assert.Equal(challenges, model.ReceivedChallenges);
        }