public async Task BookClubPointsServiceHandlesProcessedPurchasedOrderForNewMembership()
        {
            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
                    },
                    new ItemLineRequest
                    {
                        Description = "Book Club Membership",
                        Type        = ItemLineType.Membership,
                        Category    = ItemLineCategory.Book
                    },
                    new ItemLineRequest
                    {
                        Description = "Clean Code",
                        Type        = ItemLineType.Product,
                        Category    = ItemLineCategory.Book
                    }
                }
            };

            IBookClubMembershipRepository fakeRepo = GetFakeBookClubMembershipRepository(null);

            BookClubPointsService sut = new BookClubPointsService(mockMediator.Object, fakeRepo);

            await sut.Handle(processedPurchaseOrder);

            mockMediator.Verify(m => m.Send(It.Is <AwardCustomerPoints>(acp => acp.Points == 10), It.IsAny <CancellationToken>()), Times.Once);
        }