public async Task Create_Notification_For_Coupa_For_Non_NA_Non_Cyclone_Agency_When_Cost_Total_Amount_Decreased() { //Arrange decimal?previousPaymentAmount = 10.00M; decimal?latestPaymentAmount = 5.00M; //Decreased from 10 var timestamp = DateTime.UtcNow; var cost = new Cost(); var costOwner = new CostUser(); var latestRevision = new CostStageRevision(); var previousRevisionId = Guid.NewGuid(); var latestRevisionId = Guid.NewGuid(); SetupPurchaseOrderCost(cost, latestRevision, costOwner, previousRevisionId, latestRevisionId, PoNumber); var costUsers = new CostNotificationUsers { CostOwner = costOwner }; var previousPaymentResult = new PaymentAmountResult { TotalCostAmount = previousPaymentAmount }; var latestPaymentResult = new PaymentAmountResult { TotalCostAmount = latestPaymentAmount }; PgPaymentServiceMock.Setup(ppsm => ppsm.GetPaymentAmount(previousRevisionId, false)).Returns(Task.FromResult(previousPaymentResult)); PgPaymentServiceMock.Setup(ppsm => ppsm.GetPaymentAmount(latestRevisionId, false)).Returns(Task.FromResult(latestPaymentResult)); //Act IEnumerable <EmailNotificationMessage <CostNotificationObject> > result = await EmailNotificationBuilder.BuildPendingBrandApprovalNotification(costUsers, cost, latestRevision, timestamp); //Assert result.Should().NotBeNull(); var notifications = result.ToArray(); notifications.Should().HaveCount(1); }
public void Init() { EFContext = EFContextFactory.CreateInMemoryEFContext(); var configuration = new MapperConfiguration(config => config.AddProfiles( typeof(NotificationProfile), typeof(PgPurchaseOrderResponse) ) ); IMapper mapper = new Mapper(configuration); var mockUriHelper = new Mock <IApplicationUriHelper>(); _appSettings = new AppSettings(); var appSettingsMock = new Mock <IOptions <AppSettings> >(); appSettingsMock.Setup(s => s.Value).Returns(_appSettings); mockUriHelper.Setup(u => u.GetLink(It.IsAny <ApplicationUriName>(), It.IsAny <string>(), It.IsAny <string>())).Returns(_costUrl); _costStageRevisionServiceMock = new Mock <ICostStageRevisionService>(); _approvalServiceMock = new Mock <IApprovalService>(); _regionsServiceMock = new Mock <IRegionsService>(); _regionsServiceMock.Setup(r => r.GetAsync(_northAmericanRegionId)).Returns(Task.FromResult(new RegionModel { Id = _northAmericanRegionId, Name = "North America" })); _regionsServiceMock.Setup(r => r.GetAsync(_europeRegionId)).Returns(Task.FromResult(new RegionModel { Id = _europeRegionId, Name = "Europe" })); _regionsServiceMock.Setup(r => r.GetAsync(_asiaRegionId)).Returns(Task.FromResult(new RegionModel { Id = _asiaRegionId, Name = "Asia" })); _regionsServiceMock.Setup(r => r.GetGeoRegion(_northAmericanRegionId)).Returns(Task.FromResult(new RegionModel { Id = _northAmericanRegionId, Name = "North America" })); _regionsServiceMock.Setup(r => r.GetGeoRegion(_europeRegionId)).Returns(Task.FromResult(new RegionModel { Id = _europeRegionId, Name = "Europe" })); _regionsServiceMock.Setup(r => r.GetGeoRegion(_asiaRegionId)).Returns(Task.FromResult(new RegionModel { Id = _asiaRegionId, Name = "Asia" })); _costFormServiceMock = new Mock <ICostFormService>(); _customObjectDataServiceMock = new Mock <ICustomObjectDataService>(); _pgPaymentServiceMock = new Mock <IPgPaymentService>(); _costStageServiceMock = new Mock <ICostStageService>(); MetadataItems = new List <MetadataItem>(); MetadataProviderServiceMock = new Mock <IMetadataProviderService>(); MetadataProviderServiceMock.Setup(m => m.Provide(It.IsAny <Guid>())).Returns(Task.FromResult(MetadataItems)); const string brandManagerRoleKey = "Brand Manager"; var brandManagerRole = new BusinessRole { Key = brandManagerRoleKey, Value = BrandManagerRoleValue }; EFContext.BusinessRole.Add(brandManagerRole); EFContext.SaveChanges(); _emailNotificationBuilder = new EmailNotificationBuilder(mapper, mockUriHelper.Object, _costStageRevisionServiceMock.Object, _approvalServiceMock.Object, _regionsServiceMock.Object, appSettingsMock.Object, _costFormServiceMock.Object, _customObjectDataServiceMock.Object, _pgPaymentServiceMock.Object, _costStageServiceMock.Object, MetadataProviderServiceMock.Object, EFContext); }