/**
  * @test
  * @group functional
  */
 public function entityShouldHaveAttributes()
 {
     $container = static::$kernel->getContainer();
     /** @var ManagerRegistry $doctrine */
     $doctrine = $container->get('doctrine');
     /** @var EntityManager $em */
     $em = $doctrine->getManager();
     $metadata = $em->getMetadataFactory()->getAllMetadata();
     $schemaTool = new SchemaTool($em);
     $schemaTool->dropSchema($metadata);
     $schemaTool->createSchema($metadata);
     $schema = new Schema();
     $schema->setClassName('Padam87\\AttributeBundle\\Tests\\Model\\Subscriber');
     /** @var DebugStack $profiler */
     $profiler = $container->get('doctrine.dbal.logger.profiling.default');
     $subscriber = new Subscriber();
     // FIRST PASS
     for ($i = 0; $i < 5; $i++) {
         $definition = new Definition();
         $definition->setName($i);
         $definition->setType('text');
         $schema->addDefinition($definition);
     }
     $em->persist($schema);
     $em->flush($schema);
     $em->refresh($schema);
     $this->assertCount(5, $schema->getDefinitions());
     $em->persist($subscriber);
     $em->flush($subscriber);
     $profiler->queries = array();
     // reset the profiler to show oly relevant queries
     $em->refresh($subscriber);
     $this->assertCount(5, $subscriber->getAttributes());
     $this->assertCount(16, $profiler->queries);
     // SECOND PASS
     for ($i = 5; $i < 10; $i++) {
         $definition = new Definition();
         $definition->setName($i);
         $definition->setType('text');
         $schema->addDefinition($definition);
     }
     $em->persist($schema);
     $em->flush($schema);
     $em->refresh($schema);
     $this->assertCount(10, $schema->getDefinitions());
     $subscriber->setName('test');
     $em->flush($subscriber);
     $profiler->queries = array();
     // reset the profiler to show oly relevant queries
     $em->refresh($subscriber);
     $this->assertCount(10, $subscriber->getAttributes());
     $this->assertCount(16, $profiler->queries);
 }
Example #2
0
 /**
  * @param Definition $definition
  *
  * @return Schema
  */
 public function addDefinition(Definition $definition)
 {
     $definition->setSchema($this);
     $this->definitions[] = $definition;
     return $this;
 }