/** * Tests flaggings are deleted and counts are removed when a flag is deleted. */ public function testFlagDeletion() { // Create a article to flag. $article1 = Node::create([ 'type' => 'article', 'title' => $this->randomMachineName(8), ]); $article1->save(); // Create a second article. $article2 = Node::create([ 'type' => 'article', 'title' => $this->randomMachineName(8), ]); $article2->save(); // Flag both. $this->flagService->flag($this->flag, $article1); $this->flagService->flag($this->flag, $article2); // Confirm the counts have been incremented. $article1_count_before = $this->flagCountService->getEntityFlagCounts($article1); $this->assertEqual($article1_count_before[$this->flag->id()], 1, 'The article1 has been flagged.'); $article2_count_before = $this->flagCountService->getEntityFlagCounts($article2); $this->assertEqual(count($article2_count_before[$this->flag->id()]), 1, 'The article2 has been flagged.'); // Confirm the flagging have been created. $flaggings_before = $this->flagService->getFlaggings($this->flag); $this->assertEqual(count($flaggings_before), 2, 'There are two flaggings associated with the flag'); // Delete the flag. $this->flag->delete(); // The list of all flaggings MUST now be empty. $flaggings_after = $this->flagService->getFlaggings($this->flag); $this->assertEmpty($flaggings_after, 'The flaggings were removed, when the flag was deleted'); // The flag id is now stale, so instead of searching for the flag in the // count array as before we require the entire array should be empty. $article1_counts_after = $this->flagCountService->getEntityFlagCounts($article1); $this->assertEmpty($article1_counts_after, 'Article1 counts has been removed.'); $article2_counts_after = $this->flagCountService->getEntityFlagCounts($article2); $this->assertEmpty($article2_counts_after, 'Article2 counts has been removed.'); }