public function testHasBehaviors()
 {
     $behavior1 = $this->getBehaviorMock('Foo');
     $behavior2 = $this->getBehaviorMock('Bar');
     $behavior3 = $this->getBehaviorMock('Baz');
     $table = new Table();
     $table->addBehavior($behavior1);
     $table->addBehavior($behavior2);
     $table->addBehavior($behavior3);
     $this->assertCount(3, $table->getBehaviors());
     $this->assertTrue($table->hasBehavior('Foo'));
     $this->assertTrue($table->hasBehavior('Bar'));
     $this->assertTrue($table->hasBehavior('Baz'));
     $this->assertFalse($table->hasBehavior('Bab'));
     $this->assertSame($behavior1, $table->getBehavior('Foo'));
     $this->assertSame($behavior2, $table->getBehavior('Bar'));
     $this->assertSame($behavior3, $table->getBehavior('Baz'));
 }
 /**
  * Returns the DQL to create a new trigger.
  *
  * @param Table $table
  *
  * @return string
  */
 protected function createTriggerDDL(Table $table)
 {
     /** @var CompositeNumberRangeBehavior $behavior */
     $behavior = $table->getBehavior(self::BEHAVIOR_NAME);
     $foreignTableName = $behavior->getForeignTable();
     $triggerName = $this->getTriggerName($table);
     $tableName = $table->getName();
     $sql = "\nDELIMITER \$;\n\nCREATE TRIGGER {$triggerName}\nBEFORE INSERT ON {$tableName}\nFOR EACH ROW\nBEGIN\n    INSERT INTO {$foreignTableName}_sequence (\n        table_name, {$foreignTableName}_id, {$foreignTableName}_max_sequence_id\n    ) VALUES (\n        '{$tableName}', NEW.{$foreignTableName}_id, LAST_INSERT_ID(1)\n    ) ON DUPLICATE KEY\n        UPDATE {$foreignTableName}_max_sequence_id = LAST_INSERT_ID({$foreignTableName}_max_sequence_id +1);\n\n    SET NEW.{$foreignTableName}_{$tableName}_id = LAST_INSERT_ID();\nEND\n\nDELIMITER ;\n";
     return $sql;
 }