diff --git a/app/Exports/ZipExports/Models/ZipExportBook.php b/app/Exports/ZipExports/Models/ZipExportBook.php index 4f641d25b..39176ded4 100644 --- a/app/Exports/ZipExports/Models/ZipExportBook.php +++ b/app/Exports/ZipExports/Models/ZipExportBook.php @@ -70,7 +70,7 @@ class ZipExportBook extends ZipExportModel foreach ($children as $child) { if ($child instanceof Chapter) { $chapters[] = $child; - } else if ($child instanceof Page) { + } else if ($child instanceof Page && !$child->draft) { $pages[] = $child; } } diff --git a/tests/Exports/ZipExportTest.php b/tests/Exports/ZipExportTest.php index ebe07d052..163828c1b 100644 --- a/tests/Exports/ZipExportTest.php +++ b/tests/Exports/ZipExportTest.php @@ -198,7 +198,7 @@ class ZipExportTest extends TestCase public function test_book_export() { - $book = $this->entities->book(); + $book = $this->entities->bookHasChaptersAndPages(); $book->tags()->saveMany(Tag::factory()->count(2)->make()); $zipResp = $this->asEditor()->get($book->getUrl("/export/zip")); @@ -251,6 +251,35 @@ class ZipExportTest extends TestCase $this->assertCount($chapter->pages()->count(), $chapterData['pages']); } + public function test_draft_pages_are_not_included() + { + $editor = $this->users->editor(); + $entities = $this->entities->createChainBelongingToUser($editor); + $book = $entities['book']; + $page = $entities['page']; + $chapter = $entities['chapter']; + $book->tags()->saveMany(Tag::factory()->count(2)->make()); + + $page->created_by = $editor->id; + $page->draft = true; + $page->save(); + + $zipResp = $this->actingAs($editor)->get($book->getUrl("/export/zip")); + $zip = $this->extractZipResponse($zipResp); + $this->assertCount(0, $zip->data['book']['chapters'][0]['pages'] ?? ['cat']); + + $zipResp = $this->actingAs($editor)->get($chapter->getUrl("/export/zip")); + $zip = $this->extractZipResponse($zipResp); + $this->assertCount(0, $zip->data['chapter']['pages'] ?? ['cat']); + + $page->chapter_id = 0; + $page->save(); + + $zipResp = $this->actingAs($editor)->get($book->getUrl("/export/zip")); + $zip = $this->extractZipResponse($zipResp); + $this->assertCount(0, $zip->data['book']['pages'] ?? ['cat']); + } + public function test_cross_reference_links_are_converted() {