예제 #1
0
            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));
            }
예제 #2
0
            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);
            }