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; }
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); }