createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $collection = $em->createSthCollection('Account', [ 'limit' => 2, 'orderBy' => 'name', ]); $count = 0; $list = []; foreach ($collection as $e) { $count++; $list[] = $e; } $this->assertEquals(2, $count); $this->assertEquals('test-1', $list[0]->get('name')); $array = $collection->toArray(); $this->assertEquals('test-2', $array[1]['name']); } public function test2() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $collection = $em->createSthCollection('Account', [ 'limit' => 2, 'orderBy' => 'name', ]); $collection = new \Espo\ORM\Sth2Collection('Account', $em->getEntityFactory(), $em->getQuery(), $em->getPdo(), [ 'limit' => 2, 'orderBy' => 'name', ]); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); } public function testFind() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $collection = $em->getRepository('Account')->where([ 'name' => 'test-1', ])->find(['returnSthCollection' => true]); $this->assertEquals("Espo\\ORM\\Sth2Collection", get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(1, $count); } public function testFindRelatedOneToMany() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $account = $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Opportunity', [ 'name' => 'o-1', 'accountId' => $account->id, ]); $em->createEntity('Opportunity', [ 'name' => 'o-2', 'accountId' => $account->id, ]); $collection = $em->getRepository('Account')->findRelated($account, 'opportunities', [ 'returnSthCollection' => true, 'orderBy' => 'name', ]); $this->assertEquals("Espo\\ORM\\Sth2Collection", get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); $array = $collection->toArray(); $this->assertEquals($array[0]['name'], 'o-1'); } public function testFindRelatedManyToMany() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $contact = $em->createEntity('Contact', [ 'lastName' => 'test-1', ]); $em->createEntity('Opportunity', [ 'name' => 'o-1', 'contactsIds' => [$contact->id], ]); $em->createEntity('Opportunity', [ 'name' => 'o-2', 'contactsIds' => [$contact->id], ]); $collection = $em->getRepository('Contact')->findRelated($contact, 'opportunities', [ 'returnSthCollection' => true, ]); $this->assertEquals("Espo\\ORM\\Sth2Collection", get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); } }