示例#1
0
            public async Task InsertCost()
            {
                //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
                CostBuilderMock.Verify(e => e.CreateCost(costUser, requestModel), Times.Once);
                EFContext.Cost.Should().HaveCount(1);
                EFContext.NotificationSubscriber.Should().HaveCount(0);
                Mapper.Verify(m => m.Map <CostModel>(It.Is <Cost>(c => c != null && c.Status == CostStageRevisionStatus.Draft)));
            }
示例#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);
            }
示例#3
0
            public async Task InsertDependentItems()
            {
                // Arrange
                var adCostNumber = "adCostNumber";
                var templateId   = Guid.NewGuid();
                var requestModel = CreateCostModel(templateId);

                var supportingDocumentModel = new SupportingDocumentModel();
                var costStageRevisionModel  = new CostStageRevisionModel
                {
                    StageDetails        = @"{ ""abc"": ""abc"" }",
                    SupportingDocuments = new[] { supportingDocumentModel }
                };
                var costStageModel = new CostStageModel
                {
                    Revisions = new[] { costStageRevisionModel }
                };
                var costModel = new CostBuilderModel
                {
                    Stages = new[] { costStageModel }
                };
                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);
                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();

                // Act
                await CostService.CreateCost(User, requestModel);

                // Assert
                EFContext.Cost.Should().HaveCount(1);
                var cost = EFContext.Cost.First();

                EFContext.CostStage.Should().HaveCount(1);
                var costStage = EFContext.CostStage.First();

                costStage.CostId.Should().Be(cost.Id);

                EFContext.CostStageRevision.Should().HaveCount(1);
                var costStageRevision = EFContext.CostStageRevision.First();

                costStageRevision.CostStageId.Should().Be(costStage.Id);
                costStageRevision.StageDetails.Should().NotBeNull();
                costStageRevision.ProductDetails.Should().NotBeNull();
                costStageRevision.SupportingDocuments.Should().NotBeNull();
            }