/** * Tests that insert queries get a "RETURNING *" string at the end * * @return void */ public function testInsertReturning() { $driver = $this->getMockBuilder('Cake\\Database\\Driver\\Postgres')->setMethods(['_connect', 'connection'])->setConstructorArgs([[]])->getMock(); $connection = $this->getMockBuilder('\\Cake\\Database\\Connection')->setMethods(['connect'])->disableOriginalConstructor()->getMock(); $query = new \Cake\Database\Query($connection); $query->insert(['id', 'title'])->into('articles')->values([1, 'foo']); $translator = $driver->queryTranslator('insert'); $query = $translator($query); $this->assertEquals('RETURNING *', $query->clause('epilog')); $query = new \Cake\Database\Query($connection); $query->insert(['id', 'title'])->into('articles')->values([1, 'foo'])->epilog('FOO'); $query = $translator($query); $this->assertEquals('FOO', $query->clause('epilog')); }
/** * Test that insert queries have results available to them. * * @return void */ public function testInsertUsesOutput() { $driver = $this->getMockBuilder('Cake\\Database\\Driver\\Sqlserver')->setMethods(['_connect', 'connection'])->setConstructorArgs([[]])->getMock(); $connection = $this->getMockBuilder('\\Cake\\Database\\Connection')->setMethods(['connect', 'driver'])->setConstructorArgs([['log' => false]])->getMock(); $connection->expects($this->any())->method('driver')->will($this->returnValue($driver)); $query = new \Cake\Database\Query($connection); $query->insert(['title'])->into('articles')->values(['title' => 'A new article']); $expected = 'INSERT INTO articles (title) OUTPUT INSERTED.* VALUES (:c0)'; $this->assertEquals($expected, $query->sql()); }