public async Task ThenTheAuditCommandIsCalledWhenTheCreateInvitationCommandIsValid()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _mediator.Verify(x => x.SendAsync(It.Is <CreateAuditCommand>(c =>
                                                                         c.EasAuditMessage.ChangedProperties.SingleOrDefault(y => y.PropertyName.Equals("Ref") && y.NewValue.Equals(command.Empref)) != null &&
                                                                         c.EasAuditMessage.ChangedProperties.SingleOrDefault(y => y.PropertyName.Equals("AccessToken") && y.NewValue.Equals(command.AccessToken)) != null &&
                                                                         c.EasAuditMessage.ChangedProperties.SingleOrDefault(y => y.PropertyName.Equals("RefreshToken") && y.NewValue.Equals(command.RefreshToken)) != null &&
                                                                         c.EasAuditMessage.ChangedProperties.SingleOrDefault(y => y.PropertyName.Equals("Name") && y.NewValue.Equals(command.EmprefName)) != null
                                                                         )));
            _mediator.Verify(x => x.SendAsync(It.Is <CreateAuditCommand>(c =>
                                                                         c.EasAuditMessage.Description.Equals($"Paye scheme {command.Empref} added to account {ExpectedAccountId}"))));
            _mediator.Verify(x => x.SendAsync(It.Is <CreateAuditCommand>(c =>
                                                                         c.EasAuditMessage.RelatedEntities.SingleOrDefault(y => y.Id.Equals(ExpectedAccountId.ToString()) && y.Type.Equals("Account")) != null
                                                                         )));
            _mediator.Verify(x => x.SendAsync(It.Is <CreateAuditCommand>(c =>
                                                                         c.EasAuditMessage.AffectedEntity.Id.Equals(command.Empref.ToString()) &&
                                                                         c.EasAuditMessage.AffectedEntity.Type.Equals("Paye")
                                                                         )));
        }
コード例 #2
0
        public async Task ThenTheMembershipRepositoryIsCheckedToMakeSureTheUserIsAnAccountOwner()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _validator.ValidateAsync(command);

            //Assert
            _membershiprepository.Verify(x => x.GetCaller(command.HashedAccountId, command.ExternalUserId), Times.Once);
        }
コード例 #3
0
        public async Task ThenAMessageIsQueuedForTheRefreshEmployerLevyService()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _refreshEmployerLevyService.Verify(x => x.QueueRefreshLevyMessage(ExpectedAccountId, command.Empref));
        }
コード例 #4
0
        public async Task ThenAMessageIsAddedToTheQueueToRefreshTheLevyData()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _messagePublisher.Verify(x => x.PublishAsync(It.Is <EmployerRefreshLevyQueueMessage>(c => c.AccountId.Equals(ExpectedAccountId) && c.PayeRef.Equals(command.Empref))));
        }
コード例 #5
0
        public async Task ThenTheCommandIsValidIfAllFieldsArePopulatedAndTheUserIsAnOwner()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create(ExpectedOwnerUserId);

            //Act
            var actual = await _validator.ValidateAsync(command);

            //Assert
            _membershiprepository.Verify(x => x.GetCaller(command.HashedAccountId, command.ExternalUserId), Times.Once);
            Assert.IsTrue(actual.IsValid());
        }
        public async Task ThenTheRepositoryIsCalledIfTheCommandIsValid()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _accountRepository.Verify(x => x.AddPayeToAccount(
                                          AssertPayeScheme(command)), Times.Once);
        }
コード例 #7
0
        public async Task ThenTheCommandIsInvalidIfTheUserIsNotPartOfTheAccount()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create("ABC");

            //Act
            var actual = await _validator.ValidateAsync(command);

            //Assert
            _membershiprepository.Verify(x => x.GetCaller(command.HashedAccountId, command.ExternalUserId), Times.Once);
            Assert.IsFalse(actual.IsValid());
            Assert.Contains(new KeyValuePair <string, string>("member", "Unauthorised: User not connected to account"), actual.ValidationDictionary);
        }
        public async Task ThenAnEventIsPublishedToNofifyThePayeSchemeHasBeenAdded()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _payeSchemeEventFactory.Verify(x => x.CreatePayeSchemeAddedEvent(command.HashedAccountId, command.Empref));
            _genericEventFactory.Verify(x => x.Create(It.IsAny <PayeSchemeAddedEvent>()), Times.Once);
            _mediator.Verify(x => x.SendAsync(It.IsAny <PublishGenericEventCommand>()));
        }
        public async Task ThenAnAccountLevyStatusCommandIsPublishedForAnAornPaye()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create(aorn: "Aorn");

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _mediator.Verify(x => x.SendAsync(It.Is <AccountLevyStatusCommand>(c =>
                                                                               c.AccountId.Equals(ExpectedAccountId) &&
                                                                               c.ApprenticeshipEmployerType.Equals(ApprenticeshipEmployerType.NonLevy))), Times.Once);
        }
コード例 #10
0
        public async Task ThenAPaymentSchemeAddedEventIsPublished()
        {
            //Arrange
            var command = AddPayeToNewLegalEntityCommandObjectMother.Create();

            //Act
            await _addPayeToAccountCommandHandler.Handle(command);

            //Assert
            _eventPublisher.Events.Should().HaveCount(1);

            var message = _eventPublisher.Events.OfType <AddedPayeSchemeEvent>().Single();

            message.PayeRef.Should().Be(command.Empref);
            message.AccountId.Should().Be(ExpectedAccountId);
            message.UserName.Should().Be(_user.FullName);
            message.UserRef.Should().Be(_user.Ref);
        }