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 . ']';
- }
- }
|