public function testGetNextSession()
 {
     $c = new Course();
     // Finished offerings
     $fo1 = $this->buildOffering(1, new \DateTime("2012-06-03"), Offering::START_DATES_KNOWN);
     $fo2 = $this->buildOffering(2, new \DateTime("2012-05-03"), Offering::START_DATES_KNOWN);
     $fo3 = $this->buildOffering(3, new \DateTime("2012-07-03"), Offering::START_DATES_KNOWN);
     // Ongoing session
     $oodt1 = new \DateTime();
     $oodt1->sub(new \DateInterval("P10D"));
     $oo1 = $this->buildOffering(4, $oodt1, Offering::START_DATES_KNOWN);
     // Self paced session
     $so1 = $this->buildOffering(5, new \DateTime("2012-07-03"), Offering::COURSE_OPEN);
     // Upcoming sessions
     $uo1 = $this->buildOffering(6, $this->getFutureDateUtility("P20D"), Offering::START_DATES_KNOWN);
     $uo2 = $this->buildOffering(7, $this->getFutureDateUtility("P10D"), Offering::START_DATES_KNOWN);
     $uo3 = $this->buildOffering(8, $this->getFutureDateUtility("P30D"), Offering::START_DATES_KNOWN);
     // Course with single finished offering
     $c->addOffering($fo1);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($fo1->getId(), $next->getId());
     // Course with multiple finished offering
     $c->addOffering($fo2);
     $c->addOffering($fo3);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($fo3->getId(), $next->getId());
     // Course with ongoing sessions
     $c->addOffering($oo1);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($oo1->getId(), $next->getId());
     // Course with with self paced sessions
     $c->addOffering($so1);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($so1->getId(), $next->getId());
     // Course with single upcoming session
     $c->addOffering($uo1);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($uo1->getId(), $next->getId());
     // Course with multiple upcoming sessions
     $c->addOffering($uo2);
     $c->addOffering($uo3);
     $next = CourseUtility::getNextSession($c);
     $this->assertEquals($uo2->getId(), $next->getId());
 }