コード例 #1
0
        public async Task SetPrimaryBom_Success()
        {
            //adhere
            var initial = Component2Horizontal.BillsOfMaterial.DeepCopy();

            //arrange
            var bom     = Component2Horizontal.BillsOfMaterial.Single(b => !b.Primary);
            var command = new SetPrimaryBillOfMaterial()
            {
                BomId       = bom.Id,
                ArticleId   = Component2Horizontal.Id,
                InitiatorId = GlobalAdmin.Id
            };
            var handler = new SetPrimaryBillOfMaterialHandler(EntityRepository, EventTransmitter);

            //act
            await handler.HandleAsync(command);

            //assert
            var events = GetRecordedEvents <DomainEvent <BillOfMaterial> >();

            Assert.That(events.Count, Is.EqualTo(2));
            Assert.That(events.Select(e => e.Entity), Is.EquivalentTo(Component2Horizontal.BillsOfMaterial));
            Assert.That(events.All(e => e.Trigger == Trigger.Changed), Is.True);
            Assert.That(events.All(e => e.RaisedBy == command.InitiatorId), Is.True);
            Assert.That(Component2Horizontal.PrimaryBillOfMaterial, Is.EqualTo(bom));

            //annul
            Component2Horizontal.BillsOfMaterial = initial;
        }
コード例 #2
0
        public void SetPrimaryBom_FailFor_BomIsAlreadyPrimary()
        {
            //arrange
            var command = new SetPrimaryBillOfMaterial()
            {
                BomId       = Component2Horizontal.PrimaryBillOfMaterial.Id,
                ArticleId   = Component2Horizontal.Id,
                InitiatorId = GlobalAdmin.Id
            };
            var handler = new SetPrimaryBillOfMaterialHandler(EntityRepository, EventTransmitter);

            //assert () => act
            var ex = Assert.ThrowsAsync <DomainException>(async() => await handler.HandleAsync(command));

            Assert.That(ex.Message, Is.EqualTo(BomIsAlreadyPrimary(Component2Horizontal.PrimaryBillOfMaterial)));
            Assert.That(GetRecordedEvents <DomainEvent <BillOfMaterial> >(), Is.Empty);
        }