Version 1
[yaffs-website] / web / modules / contrib / entity_browser / tests / src / FunctionalJavascript / PagerElementTest.php
1 <?php
2
3 namespace Drupal\Tests\entity_browser\FunctionalJavascript;
4
5 use Drupal\Core\Field\FieldStorageDefinitionInterface;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\field\Entity\FieldStorageConfig;
8
9 /**
10  * Tests entity browser pager form element.
11  *
12  * @group entity_browser
13  */
14 class PagerElementTest extends EntityBrowserJavascriptTestBase {
15
16   /**
17    * Modules to enable.
18    *
19    * @var array
20    */
21   public static $modules = [
22     'entity_browser_test',
23     'node',
24     'field_ui',
25     'views_ui',
26     'system',
27   ];
28
29   /**
30    * {@inheritdoc}
31    */
32   protected function setUp() {
33     parent::setUp();
34
35     $this->drupalCreateContentType(['type' => 'foo', 'name' => 'Foo']);
36
37     FieldStorageConfig::create([
38       'field_name' => 'field_reference_pager',
39       'type' => 'entity_reference',
40       'entity_type' => 'node',
41       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
42       'settings' => [
43         'target_type' => 'node',
44       ],
45     ])->save();
46
47
48     FieldConfig::create([
49       'field_name' => 'field_reference_pager',
50       'entity_type' => 'node',
51       'bundle' => 'foo',
52       'label' => 'Reference',
53       'settings' => [],
54     ])->save();
55
56     /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
57     $form_display = $this->container->get('entity_type.manager')
58       ->getStorage('entity_form_display')
59       ->load('node.foo.default');
60
61     $form_display->setComponent('field_reference_pager', [
62       'type' => 'entity_browser_entity_reference',
63       'settings' => [
64         'entity_browser' => 'pager',
65         'field_widget_display' => 'label',
66         'open' => TRUE,
67       ],
68     ])->save();
69
70     $account = $this->drupalCreateUser([
71       'access pager entity browser pages',
72       'create foo content',
73       'access content',
74     ]);
75     $this->drupalLogin($account);
76   }
77
78   /**
79    * Test entity browser pager form element.
80    */
81   public function testPagerElement() {
82     $this->drupalGet('/entity-browser/iframe/pager');
83     // Go through pager next and previous buttons and assert pages.
84     $this->assertSession()->pageTextContains('Current page reported by the element is: 1.');
85     $this->assertSession()->buttonExists('‹ Previous')->hasAttribute('disabled');
86     $this->assertSession()->pageTextContains('Page 1');
87     $this->assertSession()->buttonExists('Next ›');
88     $this->getSession()->getPage()->pressButton('Next ›');
89     $this->assertSession()->pageTextContains('Current page reported by the element is: 2.');
90     $this->assertSession()->pageTextContains('Page 2');
91     $this->getSession()->getPage()->pressButton('Next ›');
92     $this->assertSession()->pageTextContains('Current page reported by the element is: 3.');
93     $this->assertSession()->pageTextContains('Page 3');
94     $this->getSession()->getPage()->pressButton('Next ›');
95     $this->assertSession()->pageTextContains('Current page reported by the element is: 4.');
96     $this->assertSession()->pageTextContains('Page 4');
97     $this->assertSession()->buttonExists('Next ›')->hasAttribute('disabled');
98
99     // Go back.
100     $this->getSession()->getPage()->pressButton('‹ Previous');
101     $this->assertSession()->pageTextContains('Current page reported by the element is: 3.');
102     $this->assertSession()->pageTextContains('Page 3');
103     $this->getSession()->getPage()->pressButton('‹ Previous');
104     $this->assertSession()->pageTextContains('Current page reported by the element is: 2.');
105     $this->assertSession()->pageTextContains('Page 2');
106     $this->getSession()->getPage()->pressButton('‹ Previous');
107     $this->assertSession()->pageTextContains('Current page reported by the element is: 1.');
108     $this->assertSession()->pageTextContains('Page 1');
109     $this->assertSession()->buttonExists('‹ Previous')->hasAttribute('disabled');
110
111     // Test reset button.
112     $this->getSession()->getPage()->pressButton('Last page');
113     $this->assertSession()->pageTextContains('Current page reported by the element is: 4.');
114     $this->assertSession()->pageTextContains('Page 4');
115     $this->getSession()->getPage()->pressButton('First page');
116     $this->assertSession()->pageTextContains('Current page reported by the element is: 1.');
117     $this->assertSession()->pageTextContains('Page 1');
118   }
119
120 }