public function testReplacements() { $q = CustomerOrderModel::objects()->raw('SELECT :pk, :user FROM :t WHERE :user < 100 LIMIT 5'); $this->assertEquals('SELECT "customer_order_id", "user_id" FROM "' . CustomerOrderModel::metadata()->getDbTableName() . '" WHERE "user_id" < 100 LIMIT 5', strval($q)); $q = CustomerOrderModel::objects()->raw('SELECT * FROM :t'); $this->assertEquals('SELECT "customer_order_id", "date_added", "user_id", "order_number" FROM "' . CustomerOrderModel::metadata()->getDbTableName() . '"', strval($q)); }
public function testRanges() { $q = CustomerOrderModel::objects(); $paginator = new \Dja\Db\Model\Query\Pagination($q, 3, 10); $this->assertCount(5, $paginator->getPagesArray()); foreach ($paginator->getPagesIterator() as $p) { $this->assertTrue($p >= $paginator->getFirstPage() && $p <= $paginator->getLastPage()); } }
public function testBase() { $q = CustomerOrderModel::objects()->valuesList('order_number', 'order_number')->limit(5); foreach ($q as $key => $obj) { $this->assertInternalType('string', $obj); $this->assertEquals($key, $obj); } $this->assertCount(5, $q); }
public function testBase() { $mtd = CustomerOrderModel::metadata(); $mtd->addField('vrt', new \Dja\Db\Model\Field\Virtual(['getter' => function (\CustomerOrderModel $model) { return '#' . $model->pk . ' ' . $model->order_number; }])); $qs = CustomerOrderModel::objects()->all(); /** @var CustomerOrderModel $model */ $model = $qs->current(); $this->assertEquals('#' . $model->pk . ' ' . $model->order_number, $model->vrt); }
public function testFilterTime() { $ddt = new DateTime(); $obj = new CustomerOrderModel(['order_number' => 'filter_test1', 'date_added' => $ddt->format(\Dja\Db\Model\Field\DateTime::FORMAT)]); $obj->save(); $q = CustomerOrderModel::objects()->filter(['date_added__minute' => $ddt->format('i'), 'order_number' => 'filter_test1'])->limit(1); $this->assertCount(1, $q); foreach ($q as $obj) { $dt = new DateTime($obj->date_added); $this->assertEquals($ddt, $dt); } }
public function testToArray() { /** @var CustomerOrderModel $co */ $co = CustomerOrderModel::objects()->exclude(['user' => null, 'user_id' => 0])->limit(1)->current(); $arr = $co->toArray(2); $this->assertArrayHasKey('user', $arr); $this->assertSame($co->user_id, $arr['user']); $co = CustomerOrderModel::objects()->exclude(['user' => null, 'user_id' => 0])->limit(1)->selectRelated(['user'])->current(); $arr = $co->toArray(2); $this->assertArrayHasKey('user', $arr); $this->assertInternalType('array', $arr['user']); }
public function testSelectRelatedDecrementDepth() { $this->setExpectedException('\\InvalidArgumentException'); $q = CustomerOrderModel::objects()->selectRelated(['depth' => 3])->selectRelated(['depth' => 1]); }