public void GetByIdReturnsBadRequestResultWhenIdIsNull()
        {
            var controller = new CalculationsController(_mockLogger.Object, _mockRepository.Object, _mockCalculator.Object, _mockMapper.Object, _mockDbContext.Object);

            var result = controller.GetById(null).Result;

            Assert.IsType <ActionResult <CalculationModel> >(result);
        }
        public void GetByIdReturnsNotFoundResultWhenCalculationNotFound()
        {
            int testCalcId = 6555;

            _mockRepository.Setup(rep => rep.FindByIdAsync(testCalcId))
            .Returns(null as Task <Calculation>);
            var controller = new CalculationsController(_mockLogger.Object, _mockRepository.Object, _mockCalculator.Object, _mockMapper.Object, _mockDbContext.Object);

            var result = controller.GetById(testCalcId);

            Assert.IsType <Task <ActionResult <CalculationModel> > >(result);
        }
        public void GetByIdReturnsResultWithCalculation()
        {
            var testUserId  = 1;
            var calculation = GetTestCalculations().FirstOrDefault(c => c.Id == testUserId);

            _mockRepository.Setup(rep => rep.FindByIdAsync(testUserId).Result)
            .Returns(_mockMapper.Object.Map <Calculation>(calculation));
            var controller = new CalculationsController(_mockLogger.Object, _mockRepository.Object, _mockCalculator.Object, _mockMapper.Object, _mockDbContext.Object);

            var result = controller.GetById(testUserId);

            var actionResult = Assert.IsType <Task <ActionResult <CalculationModel> > >(result);
            var model        = Assert.IsType <Task <Calculation> >(actionResult.Result.Value);

            Assert.Equal(testUserId, model.Result.Id);
            Assert.Equal("Add", model.Result.Type);
            Assert.Equal("3 + 5", model.Result.Expression);
            Assert.Equal(8, model.Result.Result);
        }