Ejemplo n.º 1
0
        public async Task ChangeShopManager_Success()
        {
            //adhere
            var initialManager = ProductAssemblyShop.Manager;

            //arrange
            var command = new ChangeShopManager
            {
                ShopId       = ProductAssemblyShop.Id,
                NewManagerId = UserWithPermissions.Id,
                InitiatorId  = GlobalAdmin.Id
            };
            var handler = new ChangeShopManagerHandler(EntityRepository, EventTransmitter);

            //act
            await handler.HandleAsync(command);

            //assert
            Assert.That(ProductAssemblyShop.Manager, Is.Not.EqualTo(initialManager));
            Assert.That(ProductAssemblyShop.Manager, Is.EqualTo(UserWithPermissions));

            var events = GetRecordedEvents <ShopManagerChanged>();

            Assert.That(events.Count, Is.EqualTo(1));
            Assert.That(events[0].Trigger, Is.EqualTo(Trigger.Changed));
            Assert.That(events[0].Entity, Is.EqualTo(ProductAssemblyShop));
            Assert.That(events[0].Dismissed, Is.EqualTo(initialManager));
            Assert.That(events[0].RaisedBy, Is.EqualTo(command.InitiatorId));

            //annul
            ProductAssemblyShop.Manager = initialManager;
        }
Ejemplo n.º 2
0
        public void ChangeShopManager_FailFor_TheSameUserBeingAssigned()
        {
            //arrange
            var command = new ChangeShopManager
            {
                ShopId       = ProductAssemblyShop.Id,
                NewManagerId = ManagerOfProductAssemblyShop.Id,
                InitiatorId  = GlobalAdmin.Id
            };
            var handler = new ChangeShopManagerHandler(EntityRepository, EventTransmitter);

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

            Assert.That(ex.Message, Is.EqualTo(SameManagerAssigned(ManagerOfProductAssemblyShop)));
            Assert.That(GetRecordedEvents <DomainEvent <Shop> >(), Is.Empty);
        }