public static async Task CreatePriceTypeCsvAsync_InvokesCreateCsvAsync(
            [Frozen] Mock <ICsvStreamWriter <OdooOrderItem> > csvWriter,
            CreatePurchasingDocumentService service,
            Order order)
        {
            var stream = Mock.Of <Stream>();

            await service.CreateCsvAsync(stream, order);

            csvWriter.Verify(
                c => c.WriteRecordsAsync(It.Is <Stream>(s => s == stream), It.IsNotNull <IEnumerable <OdooOrderItem> >()));
        }
        public static async Task CreatePriceTypeCsvAsync_CreatesExpectedPriceType(
            [Frozen] Mock <ICsvStreamWriter <OdooOrderItem> > csvWriter,
            [Frozen] OrderItem item,
            Order order,
            CreatePurchasingDocumentService service)
        {
            item.SetRecipients(new[] { item.OrderItemRecipients[0] });
            order.AddOrUpdateOrderItem(item);

            IReadOnlyList <OdooOrderItem> actualOrderItems = null;

            void SaveOrderItems(Stream s, IEnumerable <OdooOrderItem> orderItems) => actualOrderItems = orderItems.ToList();

            csvWriter
            .Setup(c => c.WriteRecordsAsync(It.IsNotNull <Stream>(), It.IsNotNull <IEnumerable <OdooOrderItem> >()))
            .Callback <Stream, IEnumerable <OdooOrderItem> >(SaveOrderItems);

            await service.CreateCsvAsync(Mock.Of <Stream>(), order);

            actualOrderItems.Should().NotBeNull();
            actualOrderItems.Should().HaveCount(1);
            actualOrderItems[0].Should().BeEquivalentTo(new OdooOrderItem(order.FlattenOrderItems()[0]));
        }