admin = $this->factory()->user->create( [ 'role' => 'admin', 'user_email' => 'test@test.com' ] ); } public function tearDown() { parent::tearDown(); } /** * testPostQuery * * This tests creating a single post with data and retrieving said post via a GraphQL query * * @since 0.0.5 */ public function testAvatarQuery() { /** * Create the global ID based on the post_type and the created $id */ $global_id = \GraphQLRelay\Relay::toGlobalId( 'user', $this->admin ); // Override avatar url to match $this->avatar_test_url() add_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ), 10, 1 ); /** * Create the query string to pass to the $query * Set the size to 0 to make sure that it defaults back to 96 as it has to be a positive * integer */ $query = " query { user(id: \"{$global_id}\") { avatar(size:0 rating:G forceDefault:true) { default, extraAttr, forceDefault, foundAvatar, height, rating, scheme, size, url, width } } }"; /** * Run the GraphQL query */ $actual = do_graphql_request( $query ); /** * Establish the expectation for the output of the query */ $expected = [ 'data' => [ 'user' => [ 'avatar' => [ 'default' => 'mm', 'extraAttr' => null, 'forceDefault' => true, 'foundAvatar' => true, 'height' => 96, 'rating' => 'g', 'scheme' => null, 'size' => 96, 'url' => 'http://test-url.com', 'width' => 96, ], ], ], ]; $this->assertEquals( $expected, $actual ); // Clean up filter usage. remove_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ) ); } /** * testPostQuery * * This tests creating a single post with data and retrieving said post via a GraphQL query * * @since 0.0.5 */ public function testAvatarQueryWithSizeInput() { /** * Create the global ID based on the post_type and the created $id */ $global_id = \GraphQLRelay\Relay::toGlobalId( 'user', $this->admin ); // Override avatar url to match $this->avatar_test_url() add_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ), 10, 1 ); /** * Create the query string to pass to the $query */ $query = " query { user(id: \"{$global_id}\") { avatar(size: 48) { default, extraAttr, forceDefault, foundAvatar, height, rating, scheme, size, url, width } } }"; /** * Run the GraphQL query */ $actual = do_graphql_request( $query ); /** * Establish the expectation for the output of the query */ $expected = [ 'data' => [ 'user' => [ 'avatar' => [ 'default' => 'mm', 'extraAttr' => null, 'forceDefault' => false, 'foundAvatar' => true, 'height' => 48, 'rating' => 'g', 'scheme' => null, 'size' => 48, 'url' => 'http://test-url.com', 'width' => 48, ], ], ], ]; $this->assertEquals( $expected, $actual ); // Clean up filter usage. remove_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ) ); } /** * testPostQuery * * This tests creating a single post with data and retrieving said post via a GraphQL query * * @since 0.0.5 */ public function testAvatarQueryNotFound() { /** * Create the global ID based on the post_type and the created $id */ $global_id = \GraphQLRelay\Relay::toGlobalId( 'user', $this->admin ); // Override avatar url to match $this->avatar_test_url() add_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ), 10, 1 ); add_filter( 'get_avatar_data', array( $this, 'fake_unfound_avatar' ) ); /** * Create the query string to pass to the $query */ $query = " query { user(id: \"{$global_id}\") { avatar(size: 48) { default, extraAttr, forceDefault, foundAvatar, height, rating, scheme, size, url, width } } }"; /** * Run the GraphQL query */ $actual = do_graphql_request( $query ); /** * The avatar should be empty. */ $expected = [ 'data' => [ 'user' => [ 'avatar' => null ], ], ]; $this->assertEquals( $expected, $actual ); // Clean up filter usage. remove_filter( 'get_avatar_url', array( $this, 'avatar_test_url' ) ); remove_filter( 'get_avatar_data', array( $this, 'fake_unfound_avatar' ) ); } public function avatar_test_url( $url ) { return 'http://test-url.com'; } public function fake_unfound_avatar( $args ) { $args['found_avatar'] = false; return $args; } }