/**
  * @param Questionnaire $questionnaire
  * @return int
  */
 protected function calculateAerobicRag(Questionnaire $questionnaire)
 {
     if (AerobicIsGreenSpecification::isSatisfiedBy($questionnaire)) {
         return self::SCORE_GREEN;
     } elseif (AerobicIsRedSpecification::isSatisfiedBy($questionnaire)) {
         return self::SCORE_RED;
     }
     return self::SCORE_AMBER;
 }
 public function testIHave150MinutesAnd3OrMoreDaysIAmAerobicGreen()
 {
     $aerobic = array('mon' => 50, 'tue' => 50, 'wed' => 50);
     $questionnaire = new Questionnaire(new Person());
     $moving = $questionnaire->getMoving();
     $moving->setAerobicActivityDays($aerobic)->setCompletedDate(new \DateTime());
     $questionnaire->setMoving($moving);
     $this->assertTrue(AerobicIsGreenSpecification::isSatisfiedBy($questionnaire));
 }
 public function testIHave60OrMoreMinutesAndLessThanTwoDaysIAmAerobicAmber()
 {
     $aerobic = array('mon' => 50, 'wed' => 40);
     $questionnaire = new Questionnaire(new Person());
     $moving = $questionnaire->getMoving();
     $moving->setAerobicActivityDays($aerobic)->setCompletedDate(new \DateTime());
     $questionnaire->setMoving($moving);
     $this->assertFalse(AerobicIsGreenSpecification::isSatisfiedBy($questionnaire));
     $this->assertFalse(AerobicIsRedSpecification::isSatisfiedBy($questionnaire));
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     return AerobicIsGreenSpecification::isSatisfiedBy($questionnaire) && StrengtheningIsRedSpecification::isSatisfiedBy($questionnaire);
 }