Added dependency plugins
This commit is contained in:
496
wordpress/wp-content/plugins/wp-graphql/tests/wpunit/NodesTest.php
Executable file
496
wordpress/wp-content/plugins/wp-graphql/tests/wpunit/NodesTest.php
Executable file
@@ -0,0 +1,496 @@
|
||||
<?php
|
||||
|
||||
class NodesTest extends \Codeception\TestCase\WPTestCase {
|
||||
|
||||
public $admin;
|
||||
|
||||
public function setUp() {
|
||||
// before
|
||||
parent::setUp();
|
||||
|
||||
$this->admin = $this->factory()->user->create( [
|
||||
'role' => 'administrator'
|
||||
] );
|
||||
}
|
||||
|
||||
public function tearDown() {
|
||||
|
||||
// then
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testNodeQueryWithVariables() {
|
||||
|
||||
/**
|
||||
* Set up the $args
|
||||
*/
|
||||
$args = array(
|
||||
'post_status' => 'publish',
|
||||
'post_content' => 'Test page content',
|
||||
'post_title' => 'Test Page Title',
|
||||
'post_type' => 'page',
|
||||
'post_author' => $this->admin,
|
||||
);
|
||||
|
||||
/**
|
||||
* Create the page
|
||||
*/
|
||||
$page_id = $this->factory->post->create( $args );
|
||||
|
||||
/**
|
||||
* Create the global ID based on the post_type and the created $id
|
||||
*/
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'page', $page_id );
|
||||
|
||||
/**
|
||||
* Create the query string to pass to the $query
|
||||
*/
|
||||
$query = '
|
||||
query getPageByNode( $id:ID! ) {
|
||||
node( id:$id ) {
|
||||
__typename
|
||||
...on Page {
|
||||
pageId
|
||||
}
|
||||
}
|
||||
}';
|
||||
|
||||
$variables = wp_json_encode( [
|
||||
'id' => $global_id,
|
||||
] );
|
||||
|
||||
/**
|
||||
* Run the GraphQL query
|
||||
*/
|
||||
$actual = do_graphql_request( $query, 'getPageByNode', $variables );
|
||||
|
||||
/**
|
||||
* Establish the expectation for the output of the query
|
||||
*/
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Page',
|
||||
'pageId' => $page_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* testPageNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testPageNodeQuery() {
|
||||
|
||||
/**
|
||||
* Set up the $args
|
||||
*/
|
||||
$args = array(
|
||||
'post_status' => 'publish',
|
||||
'post_content' => 'Test page content',
|
||||
'post_title' => 'Test Page Title',
|
||||
'post_type' => 'page',
|
||||
'post_author' => $this->admin,
|
||||
);
|
||||
|
||||
/**
|
||||
* Create the page
|
||||
*/
|
||||
$page_id = $this->factory->post->create( $args );
|
||||
|
||||
/**
|
||||
* Create the global ID based on the post_type and the created $id
|
||||
*/
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'page', $page_id );
|
||||
|
||||
/**
|
||||
* Create the query string to pass to the $query
|
||||
*/
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
...on Page {
|
||||
pageId
|
||||
}
|
||||
}
|
||||
}";
|
||||
|
||||
/**
|
||||
* Run the GraphQL query
|
||||
*/
|
||||
$actual = do_graphql_request( $query, '', '' );
|
||||
|
||||
/**
|
||||
* Establish the expectation for the output of the query
|
||||
*/
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Page',
|
||||
'pageId' => $page_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testPostNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testPostNodeQuery() {
|
||||
|
||||
$args = array(
|
||||
'post_status' => 'publish',
|
||||
'post_content' => 'Test post content',
|
||||
'post_title' => 'Test post Title',
|
||||
'post_type' => 'post',
|
||||
'post_author' => $this->admin,
|
||||
);
|
||||
|
||||
$post_id = $this->factory->post->create( $args );
|
||||
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'post', $post_id );
|
||||
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
... on Post {
|
||||
postId
|
||||
}
|
||||
}
|
||||
}";
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Post',
|
||||
'postId' => $post_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testAttachmentNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testAttachmentNodeQuery() {
|
||||
|
||||
$args = array(
|
||||
'post_status' => 'inherit',
|
||||
'post_content' => 'Test attachment content',
|
||||
'post_title' => 'Test attachment Title',
|
||||
'post_type' => 'attachment',
|
||||
'post_author' => $this->admin,
|
||||
);
|
||||
|
||||
$attachment_id = $this->factory->post->create( $args );
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'attachment', $attachment_id );
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
...on MediaItem {
|
||||
mediaItemId
|
||||
}
|
||||
}
|
||||
}";
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'MediaItem',
|
||||
'mediaItemId' => $attachment_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testPluginNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testPluginNodeQuery() {
|
||||
|
||||
$plugin_name = 'Hello Dolly';
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'plugin', $plugin_name );
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
... on Plugin {
|
||||
name
|
||||
}
|
||||
}
|
||||
}";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Plugin',
|
||||
'name' => $plugin_name,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testThemeNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testThemeNodeQuery() {
|
||||
|
||||
$theme_slug = 'twentyseventeen';
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'theme', $theme_slug );
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
...on Theme{
|
||||
slug
|
||||
}
|
||||
}
|
||||
}";
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Theme',
|
||||
'slug' => $theme_slug,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testUserNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testUserNodeQuery() {
|
||||
|
||||
$user_args = array(
|
||||
'role' => 'editor',
|
||||
'user_email' => 'graphqliscool@wpgraphql.com',
|
||||
);
|
||||
|
||||
$user_id = $this->factory->user->create( $user_args );
|
||||
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'user', $user_id );
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
...on User{
|
||||
userId
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'User',
|
||||
'userId' => $user_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* testCommentNodeQuery
|
||||
*
|
||||
* @since 0.0.5
|
||||
*/
|
||||
public function testCommentNodeQuery() {
|
||||
|
||||
$user_args = array(
|
||||
'role' => 'editor',
|
||||
'user_email' => 'graphqliscool@wpgraphql.com',
|
||||
);
|
||||
|
||||
$user_id = $this->factory->user->create( $user_args );
|
||||
|
||||
$comment_args = array(
|
||||
'user_id' => $user_id,
|
||||
'comment_content' => 'GraphQL is really awesome, dude!',
|
||||
);
|
||||
$comment_id = $this->factory->comment->create( $comment_args );
|
||||
|
||||
$global_id = \GraphQLRelay\Relay::toGlobalId( 'comment', $comment_id );
|
||||
$query = "
|
||||
query {
|
||||
node(id: \"{$global_id}\") {
|
||||
__typename
|
||||
...on Comment{
|
||||
commentId
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'__typename' => 'Comment',
|
||||
'commentId' => $comment_id,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests querying for a single post node
|
||||
*/
|
||||
public function testSuccessfulPostTypeResolver() {
|
||||
|
||||
$query = "
|
||||
{
|
||||
node(id:\"cG9zdFR5cGU6cG9zdA==\"){
|
||||
...on PostType {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'name' => 'post',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests querying for a single post node where the post id doesn't exist
|
||||
*/
|
||||
public function testUnsuccessfulPostTypeResolver() {
|
||||
|
||||
$query = "
|
||||
{
|
||||
node(id:\"cG9zdFR5cGU6dGVzdA==\"){
|
||||
...on PostType {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$this->assertArrayHasKey( 'errors', $actual );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests querying for a single taxonomy node
|
||||
*/
|
||||
public function testSuccessfulTaxonomyResolver() {
|
||||
|
||||
$query = "
|
||||
{
|
||||
node(id:\"dGF4b25vbXk6Y2F0ZWdvcnk=\"){
|
||||
...on Taxonomy {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$expected = [
|
||||
'data' => [
|
||||
'node' => [
|
||||
'name' => 'category',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals( $expected, $actual );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests querying for a single taxonomy node where the ID doesn't exist
|
||||
*/
|
||||
public function testUnsuccessfulTaxonomyResolver() {
|
||||
|
||||
$query = "
|
||||
{
|
||||
node(id:\"dGF4b25vbXk6dGVzdA==\"){
|
||||
...on Taxonomy {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$this->assertArrayHasKey( 'errors', $actual );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests querying for a single comment node where the comment ID doesn't exist
|
||||
*/
|
||||
public function testUnsuccessfulCommentResolver() {
|
||||
|
||||
$query = "
|
||||
{
|
||||
node(id:\"Y29tbWVudDo5OTk5\"){
|
||||
...on Comment {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
$actual = do_graphql_request( $query );
|
||||
|
||||
$this->assertArrayHasKey( 'errors', $actual );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user