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") ))); }
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); }
public async Task ThenAMessageIsQueuedForTheRefreshEmployerLevyService() { //Arrange var command = AddPayeToNewLegalEntityCommandObjectMother.Create(); //Act await _addPayeToAccountCommandHandler.Handle(command); //Assert _refreshEmployerLevyService.Verify(x => x.QueueRefreshLevyMessage(ExpectedAccountId, command.Empref)); }
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)))); }
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); }
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); }
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); }