<?php

/**
 * @file
 * Definition of FileEntityViewsFieldLinkUsageHandlerTest.
 */

/**
 * Tests for file_entity views file usage handlers.
 */
class FileEntityViewsFieldLinkUsageHandlerTest extends FileEntityTestHelper {

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp('views');
  }

  /**
   * {@inheritdoc}
   */
  public static function getInfo() {
    return array(
      'name' => 'File entity views integration: file link usage',
      'description' => 'Test file usage Views field.',
      'group' => 'file_entity',
    );
  }

  /**
   * Test views file usage handlers.
   */
  public function testViewsUsageField() {
    $file = $this->createFileEntity();
    file_usage_add($file, 'foo', 'bar', 1,1);
    file_usage_add($file, 'foo', 'bar', 1,2);
    $file2 = $this->createFileEntity();
    file_usage_add($file2, 'foo', 'bar', 1, 99);

    $view = $this->getTestView();
    $view->set_display();
    $view->pre_execute();
    $view->execute();

    $row = $view->result[0];
    $render = $view->field['usage']->render_link($row, $row);
    $this->assertEqual($render, '1 place');

    $row = $view->result[1];
    $render = $view->field['usage']->render_link($row, $row);
    $this->assertEqual($render, '1 place');

    $view->field['usage']->options['count_entities_once'] = 0;

    $row = $view->result[0];
    $render = $view->field['usage']->render_link($row, $row);
    $this->assertEqual($render, '3 places');

    $row = $view->result[1];
    $render = $view->field['usage']->render_link($row, $row);
    $this->assertEqual($render, '99 places');
  }

  /**
   * Creates a test view containing a file usage field.
   */
  protected function getTestView() {
    $view = new view();
    $view->name = 'file_list';
    $view->description = '';
    $view->tag = 'default';
    $view->base_table = 'file_managed';
    $view->human_name = 'File List';
    $view->core = 7;
    $view->api_version = '3.0';
    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

    /* Display: Master */
    $handler = $view->new_display('default', 'Master', 'default');
    $handler->display->display_options['title'] = 'File List';
    $handler->display->display_options['use_more_always'] = FALSE;
    $handler->display->display_options['access']['type'] = 'perm';
    $handler->display->display_options['cache']['type'] = 'none';
    $handler->display->display_options['query']['type'] = 'views_query';
    $handler->display->display_options['exposed_form']['type'] = 'basic';
    $handler->display->display_options['pager']['type'] = 'none';
    $handler->display->display_options['style_plugin'] = 'default';
    $handler->display->display_options['row_plugin'] = 'fields';
    /* Field: File: Name */
    $handler->display->display_options['fields']['filename']['id'] = 'filename';
    $handler->display->display_options['fields']['filename']['table'] = 'file_managed';
    $handler->display->display_options['fields']['filename']['field'] = 'filename';
    $handler->display->display_options['fields']['filename']['label'] = '';
    $handler->display->display_options['fields']['filename']['alter']['word_boundary'] = FALSE;
    $handler->display->display_options['fields']['filename']['alter']['ellipsis'] = FALSE;
    /* Field: File: Usage link */
    $handler->display->display_options['fields']['usage']['id'] = 'usage';
    $handler->display->display_options['fields']['usage']['table'] = 'file_managed';
    $handler->display->display_options['fields']['usage']['field'] = 'usage';
    $handler->display->display_options['fields']['usage']['count_entities_once'] = 1;
    /* Field: File Usage: Use count */
    $handler->display->display_options['fields']['count']['id'] = 'count';
    $handler->display->display_options['fields']['count']['table'] = 'file_usage';
    $handler->display->display_options['fields']['count']['field'] = 'count';

    /* Display: Page */
    $handler = $view->new_display('page', 'Page', 'page');
    $handler->display->display_options['path'] = 'file-list';

    return $view;
  }

}
