public async Task Accept() { AcceptPurchaseOrder acceptPurchase = new AcceptPurchaseOrder { CustomerId = CustomerId, PurchaseOrderId = Id, Items = ItemLines.Select(il => new ItemLineRequest { Description = il.Description, Type = il.Type }).ToList() }; AcceptedPurchaseOrder response = await _Mediator.Send(acceptPurchase); Accepted = response.Accepted; if (response.Accepted) { ProcessedPurchaseOrder processedPurchaseOrder = new ProcessedPurchaseOrder { CustomerId = CustomerId, PurchaseOrderId = Id, Items = ItemLines.Select(il => new ItemLineRequest { Description = il.Description, Type = il.Type }).ToList() }; await _Mediator.Publish(processedPurchaseOrder); } }
public async Task BookClubPointsServiceHandlesProcessedPurchasedOrderForExistingMembership() { int customerId = 344656; AwardedCustomerPoints awardedCustomerPoints = new AwardedCustomerPoints(); var mockMediator = new Mock <IMediator>(); mockMediator.Setup(m => m.Send(It.IsAny <AwardCustomerPoints>(), It.IsAny <CancellationToken>())) .ReturnsAsync(awardedCustomerPoints) .Verifiable("Awarded book club membership points."); ProcessedPurchaseOrder processedPurchaseOrder = new ProcessedPurchaseOrder { CustomerId = customerId, PurchaseOrderId = 4567890, Items = new List <ItemLineRequest> { new ItemLineRequest { Description = "Comprehensive First Aid Training", Type = ItemLineType.Product, Category = ItemLineCategory.Book }, new ItemLineRequest { Description = "The Girl on the Train", Type = ItemLineType.Product, Category = ItemLineCategory.Video }, } }; IBookClubMembershipRepository fakeRepo = GetFakeBookClubMembershipRepository(BookClubMembership.Create(customerId)); BookClubPointsService sut = new BookClubPointsService(mockMediator.Object, fakeRepo); await sut.Handle(processedPurchaseOrder); mockMediator.Verify(m => m.Send(It.Is <AwardCustomerPoints>(a => a.Points == 5), It.IsAny <CancellationToken>()), Times.Once); }
public async Task VideoClubPointsServiceHandlesProcessedPurchasedOrderForNoMembership() { int customerId = 344656; AwardedCustomerPoints awardedCustomerPoints = new AwardedCustomerPoints(); var mockMediator = new Mock <IMediator>(); mockMediator.Setup(m => m.Send(It.IsAny <AwardCustomerPoints>(), It.IsAny <CancellationToken>())) .ReturnsAsync(awardedCustomerPoints) .Verifiable("Awarded Video club membership points."); ProcessedPurchaseOrder processedPurchaseOrder = new ProcessedPurchaseOrder { CustomerId = customerId, PurchaseOrderId = 4567890, Items = new List <ItemLineRequest> { new ItemLineRequest { Description = "Comprehensive First Aid Training", Type = ItemLineType.Product }, new ItemLineRequest { Description = "The Girl on the Train", Type = ItemLineType.Product }, } }; IVideoClubMembershipRepository fakeRepo = GetFakeVideoClubMembershipRepository(null); VideoClubPointsService sut = new VideoClubPointsService(mockMediator.Object, fakeRepo); await sut.Handle(processedPurchaseOrder); mockMediator.Verify(m => m.Send(It.IsAny <AwardCustomerPoints>(), It.IsAny <CancellationToken>()), Times.Never); }
public async Task Handle(ProcessedPurchaseOrder notification) { if (OrderHasVideos(notification.Items)) { if (OrderHasVideoClubMembership(notification.Items) || CustomerHasMembership(notification.CustomerId)) { int points = GetVideoPoints(notification.Items); AwardCustomerPoints awardCustomerPoints = new AwardCustomerPoints { CustomerId = notification.CustomerId, Points = points }; var response = await _Mediator.Send(awardCustomerPoints); } } }