From bebf17a1c4a253498e84bd00584db7a6ee4aa810 Mon Sep 17 00:00:00 2001 From: Esa-Matti Suuronen <esa-matti@suuronen.org> Date: Wed, 30 Sep 2020 18:39:50 +0300 Subject: [PATCH] Add preview tests --- tests/wpunit/PostPreviewQueryTest.php | 119 ++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 tests/wpunit/PostPreviewQueryTest.php diff --git a/tests/wpunit/PostPreviewQueryTest.php b/tests/wpunit/PostPreviewQueryTest.php new file mode 100644 index 0000000..5c4049d --- /dev/null +++ b/tests/wpunit/PostPreviewQueryTest.php @@ -0,0 +1,119 @@ +<?php + +// XXX: Can we autoload this somehow? +require_once __DIR__ . '/PolylangUnitTestCase.php'; + +class PostObjectQueryTest extends PolylangUnitTestCase +{ + static function wpSetUpBeforeClass() + { + parent::wpSetUpBeforeClass(); + + self::set_default_language('en_US'); + self::create_language('en_US'); + self::create_language('fr_FR'); + self::create_language('fi'); + self::create_language('de_DE_formal'); + self::create_language('es_ES'); + } + + public function setUp(): void + { + parent::setUp(); + } + + public function testCanHaveLanguageField() + { + $post_id = $this->factory()->post->create([ + 'post_title' => 'Original post', + 'post_content' => '', + 'post_type' => 'post', + 'post_status' => 'publish', + ]); + pll_set_post_language($post_id, 'fi'); + + $preview_id = $this->factory()->post->create([ + 'post_title' => 'Preview post', + 'post_content' => 'Preview Content', + 'post_type' => 'revision', + 'post_status' => 'inherit', + 'post_parent' => $post_id, + ]); + pll_set_post_language($preview_id, 'en'); + + $query = " + query Preview { + post(id: \"$post_id\", idType: DATABASE_ID, asPreview: true) { + title + language { + code + } + } + } + "; + + wp_set_current_user(1); + $result = do_graphql_request($query); + $this->assertArrayNotHasKey('errors', $result, print_r($result, true)); + $this->assertEquals($result['data']['post']['language']['code'], 'EN'); + } + + public function testCanFetchTranslatedVersions() + { + $fi_post_id = wp_insert_post([ + 'post_title' => 'Finnish post version', + 'post_content' => '', + 'post_type' => 'post', + 'post_status' => 'publish', + ]); + pll_set_post_language($fi_post_id, 'fi'); + + $en_post_id = wp_insert_post([ + 'post_title' => 'English post version', + 'post_content' => '', + 'post_type' => 'post', + 'post_status' => 'publish', + ]); + pll_set_post_language($en_post_id, 'en'); + + pll_save_post_translations([ + 'en' => $en_post_id, + 'fi' => $fi_post_id, + ]); + + $preview_id = $this->factory()->post->create([ + 'post_title' => 'Preview post', + 'post_content' => 'Preview Content', + 'post_type' => 'revision', + 'post_status' => 'inherit', + 'post_parent' => $en_post_id, + ]); + + $query = " + query Preview { + post(id: \"$en_post_id\", idType: DATABASE_ID, asPreview: true) { + title + translations { + title + } + } + } + "; + + wp_set_current_user(1); + $data = do_graphql_request($query); + $this->assertArrayNotHasKey('errors', $data, print_r($data, true)); + error_log(print_r($data, true)); + + $expected = [ + 'title' => 'Preview post', + 'translations' => [ + [ + 'title' => 'Finnish post version', + ], + ], + ]; + + $this->assertEquals($expected, $data['data']['post']); + } +}