View source
<?php
namespace Drupal\Tests\feeds\Functional;
class FeedListBuilderTest extends FeedsBrowserTestBase {
public function testUi() {
$feed_type = $this
->createFeedType();
$this
->createFeed($feed_type
->id(), [
'title' => 'My feed',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextContains('My feed');
$session
->linkByHrefExists('/feed/1');
$session
->linkExists('Edit');
$session
->linkByHrefExists('/feed/1/edit');
$session
->linkExists('Import');
$session
->linkByHrefExists('/feed/1/import');
$session
->linkExists('Import in background');
$session
->linkByHrefExists('/feed/1/schedule-import');
$session
->linkExists('Delete items');
$session
->linkByHrefExists('/feed/1/delete-items');
}
public function testUiWithNoFeeds() {
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
}
public function testUiWithOnlyViewPermissions() {
$feed_type_1 = $this
->createFeedType();
$feed_type_2 = $this
->createFeedType();
$this
->createFeed($feed_type_1
->id(), [
'title' => 'My feed 1',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->createFeed($feed_type_2
->id(), [
'title' => 'My feed 2',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$account = $this
->drupalCreateUser([
'access feed overview',
'view ' . $feed_type_1
->id() . ' feeds',
]);
$this
->drupalLogin($account);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextContains('My feed 1');
$session
->linkByHrefExists('/feed/1');
$session
->pageTextNotContains('My feed 2');
$session
->linkByHrefNotExists('/feed/2');
$session
->linkNotExists('Edit');
$session
->linkByHrefNotExists('/feed/1/edit');
$session
->linkByHrefNotExists('/feed/2/edit');
$session
->linkNotExists('Import');
$session
->linkByHrefNotExists('/feed/1/import');
$session
->linkByHrefNotExists('/feed/2/import');
$session
->linkNotExists('Import in background');
$session
->linkByHrefNotExists('/feed/1/schedule-import');
$session
->linkByHrefNotExists('/feed/2/schedule-import');
$session
->linkNotExists('Delete items');
$session
->linkByHrefNotExists('/feed/1/delete-items');
$session
->linkByHrefNotExists('/feed/2/delete-items');
}
public function testUiWithOnlyUpdatePermissions() {
$feed_type_1 = $this
->createFeedType();
$feed_type_2 = $this
->createFeedType();
$this
->createFeed($feed_type_1
->id(), [
'title' => 'My feed 1',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->createFeed($feed_type_2
->id(), [
'title' => 'My feed 2',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$account = $this
->drupalCreateUser([
'access feed overview',
'update ' . $feed_type_1
->id() . ' feeds',
]);
$this
->drupalLogin($account);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextContains('My feed 1');
$session
->linkExists('Edit');
$session
->linkByHrefExists('/feed/1/edit');
$session
->linkNotExists('My feed 1');
$session
->pageTextNotContains('My feed 2');
$session
->linkByHrefNotExists('/feed/2');
$session
->linkByHrefNotExists('/feed/2/edit');
$session
->linkNotExists('Import');
$session
->linkByHrefNotExists('/feed/1/import');
$session
->linkByHrefNotExists('/feed/2/import');
$session
->linkNotExists('Import in background');
$session
->linkByHrefNotExists('/feed/1/schedule-import');
$session
->linkByHrefNotExists('/feed/2/schedule-import');
$session
->linkNotExists('Delete items');
$session
->linkByHrefNotExists('/feed/1/delete-items');
$session
->linkByHrefNotExists('/feed/2/delete-items');
}
public function testUiWithOnlyImportPermissions() {
$feed_type_1 = $this
->createFeedType();
$feed_type_2 = $this
->createFeedType();
$this
->createFeed($feed_type_1
->id(), [
'title' => 'My feed 1',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->createFeed($feed_type_2
->id(), [
'title' => 'My feed 2',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$account = $this
->drupalCreateUser([
'access feed overview',
'import ' . $feed_type_1
->id() . ' feeds',
]);
$this
->drupalLogin($account);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextContains('My feed 1');
$session
->linkExists('Import');
$session
->linkByHrefExists('/feed/1/import');
$session
->linkNotExists('My feed 1');
$session
->pageTextNotContains('My feed 2');
$session
->linkByHrefNotExists('/feed/2');
$session
->linkByHrefNotExists('/feed/2/import');
$session
->linkNotExists('Edit');
$session
->linkByHrefNotExists('/feed/1/edit');
$session
->linkByHrefNotExists('/feed/2/edit');
$session
->linkNotExists('Import in background');
$session
->linkByHrefNotExists('/feed/1/schedule-import');
$session
->linkByHrefNotExists('/feed/2/schedule-import');
$session
->linkNotExists('Delete items');
$session
->linkByHrefNotExists('/feed/1/delete-items');
$session
->linkByHrefNotExists('/feed/2/delete-items');
}
public function testUiWithOnlyScheduleImportPermissions() {
$feed_type_1 = $this
->createFeedType();
$feed_type_2 = $this
->createFeedType();
$this
->createFeed($feed_type_1
->id(), [
'title' => 'My feed 1',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->createFeed($feed_type_2
->id(), [
'title' => 'My feed 2',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$account = $this
->drupalCreateUser([
'access feed overview',
'schedule_import ' . $feed_type_1
->id() . ' feeds',
]);
$this
->drupalLogin($account);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextNotContains('There are no feed entities yet.');
$session
->pageTextContains('My feed 1');
$session
->linkExists('Import in background');
$session
->linkByHrefExists('/feed/1/schedule-import');
$session
->pageTextNotContains('My feed 2');
$session
->linkByHrefNotExists('/feed/2');
$session
->linkByHrefNotExists('/feed/2/schedule-import');
$session
->linkNotExists('Edit');
$session
->linkByHrefNotExists('/feed/1/edit');
$session
->linkByHrefNotExists('/feed/2/edit');
$session
->linkByHrefNotExists('/feed/1/import');
$session
->linkByHrefNotExists('/feed/2/import');
$session
->linkNotExists('Delete items');
$session
->linkByHrefNotExists('/feed/1/delete-items');
$session
->linkByHrefNotExists('/feed/2/delete-items');
}
public function testUiWithOnlyClearPermissions() {
$feed_type_1 = $this
->createFeedType();
$feed_type_2 = $this
->createFeedType();
$this
->createFeed($feed_type_1
->id(), [
'title' => 'My feed 1',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$this
->createFeed($feed_type_2
->id(), [
'title' => 'My feed 2',
'source' => $this
->resourcesUrl() . '/rss/googlenewstz.rss2',
]);
$account = $this
->drupalCreateUser([
'access feed overview',
'clear ' . $feed_type_1
->id() . ' feeds',
]);
$this
->drupalLogin($account);
$this
->drupalGet('admin/content/feed');
$session = $this
->assertSession();
$this
->assertNoWarnings();
$session
->pageTextContains('My feed 1');
$session
->linkExists('Delete items');
$session
->linkByHrefExists('/feed/1/delete-items');
$session
->linkNotExists('My feed 1');
$session
->pageTextNotContains('My feed 2');
$session
->linkByHrefNotExists('/feed/2');
$session
->linkByHrefNotExists('/feed/2/delete-items');
$session
->linkNotExists('Edit');
$session
->linkByHrefNotExists('/feed/1/edit');
$session
->linkByHrefNotExists('/feed/2/edit');
$session
->linkNotExists('Import');
$session
->linkByHrefNotExists('/feed/1/import');
$session
->linkByHrefNotExists('/feed/2/import');
$session
->linkNotExists('Import in background');
$session
->linkByHrefNotExists('/feed/1/schedule-import');
$session
->linkByHrefNotExists('/feed/2/schedule-import');
}
protected function assertNoWarnings() {
$this
->assertSession()
->elementNotExists('css', '.messages--warning');
$this
->assertSession()
->elementNotExists('css', '.messages--error');
$this
->assertSession()
->pageTextNotContains('The website encountered an unexpected error.');
}
}