public static void CreatePriceTypeCsvAsync_ArgumentsAreNull_ReturnNullArgumentException(bool hasStream, bool hasOrder)
        {
            var context = CreatePurchasingDocumentServiceTestContext.Setup();

            Assert.ThrowsAsync <ArgumentNullException>(() =>
                                                       context.CreatePurchasingDocumentService.CreateCsvAsync(
                                                           hasStream ? new MemoryStream() : null,
                                                           hasOrder ? OrderBuilder.Create().Build() : null));
        }
        public static void Constructor_NullParameter_ThrowsArgumentNullException(bool hasPatientCsvWriter, bool hasPriceTypeCsvWriter)
        {
            var context = CreatePurchasingDocumentServiceTestContext.Setup();

            var builder = CreatePurchasingDocumentServiceBuilder
                          .Create()
                          .WithPatientNumbersCsvWriter(hasPatientCsvWriter ? context.PatientCsvWriterMock.Object : null)
                          .WithPriceTypeCsvWriter(hasPriceTypeCsvWriter ? context.PriceCsvWriterMock.Object : null);

            Assert.Throws <ArgumentNullException>(() => builder.Build());
        }
        public static async Task CreatePriceTypeCsvAsync_DocumentIsCreated_WriteRecordsAsyncCalledOnce()
        {
            var context = CreatePurchasingDocumentServiceTestContext.Setup();

            await using var stream = new MemoryStream();
            var order = OrderBuilder.Create().Build();

            await context.CreatePurchasingDocumentService.CreateCsvAsync(stream, order);

            context.PriceCsvWriterMock.Verify(
                w => w.WriteRecordsAsync(It.IsAny <Stream>(), It.IsAny <IEnumerable <OdooOrderItem> >()));
        }