/** * @test */ public function test_build_prepare() { $context = new DaoBuilderContext(new Configuration(function ($conf) { $conf->connectionString = 'sqlite:///:memory:'; })); $builder = new DaoBuilder(new \ReflectionClass(TodoDao::class), $context->getDaoClassName(TodoDao::class)); $this->assertEquals('Omelet\\Tests\\Target\\TodoDao', $builder->getInterfaceName()); $this->assertEquals('Omelet\\Tests\\Target\\TodoDaoImpl', $builder->getClassName()); $this->assertCount(0, $builder->getMethods()); $builder->prepare(); $methods = $builder->getMethods(); $this->assertCount(6, $builder->getMethods()); select1: $this->assertArrayHasKey('listAll', $methods); $info = $methods['listAll']; $this->assertArrayHasKey('name', $info); $this->assertEquals('listAll', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Select', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(0, $info['paramDomain']->getChildren()); select2: $this->assertArrayHasKey('listById', $methods); $info = $methods['listById']; $this->assertArrayHasKey('name', $info); $this->assertEquals('listById', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Select', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(1, $info['paramDomain']->getChildren()); $this->assertArrayHasKey('id', $info['paramDomain']->getChildren()); select3: $this->assertArrayHasKey('listByPub', $methods); $info = $methods['listByPub']; $this->assertArrayHasKey('name', $info); $this->assertEquals('listByPub', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Select', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(2, $info['paramDomain']->getChildren()); $this->assertArrayHasKey('from', $info['paramDomain']->getChildren()); $this->assertArrayHasKey('to', $info['paramDomain']->getChildren()); insert: $this->assertArrayHasKey('insert', $methods); $info = $methods['insert']; $this->assertArrayHasKey('name', $info); $this->assertEquals('insert', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Insert', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(1, $info['paramDomain']->getChildren()); $this->assertArrayHasKey('fields', $info['paramDomain']->getChildren()); update: $this->assertArrayHasKey('update', $methods); $info = $methods['update']; $this->assertArrayHasKey('name', $info); $this->assertEquals('update', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Update', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(1, $info['paramDomain']->getChildren()); $this->assertArrayHasKey('fields', $info['paramDomain']->getChildren()); delete: $this->assertArrayHasKey('delete', $methods); $info = $methods['delete']; $this->assertArrayHasKey('name', $info); $this->assertEquals('delete', $info['name']); $this->assertArrayHasKey('type', $info); $this->assertInstanceOf('\\Omelet\\Annotation\\Delete', $info['type']); $this->assertArrayHasKey('paramDomain', $info); $this->assertInstanceOf(Domain\ComplexDomain::class, $info['paramDomain']); $this->assertCount(1, $info['paramDomain']->getChildren()); $this->assertArrayHasKey('id', $info['paramDomain']->getChildren()); }