You are here

public function RestfulDiscoveryTestCase::testFieldDiscoveryAllowedValues in RESTful 7.2

Same name and namespace in other branches
  1. 7 tests/RestfulDiscoveryTestCase.test \RestfulDiscoveryTestCase::testFieldDiscoveryAllowedValues()

Field discovery allowed values.

File

tests/RestfulDiscoveryTestCase.test, line 180
Contains RestfulDiscoveryTestCase

Class

RestfulDiscoveryTestCase
Class RestfulDiscoveryTestCase.

Code

public function testFieldDiscoveryAllowedValues() {

  // Add entity reference fields.
  restful_test_add_fields('node', 'article');
  $handler = restful()
    ->getResourceManager()
    ->getPlugin('test_articles:1.2');

  // Create 3 nodes.
  $expected_result = array();
  foreach (array(
    1,
    2,
    3,
  ) as $id) {
    $title = 'article/' . $id;
    $settings = array(
      'title' => $title,
      'type' => 'article',
    );
    $node = $this
      ->drupalCreateNode($settings);
    $expected_result[$node->nid] = $title;
  }

  // Set widget to select list.
  $instance = field_info_instance('node', 'entity_reference_single', 'article');
  $instance['widget']['type'] = 'options_select';
  field_update_instance($instance);
  $handler
    ->setRequest(Request::create('api/v1.2/test_articles', array(), RequestInterface::METHOD_OPTIONS));
  $handler
    ->setPath('');
  $formatter = restful()
    ->getFormatterManager()
    ->negotiateFormatter(NULL);
  $formatter
    ->setResource($handler);
  $result = $formatter
    ->prepare($handler
    ->process());
  $this
    ->assertEqual($result['data'][0]['entity_reference_single']['form_element']['allowed_values'], $expected_result);

  // Set widget to autocomplete.
  $instance['widget']['type'] = 'entityreference_autocomplete';
  field_update_instance($instance);

  // Invalidate public fields cache.
  $handler = restful()
    ->getResourceManager()
    ->getPluginCopy('test_articles:1.2');
  $handler
    ->setRequest(Request::create('api/v1.2/test_articles', array(), RequestInterface::METHOD_OPTIONS));
  $handler
    ->setPath('');
  $formatter = restful()
    ->getFormatterManager()
    ->negotiateFormatter(NULL);
  $formatter
    ->setResource($handler);
  $result = $formatter
    ->prepare($handler
    ->process());
  $this
    ->assertNull($result['data'][0]['entity_reference_single']['form_element']['allowed_values']);
}