protected CostStageRevisionStatusChanged GetCostRevisionStatusChanged(CostStageRevisionStatus status)
 {
     return(new CostStageRevisionStatusChanged
     {
         AggregateId = Guid.NewGuid(),
         Status = status,
         TimeStamp = DateTime.UtcNow,
         CostStageRevisionId = Guid.NewGuid()
     });
 }
 private CostStageRevisionStatusChanged GetStatusChangedEvent(CostStageRevisionStatus status)
 {
     return(new CostStageRevisionStatusChanged
     {
         AggregateId = Guid.NewGuid(),
         CostStageRevisionId = _costStageRevisionId,
         Status = status,
         BuType = BuType.Pg,
         TimeStamp = DateTime.UtcNow
     });
 }
        protected async Task SetCostStatus(Cost cost, CostStageRevisionStatus status)
        {
            var dbCost = await EFContext.Cost
                         .Include(c => c.LatestCostStageRevision)
                         .FirstOrDefaultAsync(c => c.Id == cost.Id);

            EFContext.Entry(dbCost).Reload();

            dbCost.Status = status;
            dbCost.LatestCostStageRevision.Status = status;

            await EFContext.SaveChangesAsync();
        }
        private CostStageRevisionStatusChanged GetStatusChangedEvent(CostStageRevisionStatus status)
        {
            var evnt = new CostStageRevisionStatusChanged
            {
                AggregateId         = Guid.NewGuid(),
                CostStageRevisionId = _currentCostStageRevisionId,
                Status    = status,
                TimeStamp = DateTime.UtcNow
            };

            _purchaseOrderServiceMock.Setup(po => po.NeedToSendPurchaseOrder(evnt)).ReturnsAsync(true);
            return(evnt);
        }
        public async Task Notify_whenNonCostApprovalStatusChanged_shouldNotNotifyPaperpusher(CostStageRevisionStatus status)
        {
            // Arrange
            var statusChanged = GetStatusChangedEvent(status);

            statusChanged.CostStageRevisionId = Guid.NewGuid();
            _purchaseOrderServiceMock.Setup(a => a.GetPurchaseOrder(It.IsAny <CostStageRevisionStatusChanged>()))
            .ReturnsAsync(new PgPurchaseOrder {
                CostNumber = "CostNumber", PoNumber = "poNumber", PaymentAmount = 0
            });

            // Act
            await _notifier.Notify(statusChanged);

            // Assert
            _paperpusherClientMock.Verify(p => p.SendMessage(It.IsAny <Guid>(), It.IsAny <object>(), It.IsAny <string>()), Times.Never);
        }
        public async Task Notify_whenCostApprovalStatusChanged_shouldNotifyPaperpusher(CostStageRevisionStatus status)
        {
            // Arrange
            var statusChanged = GetStatusChangedEvent(status);

            _paperpusherClientMock.Setup(a => a.SendMessage(It.IsAny <Guid>(), It.IsAny <PgPurchaseOrder>(), It.IsAny <string>()))
            .Returns(Task.FromResult(true));

            _purchaseOrderServiceMock.Setup(b => b.GetPurchaseOrder(It.IsAny <CostStageRevisionStatusChanged>())).ReturnsAsync(new PgPurchaseOrder {
                PaymentAmount = 100
            });

            // Act
            await _notifier.Notify(statusChanged);

            // Assert
            _paperpusherClientMock.Verify(p => p.SendMessage(It.IsAny <Guid>(), It.IsAny <object>(), It.IsAny <string>()), Times.Once);
        }
        public async Task CanEditIONumber_When__Trafficking_FAStageAndStatusIsNotDraft_Should_ReturnFalse(CostStageRevisionStatus status)
        {
            // Arrange
            var costStageObj = new CostStage {
                Key = CostStages.OriginalEstimate.ToString()
            };
            var cost = new Cost
            {
                Id         = Guid.NewGuid(),
                CostStages = new List <CostStage> {
                    costStageObj
                },
                LatestCostStageRevision = new CostStageRevision
                {
                    CostStage = costStageObj
                },
                Status   = status,
                CostType = CostType.Trafficking
            };

            _efContext.Add(cost);
            _efContext.SaveChanges();

            // Act
            var canEditIONumber = await _pgRuleService.CanEditIONumber(cost.Id);

            // Assert
            canEditIONumber.Should().BeFalse();
        }
Esempio n. 8
0
        public async Task GrNumbers_whenMultipleVresionOfCurrentStageAndStageIsNotPendingCancellation_shouldReturnEmptyArray(CostStageRevisionStatus status)
        {
            // Arrange
            var costSubmitted = GetCostRevisionStatusChanged(status);
            var costId        = costSubmitted.AggregateId;
            var cost          = SetupPurchaseOrderView(costId);
            var costStage     = cost.LatestCostStageRevision.CostStage;
            var revision1     = cost.LatestCostStageRevision;
            var grNumber1     = "gr-number-1";

            var revision2 = new CostStageRevision {
                Id = Guid.NewGuid()
            };

            costStage.CostStageRevisions.Add(revision2);
            var grNumber2 = "gr-number-1";

            _customDataServiceMock.Setup(cd => cd.GetCustomData <PgPurchaseOrderResponse>(
                                             It.Is <IEnumerable <Guid> >(ids => ids.Contains(revision1.Id) && ids.Contains(revision2.Id)), CustomObjectDataKeys.PgPurchaseOrderResponse))
            .ReturnsAsync(new List <PgPurchaseOrderResponse>
            {
                new PgPurchaseOrderResponse
                {
                    GrNumber = grNumber1
                },
                new PgPurchaseOrderResponse
                {
                    GrNumber = grNumber2
                }
            });

            // Act
            var purchase = await PgPurchaseOrderService.GetPurchaseOrder(costSubmitted);

            // Assert
            purchase.GrNumbers.Should().NotBeNull();
            purchase.GrNumbers.Should().HaveCount(0);
        }
            public async Task ReturnNull_WhenPreviousRevisionOfTheSameStage_AndStatusIsNotApprovedOrPendingApproval(CostStageRevisionStatus status)
            {
                // Arrange
                var costStageKey = CostStages.FirstPresentation.ToString();
                var costId       = Guid.NewGuid();
                var createdById  = Guid.NewGuid();
                var revision1    = new CostStageRevision
                {
                    Id          = Guid.NewGuid(),
                    CreatedById = createdById,
                    Created     = DateTime.UtcNow,
                    Status      = status
                };
                var revision2 = new CostStageRevision
                {
                    Id          = Guid.NewGuid(),
                    CreatedById = createdById,
                    Created     = DateTime.UtcNow.AddMilliseconds(1)
                };
                var costStage = new CostStage
                {
                    Key  = costStageKey,
                    Cost = new Cost
                    {
                        Id = costId
                    },
                    CostStageRevisions = new List <CostStageRevision> {
                        revision1, revision2
                    }
                };

                EFContext.CostStage.Add(costStage);
                await EFContext.SaveChangesAsync();

                // Act
                var previousRevision = await Service.GetPreviousRevision(revision2.Id);

                // Assert
                previousRevision.Should().BeNull();
            }