function setProject(Project $ref) { if (is_null($ref)) { throw new OutletException("You can not set this to NULL since this relationship has not been marked as optional"); return parent::setProject(null); } $this->ProjectID = $ref->ProjectID; return parent::setProject($ref); }
function testEagerFetchingManyToOne() { $bug = new Bug(); $bug->Title = 'Test Bug'; $project = new Project(); $project->setName('Test Project'); $bug->setProject($project); $outlet = Outlet::getInstance(); $outlet->save($bug); // clear cache because it will be used to check if project was loaded $outlet->clearCache(); $bug = $outlet->from('Bug')->with('Project')->find(); $this->assertEquals(1, count(OutletMapper::$map['Project'])); }
/** * Try indirectly saving the same project twice * and make sure it only gets inserted once */ function testIndirectSave() { $outlet = Outlet::getInstance(); $p = new Project(); $p->setName('Project 1'); $b1 = new Bug(); $b1->Title = 'Bug 1'; $b1->setProject($p); $outlet->save($p); $b2 = new Bug(); $b2->Title = 'Bug 2'; $b2->setProject($p); $outlet->save($b2); $this->assertEquals(count($outlet->select('Project', 'where {Project.Name} = ?', array('Project 1'))), 1, 'Only one project inserted'); }
function testManyToMany() { $user = new User(); $user->Firstname = 'Alvaro'; $user->LastName = 'Carrasco'; $bug = new Bug(); $bug->Name = 'Test Bug'; $project = new Project(); $project->setName('Test Project'); $bug->setProject($project); $outlet = Outlet::getInstance(); $outlet->save($user); $outlet->save($bug); $user->getBugs()->add($bug); $outlet->save($user); $this->assertTrue(count($user->getBugs()) == 1, 'One project attached to this user'); }
function testDataTypes() { $outlet = Outlet::getInstance(); $project = new Project(); $project->setName('Project 1'); $outlet->save($project); $project_id = $project->getProjectID(); // test insert $bug = new Bug(); $bug->Title = 'Test bug'; $bug->setProject($project); $outlet->save($bug); $bug_id = $bug->ID; // Clears cache so we guarantee that the values comes from db $outlet->clearCache(); $bug = $outlet->load('Bug', $bug_id); $project = $outlet->load('Project', $project_id); $this->assertTrue(is_string($bug->Title)); $this->assertTrue(is_int($bug->ID)); $this->assertTrue(is_float($bug->TimeToFix)); $this->assertTrue($project->getCreatedDate() instanceof DateTime); }