/** * Test magic findAllByXX method. * * @return void */ public function testMagicFindAllOr() { $table = TableRegistry::get('Users'); $result = $table->findAllByAuthorIdOrPublished(1, 'Y'); $this->assertInstanceOf('Cake\\ORM\\Query', $result); $this->assertNull($result->clause('limit')); $expected = new QueryExpression(); $expected->typeMap()->defaults($this->usersTypeMap->toArray()); $expected->add(['or' => ['Users.author_id' => 1, 'Users.published' => 'Y']]); $this->assertEquals($expected, $result->clause('where')); $this->assertNull($result->clause('order')); }
/** * Tests that applying array options to a query will convert them * to equivalent function calls with the correspondent array values * * @return void */ public function testApplyOptions() { $options = ['fields' => ['field_a', 'field_b'], 'conditions' => ['field_a' => 1, 'field_b' => 'something'], 'limit' => 1, 'order' => ['a' => 'ASC'], 'offset' => 5, 'group' => ['field_a'], 'having' => ['field_a >' => 100], 'contain' => ['table_a' => ['table_b']], 'join' => ['table_a' => ['conditions' => ['a > b']]]]; $query = new Query($this->connection, $this->table); $query->applyOptions($options); $this->assertEquals(['field_a', 'field_b'], $query->clause('select')); $expected = new QueryExpression($options['conditions'], $this->fooTypeMap); $result = $query->clause('where'); $this->assertEquals($expected, $result); $this->assertEquals(1, $query->clause('limit')); $expected = new QueryExpression(['a > b']); $expected->typeMap($this->fooTypeMap); $result = $query->clause('join'); $this->assertEquals(['table_a' => ['alias' => 'table_a', 'type' => 'INNER', 'conditions' => $expected]], $result); $expected = new OrderByExpression(['a' => 'ASC']); $this->assertEquals($expected, $query->clause('order')); $this->assertEquals(5, $query->clause('offset')); $this->assertEquals(['field_a'], $query->clause('group')); $expected = new QueryExpression($options['having']); $expected->typeMap($this->fooTypeMap); $this->assertEquals($expected, $query->clause('having')); $expected = ['table_a' => ['table_b' => []]]; $this->assertEquals($expected, $query->contain()); }
/** * Test magic findAllByXX method. * * @return void */ public function testMagicFindAllOr() { $table = TableRegistry::get('Users'); $result = $table->findAllByAuthorIdOrPublished(1, 'Y'); $this->assertInstanceOf('Cake\\ORM\\Query', $result); $this->assertNull($result->clause('limit')); $expected = new QueryExpression(); $expected->typeMap()->defaults(['Users.id' => 'integer', 'id' => 'integer', 'Users.username' => 'string', 'username' => 'string', 'Users.password' => 'string', 'password' => 'string', 'Users.created' => 'timestamp', 'created' => 'timestamp', 'Users.updated' => 'timestamp', 'updated' => 'timestamp']); $expected->add(['or' => ['Users.author_id' => 1, 'Users.published' => 'Y']]); $this->assertEquals($expected, $result->clause('where')); $this->assertNull($result->clause('order')); }