Tests for fetch_only API param (fixes #54)
This commit is contained in:
parent
3dfe203476
commit
b209339daa
|
@ -178,6 +178,159 @@ class TAINACAN_REST_Items_Controller extends TAINACAN_UnitApiTestCase {
|
|||
$this->assertNotEquals($item->get_title(), $data['title']);
|
||||
$this->assertEquals('SCRUM e XP', $data['title']);
|
||||
}
|
||||
|
||||
function test_fetch_only() {
|
||||
|
||||
$collection = $this->tainacan_entity_factory->create_entity(
|
||||
'collection',
|
||||
array(
|
||||
'name' => 'Agile',
|
||||
'description' => 'Agile methods',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$private_meta = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'private_meta',
|
||||
'status' => 'publish',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'private'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$public_meta = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'public_meta',
|
||||
'status' => 'publish',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$discarded = $this->tainacan_entity_factory->create_entity(
|
||||
'metadatum',
|
||||
array(
|
||||
'name' => 'discarded',
|
||||
'status' => 'publish',
|
||||
'collection' => $collection,
|
||||
'metadata_type' => 'Tainacan\Metadata_Types\Text',
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$item1 = $this->tainacan_entity_factory->create_entity(
|
||||
'item',
|
||||
array(
|
||||
'title' => 'Lean Startup',
|
||||
'description' => 'Um processo ágil de criação de novos negócios.',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$item2 = $this->tainacan_entity_factory->create_entity(
|
||||
'item',
|
||||
array(
|
||||
'title' => 'SCRUM',
|
||||
'description' => 'Um framework ágil para gerenciamento de tarefas.',
|
||||
'collection' => $collection,
|
||||
'status' => 'publish'
|
||||
),
|
||||
true
|
||||
);
|
||||
|
||||
$itemMetaRepo = \Tainacan\Repositories\Item_Metadata::get_instance();
|
||||
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item1, $public_meta);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item1, $private_meta);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item1, $discarded);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item2, $public_meta);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item2, $private_meta);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
$newMeta = new \Tainacan\Entities\Item_Metadata_Entity($item2, $discarded);
|
||||
$newMeta->set_value('test');
|
||||
$newMeta->validate();
|
||||
$itemMetaRepo->insert($newMeta);
|
||||
|
||||
|
||||
$attributes = [
|
||||
'fetch_only' => [
|
||||
'meta' => [
|
||||
$public_meta->get_id(),
|
||||
$private_meta->get_id()
|
||||
]
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
// First without fetch only
|
||||
$request = new \WP_REST_Request(
|
||||
'GET', $this->namespace . '/items'
|
||||
);
|
||||
$response = $this->server->dispatch($request);
|
||||
$data = $response->get_data();
|
||||
|
||||
$this->assertEquals( 2, sizeof($data) );
|
||||
$this->assertEquals( 5, sizeof($data[0]['metadata']) );
|
||||
|
||||
// Fetch only as admin
|
||||
$request = new \WP_REST_Request(
|
||||
'GET', $this->namespace . '/items'
|
||||
);
|
||||
$request->set_query_params($attributes);
|
||||
$response = $this->server->dispatch($request);
|
||||
$data = $response->get_data();
|
||||
|
||||
|
||||
$this->assertEquals( 2, sizeof($data) );
|
||||
$this->assertEquals( 2, sizeof($data[0]['metadata']) );
|
||||
|
||||
|
||||
////
|
||||
|
||||
$new_user = $this->factory()->user->create(array( 'role' => 'subscriber' ));
|
||||
wp_set_current_user($new_user);
|
||||
|
||||
// Fetch only as subscriber
|
||||
$request = new \WP_REST_Request(
|
||||
'GET', $this->namespace . '/items'
|
||||
);
|
||||
$request->set_query_params($attributes);
|
||||
$response = $this->server->dispatch($request);
|
||||
$data = $response->get_data();
|
||||
|
||||
$this->assertEquals( 2, sizeof($data) );
|
||||
$this->assertEquals( 1, sizeof($data[0]['metadata']) );
|
||||
$this->assertEquals( 'public_meta', $data[0]['metadata']['public_meta']['name'] );
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue