forumUninstallValidator = $this->getMockBuilder('Drupal\forum\ForumUninstallValidator')
->disableOriginalConstructor()
->setMethods(['hasForumNodes', 'hasTermsForVocabulary', 'getForumVocabulary'])
->getMock();
$this->forumUninstallValidator->setStringTranslation($this->getStringTranslationStub());
}
/**
* @covers ::validate
*/
public function testValidateNotForum() {
$this->forumUninstallValidator->expects($this->never())
->method('hasForumNodes');
$this->forumUninstallValidator->expects($this->never())
->method('hasTermsForVocabulary');
$this->forumUninstallValidator->expects($this->never())
->method('getForumVocabulary');
$module = 'not_forum';
$expected = [];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidate() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(FALSE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(FALSE);
$module = 'forum';
$expected = [];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidateHasForumNodes() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(TRUE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(FALSE);
$module = 'forum';
$expected = [
'To uninstall Forum, first delete all Forum content',
];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidateHasTermsForVocabularyWithNodesAccess() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(TRUE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$vocabulary->expects($this->once())
->method('label')
->willReturn('Vocabulary label');
$vocabulary->expects($this->once())
->method('url')
->willReturn('/path/to/vocabulary/overview');
$vocabulary->expects($this->once())
->method('access')
->willReturn(TRUE);
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(TRUE);
$module = 'forum';
$expected = [
'To uninstall Forum, first delete all Forum content',
'To uninstall Forum, first delete all Vocabulary label terms',
];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidateHasTermsForVocabularyWithNodesNoAccess() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(TRUE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$vocabulary->expects($this->once())
->method('label')
->willReturn('Vocabulary label');
$vocabulary->expects($this->never())
->method('url');
$vocabulary->expects($this->once())
->method('access')
->willReturn(FALSE);
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(TRUE);
$module = 'forum';
$expected = [
'To uninstall Forum, first delete all Forum content',
'To uninstall Forum, first delete all Vocabulary label terms',
];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidateHasTermsForVocabularyAccess() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(FALSE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$vocabulary->expects($this->once())
->method('url')
->willReturn('/path/to/vocabulary/overview');
$vocabulary->expects($this->once())
->method('label')
->willReturn('Vocabulary label');
$vocabulary->expects($this->once())
->method('access')
->willReturn(TRUE);
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(TRUE);
$module = 'forum';
$expected = [
'To uninstall Forum, first delete all Vocabulary label terms',
];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
/**
* @covers ::validate
*/
public function testValidateHasTermsForVocabularyNoAccess() {
$this->forumUninstallValidator->expects($this->once())
->method('hasForumNodes')
->willReturn(FALSE);
$vocabulary = $this->getMock('Drupal\taxonomy\VocabularyInterface');
$vocabulary->expects($this->once())
->method('label')
->willReturn('Vocabulary label');
$vocabulary->expects($this->never())
->method('url');
$vocabulary->expects($this->once())
->method('access')
->willReturn(FALSE);
$this->forumUninstallValidator->expects($this->once())
->method('getForumVocabulary')
->willReturn($vocabulary);
$this->forumUninstallValidator->expects($this->once())
->method('hasTermsForVocabulary')
->willReturn(TRUE);
$module = 'forum';
$expected = [
'To uninstall Forum, first delete all Vocabulary label terms',
];
$reasons = $this->forumUninstallValidator->validate($module);
$this->assertSame($expected, $this->castSafeStrings($reasons));
}
}