示例#1
0
        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;
        }
示例#2
0
        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);
        }