public function testSerializeBigMssql() { if (!$this->_prepareTestMssql()) { $this->markTestSkipped("Skipped"); return; } $data = serialize(Personas::find(array('limit' => 33))); $personas = unserialize($data); $this->assertEquals(get_class($personas), 'Phalcon\\Mvc\\Model\\Resultset\\Simple'); $this->_applyTestsBig($personas); }
protected function _executeTestsNormal($di) { $this->_prepareDb($di->getShared('db')); //Count tests $this->assertEquals(People::count(), Personas::count()); $params = array(); $this->assertEquals(People::count($params), Personas::count($params)); $params = array("estado='I'"); $this->assertEquals(People::count($params), Personas::count($params)); $params = "estado='I'"; $this->assertEquals(People::count($params), Personas::count($params)); $params = array("conditions" => "estado='I'"); $this->assertEquals(People::count($params), Personas::count($params)); //Find first $people = People::findFirst(); $this->assertTrue(is_object($people)); $this->assertEquals(get_class($people), 'People'); $persona = Personas::findFirst(); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $people = People::findFirst("estado='I'"); $this->assertTrue(is_object($people)); $persona = Personas::findFirst("estado='I'"); $this->assertTrue(is_object($persona)); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $people = People::findFirst(array("estado='I'")); $persona = Personas::findFirst(array("estado='I'")); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $params = array("conditions" => "estado='I'"); $people = People::findFirst($params); $persona = Personas::findFirst($params); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $params = array("conditions" => "estado='A'", "order" => "nombres"); $people = People::findFirst($params); $persona = Personas::findFirst($params); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $params = array("estado='A'", "order" => "nombres DESC", "limit" => 30); $people = People::findFirst($params); $persona = Personas::findFirst($params); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $params = array("estado=?1", "bind" => array(1 => 'A'), "order" => "nombres DESC", "limit" => 30); $people = People::findFirst($params); $persona = Personas::findFirst($params); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $params = array("estado=:estado:", "bind" => array("estado" => 'A'), "order" => "nombres DESC", "limit" => 30); $people = People::findFirst($params); $persona = Personas::findFirst($params); $this->assertEquals($people->nombres, $persona->nombres); $this->assertEquals($people->estado, $persona->estado); $robot = Robots::findFirst(1); $this->assertEquals(get_class($robot), 'Robots'); //Find tests $personas = Personas::find(); $people = People::find(); $this->assertEquals(count($personas), count($people)); $personas = Personas::find("estado='I'"); $people = People::find("estado='I'"); $this->assertEquals(count($personas), count($people)); $personas = Personas::find(array("estado='I'")); $people = People::find(array("estado='I'")); $this->assertEquals(count($personas), count($people)); $personas = Personas::find(array("estado='A'", "order" => "nombres")); $people = People::find(array("estado='A'", "order" => "nombres")); $this->assertEquals(count($personas), count($people)); $personas = Personas::find(array("estado='A'", "order" => "nombres", "limit" => 100)); $people = People::find(array("estado='A'", "order" => "nombres", "limit" => 100)); $this->assertEquals(count($personas), count($people)); $params = array("estado=?1", "bind" => array(1 => "A"), "order" => "nombres", "limit" => 100); $personas = Personas::find($params); $people = People::find($params); $this->assertEquals(count($personas), count($people)); $params = array("estado=:estado:", "bind" => array("estado" => "A"), "order" => "nombres", "limit" => 100); $personas = Personas::find($params); $people = People::find($params); $this->assertEquals(count($personas), count($people)); $number = 0; $peoples = Personas::find(array("conditions" => "estado='A'", "order" => "nombres", "limit" => 20)); foreach ($peoples as $people) { $number++; } $this->assertEquals($number, 20); $persona = new Personas($di); $persona->cedula = 'CELL' . mt_rand(0, 999999); $this->assertFalse($persona->save()); //Messages $this->assertEquals(count($persona->getMessages()), 4); $messages = array(0 => ModelMessage::__set_state(array('_type' => 'PresenceOf', '_message' => 'tipo_documento_id is required', '_field' => 'tipo_documento_id')), 1 => ModelMessage::__set_state(array('_type' => 'PresenceOf', '_message' => 'nombres is required', '_field' => 'nombres')), 2 => ModelMessage::__set_state(array('_type' => 'PresenceOf', '_message' => 'cupo is required', '_field' => 'cupo')), 3 => ModelMessage::__set_state(array('_type' => 'PresenceOf', '_message' => 'estado is required', '_field' => 'estado'))); $this->assertEquals($persona->getMessages(), $messages); //Save $persona = new Personas($di); $persona->cedula = 'CELL' . mt_rand(0, 999999); $persona->tipo_documento_id = 1; $persona->nombres = 'LOST'; $persona->telefono = '1'; $persona->cupo = 20000; $persona->estado = 'A'; $this->assertTrue($persona->save()); $persona = new Personas($di); $persona->cedula = 'CELL' . mt_rand(0, 999999); $persona->tipo_documento_id = 1; $persona->nombres = 'LOST LOST'; $persona->telefono = '2'; $persona->cupo = 0; $persona->estado = 'X'; $this->assertTrue($persona->save()); //Check correct save $persona = Personas::findFirst(array("estado='X'")); $this->assertNotEquals($persona, false); $this->assertEquals($persona->nombres, 'LOST LOST'); $this->assertEquals($persona->estado, 'X'); //Update $persona->cupo = 150000; $persona->telefono = '123'; $this->assertTrue($persona->update()); //Checking correct update $persona = Personas::findFirst(array("estado='X'")); $this->assertNotEquals($persona, false); $this->assertEquals($persona->cupo, 150000); $this->assertEquals($persona->telefono, '123'); //Update $this->assertTrue($persona->update(array('nombres' => 'LOST UPDATE', 'telefono' => '2121'))); //Checking correct update $persona = Personas::findFirst(array("estado='X'")); $this->assertNotEquals($persona, false); $this->assertEquals($persona->nombres, 'LOST UPDATE'); $this->assertEquals($persona->telefono, '2121'); //Create $persona = new Personas($di); $persona->cedula = 'CELL' . mt_rand(0, 999999); $persona->tipo_documento_id = 1; $persona->nombres = 'LOST CREATE'; $persona->telefono = '1'; $persona->cupo = 21000; $persona->estado = 'A'; $this->assertTrue($persona->create()); $persona = new Personas($di); $this->assertTrue($persona->create(array('cedula' => 'CELL' . mt_rand(0, 999999), 'tipo_documento_id' => 1, 'nombres' => 'LOST CREATE', 'telefono' => '1', 'cupo' => 21000, 'estado' => 'A'))); //Grouping $difEstados = People::count(array("distinct" => "estado")); $this->assertEquals($difEstados, 3); $group = People::count(array("group" => "estado")); $this->assertEquals(count($group), 3); //Deleting $before = People::count(); $this->assertTrue($persona->delete()); $this->assertEquals($before - 1, People::count()); //Assign $persona = new Personas(); $persona->assign(array('tipo_documento_id' => 1, 'nombres' => 'LOST CREATE', 'telefono' => '1', 'cupo' => 21000, 'estado' => 'A', 'notField' => 'SOME VALUE')); $expected = array('cedula' => NULL, 'tipo_documento_id' => 1, 'nombres' => 'LOST CREATE', 'telefono' => '1', 'direccion' => NULL, 'email' => NULL, 'fecha_nacimiento' => NULL, 'ciudad_id' => NULL, 'creado_at' => NULL, 'cupo' => 21000, 'estado' => 'A'); $this->assertEquals($persona->toArray(), $expected); //Refresh $persona = Personas::findFirst(); $personaData = $persona->toArray(); $persona->assign(array('tipo_documento_id' => 1, 'nombres' => 'LOST CREATE', 'telefono' => '1', 'cupo' => 21000, 'estado' => 'A', 'notField' => 'SOME VALUE')); $persona->refresh(); $this->assertEquals($personaData, $persona->toArray()); // Issue 1314 $parts = new Parts2(); $parts->save(); }
public function testBigResultsetIteration() { if (!$this->_prepareTestSqlite()) { $this->markTestSkipped("Skipped"); return; } // Resultsets count > 25 use fetch for one row at a time $personas = Personas::find(array('limit' => 33)); $this->assertEquals(count($personas), 33); $this->assertEquals(get_class($personas->getLast()), 'Personas'); // take first object as reference $persona_first = $personas[0]; $this->assertEquals(get_class($persona_first), 'Personas'); // make sure objects are the same -> object was not recreared $this->assertSame($personas[0], $persona_first); $this->assertSame($personas->current(), $persona_first); $personas->rewind(); $this->assertTrue($personas->valid()); $this->assertSame($personas->current(), $persona_first); // second element $personas->next(); $this->assertTrue($personas->valid()); $persona_second = $personas->current(); $this->assertSame($persona_second, $personas[1]); // move to last element $this->assertSame($personas->getLast(), $personas[32]); // invalid element $personas->seek(33); $this->assertFalse($personas->valid()); $this->assertFalse($personas->current()); try { $persona = $personas[33]; $this->assertFalse(true); } catch (Exception $e) { $this->assertEquals($e->getMessage(), 'The index does not exist in the cursor'); } // roll-back-cursor -> query needs to be reexecuted // first object was now recreated... different instance, but equal content $this->assertNotSame($personas[0], $persona_first); $this->assertEquals($personas[0], $persona_first); $persona_first = $personas[0]; // toArray also re-executes the query and invalidates internal pointer $array = $personas->toArray(); $this->assertEquals(count($array), 33); // internal query is re-executed again and set to first $this->assertNotSame($personas[0], $persona_first); $this->assertEquals($personas[0], $persona_first); // move to second element and validate $personas->next(); $this->assertTrue($personas->valid()); $this->assertEquals(get_class($personas[1]), 'Personas'); $this->assertSame($personas->current(), $personas[1]); $this->assertEquals($persona_second, $personas[1]); // pick some random indices $this->assertEquals(get_class($personas[12]), 'Personas'); $this->assertEquals(get_class($personas[23]), 'Personas'); $this->assertEquals(get_class($personas[23]), 'Personas'); }