public void Arrange()
        {
            _mediator = new Mock <IMediator>();

            _log = new Mock <ILog>();

            _orchestrator = new AccountsOrchestrator(_mediator.Object, _log.Object, Mock.Of <IMapper>(), Mock.Of <IHashingService>());

            var response = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new AccountDetail
                {
                    AccountAgreementTypes = new List <AgreementType>()
                    {
                        AgreementType.Levy,
                        AgreementType.Combined
                    }
                }
            };

            _mediator
            .Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(response)
            .Verifiable("Get account was not called");
        }
        public async Task ThenResponseShouldHaveAccountAgreementTypeSetToNonLevy()
        {
            //Arrange
            var          agreementType     = AgreementType.NonLevyExpressionOfInterest;
            const string hashedAgreementId = "ABC123";

            var response = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new AccountDetail
                {
                    AccountAgreementTypes = new List <AgreementType>
                    {
                        agreementType,
                        agreementType
                    }
                }
            };

            _mediator
            .Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(response)
            .Verifiable("Get account was not called");

            //Act
            var result = await _orchestrator.GetAccount(hashedAgreementId);

            //Assert
            Assert.AreEqual(agreementType.ToString(), result.AccountAgreementType.ToString());
        }
Beispiel #3
0
        public async Task ThenTheAccountIsReturned()
        {
            var hashedAccountId = "ABC123";

            var accountsResponse = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new Models.Account.AccountDetail()
                {
                    AccountId = 123,
                    HashedId  = hashedAccountId,
                    Name      = "Test 1"
                }
            };

            Mediator.Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(accountsResponse);

            var response = await Controller.GetAccount(hashedAccountId);

            Assert.IsNotNull(response);
            Assert.IsInstanceOf <OkNegotiatedContentResult <AccountDetail> >(response);
            var model = response as OkNegotiatedContentResult <AccountDetail>;

            model?.Content?.Should().NotBeNull();
            model?.Content?.AccountId.Should().Be(123);
            model?.Content?.DasAccountName.Should().Be("Test 1");
            model?.Content?.HashedAccountId.Should().Be(hashedAccountId);
        }
Beispiel #4
0
 private static AccountDetail ConvertToAccountDetail(GetEmployerAccountDetailByHashedIdResponse accountResult)
 {
     return(new AccountDetail
     {
         AccountId = accountResult.Account.AccountId,
         HashedAccountId = accountResult.Account.HashedId,
         PublicHashedAccountId = accountResult.Account.PublicHashedId,
         DateRegistered = accountResult.Account.CreatedDate,
         OwnerEmail = accountResult.Account.OwnerEmail,
         DasAccountName = accountResult.Account.Name,
         LegalEntities = new ResourceList(accountResult.Account.LegalEntities.Select(x => new Resource {
             Id = x.ToString()
         })),
         PayeSchemes = new ResourceList(accountResult.Account.PayeSchemes.Select(x => new Resource {
             Id = x
         })),
         ApprenticeshipEmployerType = accountResult.Account.ApprenticeshipEmployerType.ToString(),
         AccountAgreementType = GetAgreementType(accountResult.Account.AccountAgreementTypes)
     });
 }
Beispiel #5
0
        public async Task ThenTheAccountIsReturnedAndTheUriIsCorrect()
        {
            var hashedAccountId = "ABC123";

            var accountsResponse = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new Models.Account.AccountDetail()
                {
                    AccountId     = 123,
                    HashedId      = hashedAccountId,
                    Name          = "Test 1",
                    LegalEntities = new List <long> {
                        234, 123
                    }
                }
            };

            Mediator.Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(accountsResponse);

            UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, legalEntityId = accountsResponse.Account.LegalEntities[0] })))).Returns($"/api/accounts/{hashedAccountId}/legalEntity/{accountsResponse.Account.LegalEntities[0]}");
            UrlHelper.Setup(x => x.Route("GetLegalEntity", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, legalEntityId = accountsResponse.Account.LegalEntities[1] })))).Returns($"/api/accounts/{hashedAccountId}/legalEntity/{accountsResponse.Account.LegalEntities[1]}");

            var response = await Controller.GetAccount(hashedAccountId);

            Assert.IsNotNull(response);
            Assert.IsInstanceOf <OkNegotiatedContentResult <AccountDetail> >(response);
            var model = response as OkNegotiatedContentResult <AccountDetail>;

            model?.Content?.Should().NotBeNull();
            model?.Content?.AccountId.Should().Be(123);
            model?.Content?.DasAccountName.Should().Be("Test 1");
            model?.Content?.HashedAccountId.Should().Be(hashedAccountId);

            foreach (var legalEntity in accountsResponse.Account.LegalEntities)
            {
                var matchedScheme = model?.Content?.LegalEntities.Single(x => x.Id == legalEntity.ToString());
                matchedScheme?.Href.Should().Be($"/api/accounts/{hashedAccountId}/legalEntity/{legalEntity}");
            }
        }
Beispiel #6
0
        public async Task ThenTheAccountIsReturnedAndTheUriIsCorrect()
        {
            var hashedAccountId = "ABC123";

            var accountsResponse = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new Models.Account.AccountDetail()
                {
                    AccountId   = 123,
                    HashedId    = hashedAccountId,
                    Name        = "Test 1",
                    PayeSchemes = new List <string> {
                        "123/4567", "345/6554"
                    }
                }
            };

            Mediator.Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(accountsResponse);

            UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, payeSchemeRef = accountsResponse.Account.PayeSchemes[0].Replace("/", "%2f") })))).Returns($"/api/accounts/{hashedAccountId}/payescheme/{accountsResponse.Account.PayeSchemes[0].Replace("/", "%2f")}");
            UrlHelper.Setup(x => x.Route("GetPayeScheme", It.Is <object>(o => o.IsEquivalentTo(new { hashedAccountId, payeSchemeRef = accountsResponse.Account.PayeSchemes[1].Replace("/", "%2f") })))).Returns($"/api/accounts/{hashedAccountId}/payescheme/{accountsResponse.Account.PayeSchemes[1].Replace("/", "%2f")}");

            var response = await Controller.GetAccount(hashedAccountId);

            Assert.IsNotNull(response);
            Assert.IsInstanceOf <OkNegotiatedContentResult <AccountDetail> >(response);
            var model = response as OkNegotiatedContentResult <AccountDetail>;

            model?.Content?.Should().NotBeNull();
            model?.Content?.AccountId.Should().Be(123);
            model?.Content?.DasAccountName.Should().Be("Test 1");
            model?.Content?.HashedAccountId.Should().Be(hashedAccountId);

            foreach (var payeScheme in accountsResponse.Account.PayeSchemes)
            {
                var matchedScheme = model?.Content?.PayeSchemes.Single(x => x.Id == payeScheme);
                matchedScheme?.Href.Should().Be($"/api/accounts/{hashedAccountId}/payescheme/{payeScheme.Replace("/", "%2f")}");
            }
        }
        public async Task ThenResponseShouldHaveAccountAgreementTypeSetToUnknown()
        {
            //Arrange
            var response = new GetEmployerAccountDetailByHashedIdResponse
            {
                Account = new AccountDetail
                {
                    AccountAgreementTypes = new List <AgreementType>()
                }
            };

            _mediator
            .Setup(x => x.SendAsync(It.IsAny <GetEmployerAccountDetailByHashedIdQuery>()))
            .ReturnsAsync(response)
            .Verifiable("Get account was not called");

            //Act
            var result = await _orchestrator.GetAccount("AVC123");

            //Assert
            Assert.AreEqual(AccountAgreementType.Unknown, result.AccountAgreementType);
        }