public async Task CreateMaterialRequest_Success() { //adhere var initialRequests = Material1TimberSupplier.MaterialRequests.DeepCopy(); //arrange const decimal amount = 50; var command = new CreateMaterialRequest() { Name = "New timber supplier", SupplierId = Material1TimberSupplier.Id, Items = new List <(Guid, decimal)> { (Material1Timber.Id, amount) }, InitiatorId = GlobalAdmin.Id }; var handler = new CreateMaterialRequestHandler(EntityRepository, EventTransmitter); //act await handler.HandleAsync(command); //assert Assert.That(Material1TimberSupplier.MaterialRequests.Count, Is.EqualTo(initialRequests.Count + 1)); var entities = GetRecordedEntities <MaterialRequest>(EntityRepository, nameof(EntityRepository.AddAsync)); Assert.That(entities.Count, Is.EqualTo(1)); Assert.That(entities[0].ItemsRequested.Count, Is.EqualTo(1)); Assert.That(entities[0].ItemsRequested[0].Article, Is.EqualTo(Material1Timber)); Assert.That(entities[0].ItemsRequested[0].Amount, Is.EqualTo(amount)); Assert.That(entities[0].Status, Is.EqualTo(MaterialRequestStatus.Submitted)); Assert.That(entities[0].Supplier, Is.EqualTo(Material1TimberSupplier)); var events = GetRecordedEvents <DomainEvent <MaterialRequest> >(); Assert.That(events.Count, Is.EqualTo(1)); Assert.That(events[0].Trigger, Is.EqualTo(Trigger.Added)); Assert.That(events[0].Entity, Is.EqualTo(entities[0])); Assert.That(events[0].RaisedBy, Is.EqualTo(command.InitiatorId)); //annul Material1TimberSupplier.MaterialRequests = initialRequests; }
public void CreateMaterialRequest_FailFor_ArticleNotRegisteredWithSupplier() { //arrange var command = new CreateMaterialRequest() { SupplierId = SupplierToArchive.Id, Items = new List <(Guid, decimal)> { (Material1Timber.Id, 50M) }, InitiatorId = GlobalAdmin.Id }; var handler = new CreateMaterialRequestHandler(EntityRepository, EventTransmitter); //assert ()=> act var ex = Assert.ThrowsAsync <DomainException>(async() => await handler.HandleAsync(command)); Assert.That(ex.Message, Is.EqualTo(RequestingUnregisteredArticle(SupplierToArchive, Material1Timber.Id))); Assert.That(GetRecordedEvents <DomainEvent <MaterialRequest> >(), Is.Empty); }