public async Task ChangeOwner_WhenUserAndCostAreValid_RevokeAccessForPreviousOwner() { // Arrange var previousOwner = new CostUser { Id = Guid.NewGuid() }; var costId = Guid.NewGuid(); var cost = new Cost { Id = costId, Owner = previousOwner, CostOwners = new List <CostOwner>(), }; var ownerId = Guid.NewGuid(); var owner = new CostUser { Id = ownerId }; // Act await CostService.ChangeOwner(User, cost, owner); // Assert CostStageRevisionPermissionServiceMock.Verify(p => p.RevokeCostPermission(costId, Roles.CostEditor, new[] { previousOwner }, null, false)); }
public async Task GrandEditPermissionToOwner() { //Setup var adCostNumber = "adCostNumber"; var templateId = Guid.NewGuid(); var requestModel = CreateCostModel(templateId); var costModel = new CostBuilderModel { Stages = new[] { new CostStageModel { Revisions = new [] { new CostStageRevisionModel { SupportingDocuments = new List <SupportingDocumentModel>() } } } } }; var costUser = new CostUser { Id = User.Id, Agency = new Agency { Id = User.AgencyId, } }; var responseMock = new Mock <ICreateCostResponse>(); responseMock.SetupGet(f => f.Cost).Returns(costModel); PgUserServiceMock.Setup(a => a.GrantUsersAccess(It.IsAny <Cost>(), It.IsAny <CreateCostModel>())).Returns(Task.CompletedTask); CostBuilderMock.Setup(e => e.CreateCost(It.IsAny <CostUser>(), It.IsAny <CreateCostModel>())) .ReturnsAsync(responseMock.Object); EFContext.Project.Add(new Project { Id = Guid.NewGuid(), AdCostNumber = adCostNumber }); EFContext.CostUser.Add(costUser); await EFContext.SaveChangesAsync(); PermissionService.Setup(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(new[] { Guid.NewGuid().ToString() }); //Act await CostService.CreateCost(User, requestModel); //Assert CostStageRevisionPermissionServiceMock.Verify(p => p.GrantCostPermission(It.IsAny <Guid>(), Roles.CostEditor, It.Is <IEnumerable <CostUser> >(c => c.Any(i => i == costUser)), BuType.Pg, It.IsAny <Guid?>(), true), Times.Once); }