Tests the "Active forum topics" block.
public function testActiveForumTopicsBlock() {
$this
->drupalLogin($this->adminUser);
// Create 10 forum topics.
$topics = $this
->createForumTopics(10);
// Comment on the first 5 topics.
$date = new DrupalDateTime();
$langcode = Language::LANGCODE_NOT_SPECIFIED;
for ($index = 0; $index < 5; $index++) {
// Get the node from the topic title.
$node = $this
->drupalGetNodeByTitle($topics[$index]);
$date
->modify('+1 minute');
$comment = entity_create('comment', array(
'nid' => $node->nid,
'node_type' => 'node_type_' . $node
->bundle(),
'subject' => $this
->randomString(20),
'comment_body' => $this
->randomString(256),
'created' => $date
->getTimestamp(),
));
$comment
->save();
}
// Enable the block.
$block = $this
->drupalPlaceBlock('forum_active_block');
$this
->drupalGet('');
$this
->assertLink(t('More'), 0, 'Active forum topics block has a "more"-link.');
$this
->assertLinkByHref('forum', 0, 'Active forum topics block has a "more"-link.');
// We expect the first 5 forum topics to appear in the "Active forum topics"
// block.
$this
->drupalGet('<front>');
for ($index = 0; $index < 10; $index++) {
if ($index < 5) {
$this
->assertLink($topics[$index], 0, format_string('Forum topic @topic found in the "Active forum topics" block.', array(
'@topic' => $topics[$index],
)));
}
else {
$this
->assertNoText($topics[$index], format_string('Forum topic @topic not found in the "Active forum topics" block.', array(
'@topic' => $topics[$index],
)));
}
}
// Configure the active forum block to only show 2 topics.
$block
->getPlugin()
->setConfig('block_count', 2);
$block
->save();
$this
->drupalGet('');
// We expect only the 2 forum topics with most recent comments to appear in
// the "Active forum topics" block.
for ($index = 0; $index < 10; $index++) {
if (in_array($index, array(
3,
4,
))) {
$this
->assertLink($topics[$index], 0, 'Forum topic found in the "Active forum topics" block.');
}
else {
$this
->assertNoText($topics[$index], 'Forum topic not found in the "Active forum topics" block.');
}
}
}