コード例 #1
0
        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}");
            }
        }
コード例 #3
0
        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")}");
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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");
        }
コード例 #7
0
        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);
        }