From afa25ba28b6230ea677b69790f2330c2b11b3a17 Mon Sep 17 00:00:00 2001 From: Marcin Czarnecki Date: Tue, 24 Oct 2023 16:59:12 +0200 Subject: [PATCH] fix(etl-adapter-google-sheet): Fix scenario for empty google sheet. --- .../ETL/Adapter/GoogleSheet/GoogleSheetExtractor.php | 10 ++++++++-- .../Tests/Unit/GoogleSheetExtractorTest.php | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/GoogleSheetExtractor.php b/src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/GoogleSheetExtractor.php index e0885ad65..098691905 100644 --- a/src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/GoogleSheetExtractor.php +++ b/src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/GoogleSheetExtractor.php @@ -38,8 +38,14 @@ public function extract(FlowContext $context) : \Generator $totalRows = 0; /** @var Sheets\ValueRange $response */ $response = $this->service->spreadsheets_values->get($this->spreadsheetId, $cellsRange->toString(), $this->options); - /** @var array[] $values */ - $values = $response->getValues(); + /** + * @var array[] $values + * + * @psalm-suppress RedundantConditionGivenDocblockType, DocblockTypeContradiction + * + * @phpstan-ignore-next-line + */ + $values = $response->getValues() ?? []; if ($this->withHeader && [] !== $values) { /** @var string[] $headers */ diff --git a/src/adapter/etl-adapter-google-sheet/tests/Flow/ETL/Adapter/GoogleSheet/Tests/Unit/GoogleSheetExtractorTest.php b/src/adapter/etl-adapter-google-sheet/tests/Flow/ETL/Adapter/GoogleSheet/Tests/Unit/GoogleSheetExtractorTest.php index b38bf6a76..181f70b65 100644 --- a/src/adapter/etl-adapter-google-sheet/tests/Flow/ETL/Adapter/GoogleSheet/Tests/Unit/GoogleSheetExtractorTest.php +++ b/src/adapter/etl-adapter-google-sheet/tests/Flow/ETL/Adapter/GoogleSheet/Tests/Unit/GoogleSheetExtractorTest.php @@ -83,7 +83,7 @@ public function test_works_for_no_data() : void 20 ); $ValueRangeMock = $this->createMock(Sheets\ValueRange::class); - $ValueRangeMock->method('getValues')->willReturn([]); + $ValueRangeMock->method('getValues')->willReturn(null); $service->spreadsheets_values = ($spreadsheetsValues = $this->createMock(SpreadsheetsValues::class)); $spreadsheetsValues->method('get')->willReturn($ValueRangeMock);