public async Task ThenThePayeSchemesAreReturned() { var hashedAccountId = "ABC123"; var accountResponse = new GetEmployerAccountByHashedIdResponse { Account = new AccountDetail { LegalEntities = new List <long>(), PayeSchemes = new List <string> { "ABC/123", "ZZZ/999" } } }; Mediator.Setup(x => x.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == hashedAccountId))).ReturnsAsync(accountResponse); Mediator.Setup(x => x.SendAsync(It.IsAny <GetTransferAllowanceQuery>())).ReturnsAsync(new GetTransferAllowanceResponse { TransferAllowance = new TransferAllowance() }); UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, payeSchemeRef = accountResponse.Account.PayeSchemes[0].Replace(@"/", "%2f") })))).Returns($"/api/accounts/{hashedAccountId}/payeschemes/{accountResponse.Account.PayeSchemes[0].Replace(@"/", "%2f")}"); UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, payeSchemeRef = accountResponse.Account.PayeSchemes[1].Replace(@"/", "%2f") })))).Returns($"/api/accounts/{hashedAccountId}/payeschemes/{accountResponse.Account.PayeSchemes[1].Replace(@"/", "%2f")}"); var response = await Controller.GetPayeSchemes(hashedAccountId); Assert.IsNotNull(response); Assert.IsInstanceOf <OkNegotiatedContentResult <ResourceList> >(response); var model = response as OkNegotiatedContentResult <ResourceList>; model?.Content.Should().NotBeNull(); foreach (var payeScheme in accountResponse.Account.PayeSchemes) { var matchedScheme = model.Content.Single(x => x.Id == payeScheme); matchedScheme.Href.Should().Be($"/api/accounts/{hashedAccountId}/payeschemes/{payeScheme.Replace(@"/", "%2f")}"); } }
public async Task ThenTheLegalEntitiesAreReturned() { var hashedAccountId = "ABC123"; var accountResponse = new GetEmployerAccountByHashedIdResponse { Account = new AccountDetail { LegalEntities = new List <long> { 1, 4 }, PayeSchemes = new List <string> () } }; Mediator.Setup(x => x.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == hashedAccountId))).ReturnsAsync(accountResponse); UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, legalEntityId = accountResponse.Account.LegalEntities[0].ToString() }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/legalentities/{accountResponse.Account.LegalEntities[0]}"); UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, legalEntityId = accountResponse.Account.LegalEntities[1].ToString() }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/legalentities/{accountResponse.Account.LegalEntities[1]}"); var response = await Controller.GetLegalEntities(hashedAccountId); Assert.IsNotNull(response); Assert.IsInstanceOf <OkNegotiatedContentResult <ResourceList> >(response); var model = response as OkNegotiatedContentResult <ResourceList>; model?.Content.Should().NotBeNull(); foreach (var legalEntity in accountResponse.Account.LegalEntities) { var matchedEntity = model.Content.Single(x => x.Id == legalEntity.ToString()); matchedEntity.Href.Should().Be($"/api/accounts/{hashedAccountId}/legalentities/{legalEntity}"); } }
public async Task ThenTheAccountIsReturned() { var hashedAccountId = "ABC123"; var accountResponse = new GetEmployerAccountByHashedIdResponse { Account = new AccountDetail { HashedId = hashedAccountId, AccountId = 123, Name = "Test", OwnerEmail = "*****@*****.**", CreatedDate = DateTime.Now.AddYears(-1), LegalEntities = new List <long> { 1, 4 }, PayeSchemes = new List <string> { "ZZZ/123", "XXX/123" } } }; Mediator.Setup(x => x.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == hashedAccountId))).ReturnsAsync(accountResponse); UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, legalEntityId = accountResponse.Account.LegalEntities[0].ToString() }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/legalentities/{accountResponse.Account.LegalEntities[0]}"); UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, legalEntityId = accountResponse.Account.LegalEntities[1].ToString() }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/legalentities/{accountResponse.Account.LegalEntities[1]}"); UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, payeSchemeRef = accountResponse.Account.PayeSchemes[0].Replace(@"/", "%2f") }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/payeschemes/{accountResponse.Account.PayeSchemes[0].Replace(@"/", "%2f")}"); UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.GetHashCode() == new { hashedAccountId, payeSchemeRef = accountResponse.Account.PayeSchemes[1].Replace(@"/", "%2f") }.GetHashCode()))).Returns($"/api/accounts/{hashedAccountId}/payeschemes/{accountResponse.Account.PayeSchemes[1].Replace(@"/", "%2f")}"); var response = await Controller.GetAccount(hashedAccountId); Assert.IsNotNull(response); Assert.IsInstanceOf <OkNegotiatedContentResult <AccountDetailViewModel> >(response); var model = response as OkNegotiatedContentResult <AccountDetailViewModel>; model?.Content.Should().NotBeNull(); model.Content.DasAccountId.Should().Be(hashedAccountId); model.Content.HashedAccountId.Should().Be(hashedAccountId); model.Content.AccountId.Should().Be(accountResponse.Account.AccountId); model.Content.DasAccountName.Should().Be(accountResponse.Account.Name); model.Content.DateRegistered.Should().Be(accountResponse.Account.CreatedDate); model.Content.OwnerEmail.Should().Be(accountResponse.Account.OwnerEmail); foreach (var legalEntity in accountResponse.Account.LegalEntities) { var matchedEntity = model.Content.LegalEntities.Single(x => x.Id == legalEntity.ToString()); matchedEntity.Href.Should().Be($"/api/accounts/{hashedAccountId}/legalentities/{legalEntity}"); } foreach (var payeScheme in accountResponse.Account.PayeSchemes) { var matchedScheme = model.Content.PayeSchemes.Single(x => x.Id == payeScheme); matchedScheme.Href.Should().Be($"/api/accounts/{hashedAccountId}/payeschemes/{payeScheme.Replace(@"/", "%2f")}"); } }
public async Task AndTheAccountDoesNotExistThenItIsNotReturned() { var hashedAccountId = "ABC123"; var accountResponse = new GetEmployerAccountByHashedIdResponse { Account = null }; Mediator.Setup(x => x.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == hashedAccountId))).ReturnsAsync(accountResponse); var response = await Controller.GetPayeSchemes(hashedAccountId); Assert.IsNotNull(response); Assert.IsInstanceOf <NotFoundResult>(response); }
private static AccountDetailViewModel ConvertAccountDetailToViewModel(GetEmployerAccountByHashedIdResponse accountResult) { var accountDetailViewModel = new AccountDetailViewModel { AccountId = accountResult.Account.AccountId, HashedAccountId = accountResult.Account.HashedId, DateRegistered = accountResult.Account.CreatedDate, OwnerEmail = accountResult.Account.OwnerEmail, DasAccountName = accountResult.Account.Name, LegalEntities = new ResourceList(accountResult.Account.LegalEntities.Select(x => new ResourceViewModel { Id = x.ToString() })), PayeSchemes = new ResourceList(accountResult.Account.PayeSchemes.Select(x => new ResourceViewModel { Id = x })) }; return(accountDetailViewModel); }
public void Arrange() { _transferAllowance = new TransferAllowance { RemainingTransferAllowance = 123.45M, StartingTransferAllowance = 234.56M }; _mediator = new Mock <IMediator>(); _mapper = ConfigureMapper(); _log = new Mock <ILog>(); _hashingService = new Mock <IHashingService>(); _orchestrator = new AccountsOrchestrator(_mediator.Object, _log.Object, _mapper, _hashingService.Object); var response = new GetEmployerAccountByHashedIdResponse { Account = new AccountDetail { } }; _mediator .Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountByHashedIdQuery>())) .ReturnsAsync(response) .Verifiable("Get account was not called");; _mediator .Setup(x => x.SendAsync(It.IsAny <GetTransferAllowanceQuery>())) .ReturnsAsync(new GetTransferAllowanceResponse { TransferAllowance = _transferAllowance }) .Verifiable("Get transfer balance was not called"); _mediator .Setup(x => x.SendAsync(It.IsAny <GetAccountBalancesRequest>())) .ReturnsAsync(new GetAccountBalancesResponse { Accounts = new List <AccountBalance> { new AccountBalance { Balance = AccountBalance } } }) .Verifiable("Get account balance was not called"); }
public async Task ThenIAmAbleToGetAnAccountByTheInternalId() { //Arrange var accountId = 1923701937; var hashedAccountId = "ABC123"; var accountResponse = new GetEmployerAccountByHashedIdResponse { Account = new AccountDetail() }; HashingService.Setup(x => x.HashValue(accountId)).Returns(hashedAccountId); Mediator.Setup(x => x.SendAsync(It.Is <GetEmployerAccountByHashedIdQuery>(q => q.HashedAccountId == hashedAccountId))).ReturnsAsync(accountResponse); Mediator.Setup(x => x.SendAsync(It.IsAny <GetTransferAllowanceQuery>())).ReturnsAsync(new GetTransferAllowanceResponse { TransferAllowance = new TransferAllowance() }); //Act var response = await Controller.GetAccount(accountId); //Assert Assert.IsNotNull(response); Assert.IsInstanceOf <OkNegotiatedContentResult <AccountDetailViewModel> >(response); }