public async Task GrantPermission_Success() { //arrange var command = new GrantPermission { UserId = ManagerOfProductAssemblyShop.Id, ResourceId = ProduceInventoryItemHandler.Id, InitiatorId = GlobalAdmin.Id }; var handler = new GrantPermissionHandler(EntityRepository, PermissionRepo, EventTransmitter); //act await handler.HandleAsync(command); //assert var entities = GetRecordedEntities <Permission>(PermissionRepo, nameof(PermissionRepo.AddAsync)); Assert.That(entities.Count, Is.EqualTo(1)); Assert.That(entities[0].Resource, Is.EqualTo(ProduceInventoryItemHandler)); Assert.That(entities[0].User, Is.EqualTo(ManagerOfProductAssemblyShop)); var events = GetRecordedEvents <DomainEvent <Permission> >(); 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)); }
public void GrantPermission_FailFor_PermissionAlreadyGranted() { //arrange var command = new GrantPermission { UserId = UserWithPermissions.Id, ResourceId = ProduceInventoryItemHandler.Id, InitiatorId = GlobalAdmin.Id }; var handler = new GrantPermissionHandler(EntityRepository, PermissionRepo, EventTransmitter); //assert () => act var ex = Assert.ThrowsAsync <DomainException>(async() => await handler.HandleAsync(command)); Assert.That(ex.Message, Is.EqualTo(DuplicatingGrant(UserWithPermissionsOnProduceInventoryItemHandler))); Assert.That(GetRecordedEvents <DomainEvent <Permission> >(), Is.Empty); }