/**
* Test cascading deletes with callbacks.
*
* @return void
*/
public function testCascadeDeleteWithCallbacks()
{
$articleTag = TableRegistry::get('ArticlesTags');
$config = ['sourceTable' => $this->article, 'targetTable' => $this->tag, 'cascadeCallbacks' => true];
$association = new BelongsToMany('Tag', $config);
$association->junction($articleTag);
$this->article->association($articleTag->alias());
$counter = $this->getMockBuilder('StdClass')->setMethods(['__invoke'])->getMock();
$counter->expects($this->exactly(2))->method('__invoke');
$articleTag->eventManager()->on('Model.beforeDelete', $counter);
$this->assertEquals(2, $articleTag->find()->where(['article_id' => 1])->count());
$entity = new Entity(['id' => 1, 'name' => 'PHP']);
$association->cascadeDelete($entity);
$this->assertEquals(0, $articleTag->find()->where(['article_id' => 1])->count());
}