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)); } }