X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fviews_ui%2Fsrc%2FTests%2FOverrideDisplaysTest.php;fp=web%2Fcore%2Fmodules%2Fviews_ui%2Fsrc%2FTests%2FOverrideDisplaysTest.php;h=ba425424087952a4cecd66ad3beef7a85dbed633;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/views_ui/src/Tests/OverrideDisplaysTest.php b/web/core/modules/views_ui/src/Tests/OverrideDisplaysTest.php new file mode 100644 index 000000000..ba4254240 --- /dev/null +++ b/web/core/modules/views_ui/src/Tests/OverrideDisplaysTest.php @@ -0,0 +1,199 @@ +drupalPlaceBlock('page_title_block'); + } + + /** + * Tests that displays can be overridden via the UI. + */ + public function testOverrideDisplays() { + // Create a basic view that shows all content, with a page and a block + // display. + $view['label'] = $this->randomMachineName(16); + $view['id'] = strtolower($this->randomMachineName(16)); + $view['page[create]'] = 1; + $view['page[path]'] = $this->randomMachineName(16); + $view['block[create]'] = 1; + $view_path = $view['page[path]']; + $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit')); + + // Configure its title. Since the page and block both started off with the + // same (empty) title in the views wizard, we expect the wizard to have set + // things up so that they both inherit from the default display, and we + // therefore only need to change that to have it take effect for both. + $edit = []; + $edit['title'] = $original_title = $this->randomMachineName(16); + $edit['override[dropdown]'] = 'default'; + $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply')); + $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", [], t('Save')); + + // Add a node that will appear in the view, so that the block will actually + // be displayed. + $this->drupalCreateContentType(['type' => 'page']); + $this->drupalCreateNode(); + + // Make sure the title appears in the page. + $this->drupalGet($view_path); + $this->assertResponse(200); + $this->assertText($original_title); + + // Confirm that the view block is available in the block administration UI. + $this->drupalGet('admin/structure/block/list/' . $this->config('system.theme')->get('default')); + $this->clickLinkPartialName('Place block'); + $this->assertText($view['label']); + + // Place the block. + $this->drupalPlaceBlock("views_block:{$view['id']}-block_1"); + + // Make sure the title appears in the block. + $this->drupalGet(''); + $this->assertText($original_title); + + // Change the title for the page display only, and make sure that the + // original title still appears on the page. + $edit = []; + $edit['title'] = $new_title = $this->randomMachineName(16); + $edit['override[dropdown]'] = 'page_1'; + $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply')); + $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", [], t('Save')); + $this->drupalGet($view_path); + $this->assertResponse(200); + $this->assertText($new_title); + $this->assertText($original_title); + } + + /** + * Tests that the wizard correctly sets up default and overridden displays. + */ + public function testWizardMixedDefaultOverriddenDisplays() { + // Create a basic view with a page, block, and feed. Give the page and feed + // identical titles, but give the block a different one, so we expect the + // page and feed to inherit their titles from the default display, but the + // block to override it. + $view['label'] = $this->randomMachineName(16); + $view['id'] = strtolower($this->randomMachineName(16)); + $view['page[create]'] = 1; + $view['page[title]'] = $this->randomMachineName(16); + $view['page[path]'] = $this->randomMachineName(16); + $view['page[feed]'] = 1; + $view['page[feed_properties][path]'] = $this->randomMachineName(16); + $view['block[create]'] = 1; + $view['block[title]'] = $this->randomMachineName(16); + $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit')); + + // Add a node that will appear in the view, so that the block will actually + // be displayed. + $this->drupalCreateContentType(['type' => 'page']); + $this->drupalCreateNode(); + + // Make sure that the feed, page and block all start off with the correct + // titles. + $this->drupalGet($view['page[path]']); + $this->assertResponse(200); + $this->assertText($view['page[title]']); + $this->assertNoText($view['block[title]']); + $this->drupalGet($view['page[feed_properties][path]']); + $this->assertResponse(200); + $this->assertText($view['page[title]']); + $this->assertNoText($view['block[title]']); + + // Confirm that the block is available in the block administration UI. + $this->drupalGet('admin/structure/block/list/' . $this->config('system.theme')->get('default')); + $this->clickLinkPartialName('Place block'); + $this->assertText($view['label']); + + // Put the block into the first sidebar region, and make sure it will not + // display on the view's page display (since we will be searching for the + // presence/absence of the view's title in both the page and the block). + $this->drupalPlaceBlock("views_block:{$view['id']}-block_1", [ + 'visibility' => [ + 'request_path' => [ + 'pages' => '/' . $view['page[path]'], + 'negate' => TRUE, + ], + ], + ]); + + $this->drupalGet(''); + $this->assertText($view['block[title]']); + $this->assertNoText($view['page[title]']); + + // Edit the page and change the title. This should automatically change + // the feed's title also, but not the block. + $edit = []; + $edit['title'] = $new_default_title = $this->randomMachineName(16); + $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/page_1/title", $edit, t('Apply')); + $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/page_1", [], t('Save')); + $this->drupalGet($view['page[path]']); + $this->assertResponse(200); + $this->assertText($new_default_title); + $this->assertNoText($view['page[title]']); + $this->assertNoText($view['block[title]']); + $this->drupalGet($view['page[feed_properties][path]']); + $this->assertResponse(200); + $this->assertText($new_default_title); + $this->assertNoText($view['page[title]']); + $this->assertNoText($view['block[title]']); + $this->drupalGet(''); + $this->assertNoText($new_default_title); + $this->assertNoText($view['page[title]']); + $this->assertText($view['block[title]']); + + // Edit the block and change the title. This should automatically change + // the block title only, and leave the defaults alone. + $edit = []; + $edit['title'] = $new_block_title = $this->randomMachineName(16); + $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply')); + $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/block_1", [], t('Save')); + $this->drupalGet($view['page[path]']); + $this->assertResponse(200); + $this->assertText($new_default_title); + $this->drupalGet($view['page[feed_properties][path]']); + $this->assertResponse(200); + $this->assertText($new_default_title); + $this->assertNoText($new_block_title); + $this->drupalGet(''); + $this->assertText($new_block_title); + $this->assertNoText($view['block[title]']); + } + + /** + * Tests that the revert to all displays select-option works as expected. + */ + public function testRevertAllDisplays() { + // Create a basic view with a page, block. + // Because there is both a title on page and block we expect the title on + // the block be overridden. + $view['label'] = $this->randomMachineName(16); + $view['id'] = strtolower($this->randomMachineName(16)); + $view['page[create]'] = 1; + $view['page[title]'] = $this->randomMachineName(16); + $view['page[path]'] = $this->randomMachineName(16); + $view['block[create]'] = 1; + $view['block[title]'] = $this->randomMachineName(16); + $this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit')); + + // Revert the title of the block to the default ones, but submit some new + // values to be sure that the new value is not stored. + $edit = []; + $edit['title'] = $new_block_title = $this->randomMachineName(); + $edit['override[dropdown]'] = 'default_revert'; + + $this->drupalPostForm("admin/structure/views/nojs/display/{$view['id']}/block_1/title", $edit, t('Apply')); + $this->drupalPostForm("admin/structure/views/view/{$view['id']}/edit/block_1", [], t('Save')); + $this->assertText($view['page[title]']); + } + +}