/**
  * 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'));
 }
Exemple #2
0
 /**
  * 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());
 }
Exemple #3
0
 /**
  * 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'));
 }