public PayeSchemeLevyDeclarationViewModel MapPayeLevyDeclaration(PayeLevySubmissionsResponse model)
        {
            var payeLevyDeclaration = new PayeSchemeLevyDeclarationViewModel();

            if (model == null)
            {
                return(payeLevyDeclaration);
            }

            payeLevyDeclaration.PayeSchemeName              = model.PayeScheme?.Name;
            payeLevyDeclaration.PayeSchemeRef               = model.PayeScheme?.ObscuredPayeRef;
            payeLevyDeclaration.LevyDeclarations            = model.LevySubmissions?.Declarations?.Select(o => MapLevyDeclarationViewModel(o)).ToList();
            payeLevyDeclaration.PayeSchemeFormatedAddedDate = model.PayeScheme?.AddedDate == DateTime.MinValue ?
                                                              string.Empty :
                                                              ConvertDateTimeToDdmmyyyyFormat(model.PayeScheme.AddedDate);
            return(payeLevyDeclaration);
        }
        public async Task ShouldReturnLevyResponseWithUnexpectedErrorStatusCodeWhenExceptionOccursWithHmrcApiClient()
        {
            // Arrange
            IPayeLevySubmissionsHandler payeLevySubmissionsHandler =
                new PayeLevySubmissionsHandler(
                    _accountRepository.Object,
                    _levySubmissionsRepository.Object,
                    _payeSchemeObfuscator.Object,
                    _log.Object,
                    _hashingService.Object);
            PayeLevySubmissionsResponse      payeLevySubmissionsResponse = null;
            PayeLevySubmissionsResponseCodes?expectedStatusCode          = PayeLevySubmissionsResponseCodes.UnexpectedError;
            PayeLevySubmissionsResponseCodes?actualStatusCode            = null;

            _hashingService
            .Setup(x => x.DecodeValueToString(_hashedPayeRef))
            .Returns(_actualPayeRef);
            _accountRepository
            .Setup(x => x.Get(
                       It.Is <string>(y => y == _accountId),
                       It.Is <AccountFieldsSelection>(y => y == AccountFieldsSelection.PayeSchemes)))
            .Returns(Task.FromResult(this.GenerateTestAccount()));
            _levySubmissionsRepository
            .Setup(x => x.Get(It.Is <string>(y => y == _actualPayeRef)))
            .Callback(() =>
            {
                throw new Exception("Some HRMC Exception!");
            });

            // Act
            payeLevySubmissionsResponse = await payeLevySubmissionsHandler.FindPayeSchemeLevySubmissions(
                _accountId,
                _hashedPayeRef);

            actualStatusCode = payeLevySubmissionsResponse.StatusCode;

            // Assert
            Assert.AreEqual(expectedStatusCode, actualStatusCode);
        }