| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | <?php/** * @file * Test Serial functionality. *//** * Class SerialTestCase. */class SerialTestCase extends DrupalWebTestCase {  const CONTENT_TYPE = 'serial_test_content_type';  /**   * @var \SerialFields   */  private $fields;  /**   * {@inheritdoc}   */  public static function getInfo() {    return array(      'name' => 'Serial Field',      'group' => 'Field',      'description' => 'Testing serial field functionality.',    );  }  /**   * {@inheritdoc}   */  public function setUp() {    parent::setUp('serial', 'comment');    $this->drupalCreateContentType(array('type' => static::CONTENT_TYPE));    $this->fields = new SerialFields(array(      'serial' => array(        'type' => SERIAL_FIELD_TYPE,        'label' => 'Serial',        'settings' => array(),      ),    ));    $this->fields      ->create()      // Attach serial field to content type and comments form.      ->attach('node', static::CONTENT_TYPE)      ->attach('comment', 'comment_node_' . static::CONTENT_TYPE);    // Grant all known permissions for user.    $this->drupalLogin($this->drupalCreateUser(array_keys(module_invoke_all('permission'))));  }  /**   * Create N nodes and attach N comments for the last.   *   * @param int $nodes   *   Number of nodes for creation.   * @param int $comments   *   Number of comments for creation.   */  public function testSerial($nodes = 15, $comments = 6) {    for ($i = 0; $i < $nodes; $i++) {      // Open form for add new node.      $this->visit('node/add/' . str_replace('_', '-', static::CONTENT_TYPE));      // Submit new node with filled title.      $this->drupalPost(NULL, array('title' => "Node $i"), t('Save'));    }    // Go to editing of the last created node.    $this->visit("node/$nodes/edit");    // Check that last created node number equal to serial ID.    $this->assertSerialField($nodes);    // Go to viewing of the last created node.    $this->visit("node/$nodes");    // Post comments for last created node.    for ($i = 0; $i < $comments; $i++) {      $this->drupalPost(NULL, array(self::fieldName('comment_body') => "Comment $i"), t('Save'));    }    // Go to editing of the last created comment.    $this->visit("comment/$comments/edit");    // Ensure the last-posted comment number equal to serial ID.    $this->assertSerialField($comments);  }  /**   * Assert number with value of the serial field on the page.   *   * @param int $number   *   The number for verification.   */  private function assertSerialField($number) {    $this->assertFieldByXPath($this->constructFieldXpath('name', self::fieldName('serial')), $number);  }  /**   * Visit path and assert response code.   *   * @param string $path   *   Path to visit.   * @param int $code   *   Expected response code.   */  private function visit($path, $code = 200) {    $this->drupalGet($path);    $this->assertResponse($code);  }  /**   * Convert Drupal field name into HTML.   *   * @param string $name   *   Drupal field name.   * @param string $column   *   Field column.   *   * @return string   *   HTML input name.   */  private static function fieldName($name, $column = 'value') {    return $name . '[' . LANGUAGE_NONE . '][0][' . $column . ']';  }}
 |