public function testCreateQuestionnaire()
 {
     $this->createQuestionnaire();
     $this->assertNotNull($this->result);
     $this->assertStringStartsWith('FIRST_NAME ', $this->result->getPerson()->getFirstName());
     $this->assertNotEmpty($this->result->getId());
 }
 /**
  * @param Questionnaire $questionnaire
  * @return Questionnaire
  */
 public function populateAddressDetailsFromPostCode(Questionnaire $questionnaire)
 {
     $address = $questionnaire->getPerson()->getAddress();
     if ($this->hasPostCode($address) && $this->loadAuthorityForPostCode($address)) {
         $questionnaire->getPerson()->setAddress($address);
     }
     return $questionnaire;
 }
 public function testGetSetPerson()
 {
     $expected = (new Person())->setTitle("Title")->setFirstName("First")->setLastName("Last")->setGender("F")->setAge(75);
     $this->assertNotEmpty($this->instance->getPerson());
     $this->assertNotEquals($expected, $this->instance->getPerson());
     $this->assertTrue($this->instance->setPerson($expected) instanceof Questionnaire);
     $this->assertEquals($expected, $this->instance->getPerson());
 }
 /**
  * @param Questionnaire $questionnaire
  * @param Document      $document
  */
 protected function addSignedInCompletedRecords(Questionnaire $questionnaire, Document &$document)
 {
     if (true === $questionnaire->isCompleted() && true === $questionnaire->getPerson()->isSignedUp()) {
         $document->addRecord(new Record($questionnaire, $this->getContainer()->get('translator')));
     }
     $this->updateQuestionnaireAddressAndStatus($questionnaire);
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     $maxUnits = DrinkingScore::getDailyMaxUnits($questionnaire->getDrinking());
     $gender = $questionnaire->getPerson()->getGender();
     switch ($gender) {
         case Person::GENDER_FEMALE:
             return $maxUnits > DrinkingScore::DAILY_CUTOFF_UNITS_FEMALE;
         case Person::GENDER_MALE:
             return $maxUnits > DrinkingScore::DAILY_CUTOFF_UNITS_MALE;
     }
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     return self::unitsInLowRiskForGender($questionnaire->getPerson(), $questionnaire->getDrinking());
 }
 public function testSpecificationReturnsTrue()
 {
     $questionnaire = new Questionnaire(new Person());
     $questionnaire->getPerson()->setGender('female');
     $this->assertTrue($this->instance->isSatisfiedBy($questionnaire));
 }
 /**
  * @JMS\VirtualProperty
  * @JMS\SerializedName("preffered_drink_type")
  *
  * Which drink type has the most captured in any drinks collection
  * @return string
  * @JMS\Groups({"api_response"})
  */
 public function getPreferredDrinkType()
 {
     $drinkType = DrinkingScore::calculatePreferredDrinkType($this);
     $gender = $this->questionnaire->getPerson()->getGender();
     return array('type' => $drinkType, 'count' => (int) DrinkingScore::getDisplayUnits($gender, $drinkType));
 }
 public function testSubstitutionOfThreeOrMoreMotivations()
 {
     $questionnaire = new Questionnaire(new Person());
     $questionnaire->getPerson()->setGender('male');
     $questionnaire->getMoving()->setCompletedDate(new \DateTime());
     $questionnaire->getEating()->setCompletedDate(new \DateTime());
     $questionnaire->getDrinking()->setCompletedDate(new \DateTime());
     $questionnaire->getSmoking()->setCompletedDate(new \DateTime());
     $questionnaire->getAboutYou()->getMotivations()->setAlertness(true)->setAppearance(true)->setWeight(true)->setEnergy(true);
     $priorityCopy = $this->instance->buildNarrative($questionnaire)->getSubstitutions()['{{PRIORITY_COPY}}'];
     $this->assertEquals(1, substr_count($priorityCopy, 'and'));
     $this->assertEquals(1, substr_count($priorityCopy, ', '));
 }
 /**
  * @inheritDoc
  */
 public static function isSatisfiedBy(Questionnaire $questionnaire)
 {
     return $questionnaire->getPerson()->getGender() === 'male';
 }
 public function testICanGetAnRedNarrativeAsAMaleDrinker()
 {
     $questionnaire = new Questionnaire(new Person());
     $questionnaire->getPerson()->setGender('male');
     $questionnaire->getAboutYou()->getFeelings()->setEnergy(100)->setWeight(20);
     $drinks = new Drinks();
     $drinks->setBeerCiderPintAmount(80)->setSpiritsAmount(30);
     $questionnaire->getDrinking()->setDoYouDrink(Drinking::DOES_DRINK)->setWhichDaysDoYouDrink('mon, tues, wed, thurs, fri, sat, sun')->setWeekdayDrinks($drinks)->setWeekendDrinks($drinks)->setCompletedDate(new \DateTime());
     $expected = array('drinking' => array('drinking_red_min_weight_gt_5_days_male'));
     $this->assertEquals($expected, $this->instance->buildNarrative($questionnaire)->getMessages());
 }