public void CalculateTrolleyTotal_WhenInputIsNull_ThrowsBadRequestException()
        {
            // Arrange
            var sutFactory = new SutTrolleyTotalControllerFactory();
            TrolleyInfoModel trolleyInfoModel = null;

            var sutTrolleyTotalController = sutFactory.Create();

            // Act
            Func <Task> action = async() => await sutTrolleyTotalController.CalculateTrolleyTotal(trolleyInfoModel);

            // Assert
            action.Should()
            .ThrowExactly <BadApiRequestException>()
            .WithMessage("trolleyInfoModel is required.");
        }
        public async void CalculateTrolleyTotal_WhenInputIsValid_ReturnsCorrectResultFromService()
        {
            // Arrange
            var sutFactory = new SutTrolleyTotalControllerFactory();
            var valueReturnedFromService = 12.3m;
            var trolleyInfoModel         = new TrolleyInfoModel();
            var trolleyInfo = new TrolleyInfo();

            sutFactory.MockMapper
            .Setup(o => o.Map <TrolleyInfoModel, TrolleyInfo>(trolleyInfoModel))
            .Returns(trolleyInfo);

            sutFactory.MockTrolleyCalculator
            .Setup(o => o.CalculateTrolley(trolleyInfo))
            .Returns(Task.FromResult(valueReturnedFromService));

            var sutTrolleyTotalController = sutFactory.Create();

            // Act
            var result = await sutTrolleyTotalController.CalculateTrolleyTotal(trolleyInfoModel);

            // Assert
            result.Should().Be(valueReturnedFromService);
        }