| 
<?phpnamespace eMapper\SQLite\Callback;
 
 use eMapper\SQLite\SQLiteConfig;
 use eMapper\Callback\AbstractIndexCallbackTest;
 
 /**
 * Index callback tests
 * @author emaphp
 * @group sqlite
 * @group callback
 */
 class IndexCallbackTest extends AbstractIndexCallbackTest {
 use SQLiteConfig;
 
 public function testClosureIndex() {
 $list = $this->mapper->index_callback(function ($user) {
 $date = \DateTime::createFromFormat('Y-m-d', $user->birth_date);
 return intval($date->format('Y'));
 })
 ->type('obj[]')->query("SELECT * FROM users");
 
 $this->assertInternalType('array', $list);
 $this->assertCount(5, $list);
 
 //assert indexes
 $this->assertArrayHasKey(1987, $list);
 $this->assertArrayHasKey(1976, $list);
 $this->assertArrayHasKey(1967, $list);
 $this->assertArrayHasKey(1980, $list);
 $this->assertArrayHasKey(1977, $list);
 
 //assert values
 $this->assertInstanceOf('stdClass', $list[1987]);
 $this->assertInstanceOf('stdClass', $list[1976]);
 $this->assertInstanceOf('stdClass', $list[1967]);
 $this->assertInstanceOf('stdClass', $list[1980]);
 $this->assertInstanceOf('stdClass', $list[1977]);
 
 $this->assertEquals(1, $list[1987]->user_id);
 $this->assertEquals(2, $list[1976]->user_id);
 $this->assertEquals(3, $list[1967]->user_id);
 $this->assertEquals(4, $list[1980]->user_id);
 $this->assertEquals(5, $list[1977]->user_id);
 }
 }
 ?>
 |