public void GetAll_Handles_Exception_Cases()
        {
            var interestsRepository = new Mock <IInterestsRepository>();
            var logger = new Mock <ILogger <InterestsController> >();

            var interestsController = new InterestsController(logger.Object, interestsRepository.Object);
            var interestsList       = new List <InterestRegistration>();
            var interest1           = new InterestRegistration()
            {
                Title = "Test Interest Title1", Description = "Some description1", IsSubscribedTo = false
            };
            var interest2 = new InterestRegistration()
            {
                Title = "Test Interest Title2", Description = "Some description2", IsSubscribedTo = true
            };

            interestsList.Add(interest1);

            interestsRepository.Setup(x => x.GetAll())
            .ReturnsAsync(() => throw new Exception());

            var result = interestsController.GetAll().Result;

            //Assert
            NotNull(result);

            var routeResult = IsAssignableFrom <ObjectResult>(result.Result);

            Equal(routeResult.StatusCode, (int)HttpStatusCode.InternalServerError);
        }
        public void GetAll_Handles_Normal_Cases()
        {
            var interestsRepository = new Mock <IInterestsRepository>();
            var logger = new Mock <ILogger <InterestsController> >();

            var interestsController = new InterestsController(logger.Object, interestsRepository.Object);
            var interestsList       = new List <InterestRegistration>();
            var interest1           = new InterestRegistration()
            {
                Title = "Test Interest Title1", Description = "Some description1", IsSubscribedTo = false
            };
            var interest2 = new InterestRegistration()
            {
                Title = "Test Interest Title2", Description = "Some description2", IsSubscribedTo = true
            };

            interestsList.Add(interest1);

            interestsRepository.Setup(x => x.GetAll()).ReturnsAsync(interestsList);

            var result = interestsController.GetAll().Result;

            //Assert
            NotNull(result);

            var model = IsType <ActionResult <SuccessResponse> >(result);

            var routeResult = IsAssignableFrom <OkObjectResult>(model.Result);

            var response = IsAssignableFrom <IList <InterestRegistration> >(routeResult.Value).ToList();

            Equal(routeResult.StatusCode, (int)HttpStatusCode.OK);

            Equal(interestsList.Count, response.Count);

            // Should contain what was added
            True(response.Any(a => a.Title == interest1.Title));

            // Should not contain what was not added
            False(response.Any(a => a.Title == interest2.Title));
        }