public function testSubjectsCanBeRetrievedWhenReopeningTheRegistrationEvenThoughNoSubjectsWasSavedInitally() { $course1 = new VIH_Model_Course(); $course1->navn = 'Course 1'; $period1 = new VIH_Model_Course_Period(); $period1->name = 'Period 1'; $period1->Course = $course1; $period1->save(); $group1 = new VIH_Model_Course_SubjectGroup(); $group1->name = 'SubjectGroup 1'; $group1->Period = $period1; $subject1 = new VIH_Model_Subject(); $subject1->identifier = 'Subject 1'; $subject2 = new VIH_Model_Subject(); $subject2->identifier = 'Subject 2'; $group1->Subjects[] = $subject1; $group1->Subjects[] = $subject2; $group1->save(); $group1->Subjects[] = $subject1; $group1->Subjects[] = $subject2; $group1->save(); $course1->SubjectGroups[] = $group1; $course1->save(); // saved without Subjects try { $registrar = new VIH_Model_Course_Registration(); $registrar->Course = $course1; // $registrar->Subjects; // if this is uncommented the test will pass $registrar->save(); } catch (Doctrine_Record_Exception $e) { $this->fail($e->getMessage()); } $reopend = Doctrine_Core::getTable('VIH_Model_Course_Registration')->findOneById($registrar->id); try { $reopend->Subjects[] = $subject1; } catch (Doctrine_Record_Exception $e) { $this->fail($e->getMessage()); } $reopend->save(); try { $subject = $reopend->Subjects[0]; $this->assertTrue(is_object($subject)); $this->assertEqual('VIH_Model_Subject', get_class($reopend->Subjects[0])); } catch (Doctrine_Record_Exception $e) { $this->fail($e->getMessage()); } }
function postForm() { $values = $this->body(); $period = Doctrine::getTable('VIH_Model_Course_Period')->findOneById($this->context->getPeriodId()); $group = new VIH_Model_Course_SubjectGroup(); $group->Period = $period; $group->name = $values['name']; $group->elective_course = $values['elective_course']; $group->description = $values['description']; $course = $period->Course; $course->SubjectGroups[] = $group; $course->save(); try { $group->save(); } catch (Exception $e) { throw $e; } return new k_SeeOther($this->context->context->url()); }