public void GivenCustomerShipment_WhenAddingAndRemovingPackages_ThenPackageSequenceNumberIsRecalculated() { var shipment = new CustomerShipmentBuilder(this.DatabaseSession) .WithShipToAddress(new PostalAddresses(this.DatabaseSession).Extent().First) .WithShipToParty(new Organisations(this.DatabaseSession).Extent().First) .WithShipmentMethod(new ShipmentMethods(this.DatabaseSession).Boat) .Build(); var package1 = new ShipmentPackageBuilder(this.DatabaseSession).Build(); shipment.AddShipmentPackage(package1); this.DatabaseSession.Derive(true); Assert.AreEqual(1, package1.SequenceNumber); var package2 = new ShipmentPackageBuilder(this.DatabaseSession).Build(); shipment.AddShipmentPackage(package2); this.DatabaseSession.Derive(true); Assert.AreEqual(2, package2.SequenceNumber); var package3 = new ShipmentPackageBuilder(this.DatabaseSession).Build(); shipment.AddShipmentPackage(package3); this.DatabaseSession.Derive(true); Assert.AreEqual(3, package3.SequenceNumber); shipment.RemoveShipmentPackage(package1); this.DatabaseSession.Derive(true); Assert.AreEqual(2, package2.SequenceNumber); Assert.AreEqual(3, package3.SequenceNumber); var package4 = new ShipmentPackageBuilder(this.DatabaseSession).Build(); shipment.AddShipmentPackage(package4); this.DatabaseSession.Derive(true); Assert.AreEqual(2, package2.SequenceNumber); Assert.AreEqual(3, package3.SequenceNumber); Assert.AreEqual(4, package4.SequenceNumber); shipment.RemoveShipmentPackage(package4); this.DatabaseSession.Derive(true); var package5 = new ShipmentPackageBuilder(this.DatabaseSession).Build(); shipment.AddShipmentPackage(package5); this.DatabaseSession.Derive(true); Assert.AreEqual(2, package2.SequenceNumber); Assert.AreEqual(3, package3.SequenceNumber); Assert.AreEqual(4, package5.SequenceNumber); }