/**
  * @param ProjectModel $projectModel
  * @param string $questionId
  * @param QuestionModel $questionModel
  * @return string activity id
  */
 public static function addQuestion($projectModel, $questionId, $questionModel)
 {
     $activity = new ActivityModel($projectModel);
     $text = new TextModel($projectModel, $questionModel->textRef->asString());
     $activity->action = ActivityModel::ADD_QUESTION;
     $activity->textRef->id = $questionModel->textRef->asString();
     $activity->questionRef->id = $questionId;
     $activity->addContent(ActivityModel::TEXT, $text->title);
     $activity->addContent(ActivityModel::QUESTION, $questionModel->getTitleForDisplay());
     $activityId = $activity->write();
     UnreadActivityModel::markUnreadForProjectMembers($activityId, $projectModel);
     UnreadQuestionModel::markUnreadForProjectMembers($questionId, $projectModel);
     return $activityId;
 }
 public function testUnreadQuestionModel_markAllRead_unreadItems_noUnreadItems()
 {
     $e = new MongoTestEnvironment();
     $e->clean();
     $project = $e->createProject("unread_test", "unreadCode");
     $userId1 = $e->createUser('user1', 'user1', 'user1');
     $userId2 = $e->createUser('user2', 'user2', 'user2');
     $q1 = new QuestionModel($project);
     $q1->title = "Question 1";
     $qId1 = $q1->write();
     $q2 = new QuestionModel($project);
     $q2->title = "Question 2";
     $qId2 = $q2->write();
     $unreadModel = new UnreadQuestionModel($userId1, $project->id->asString());
     $unreadModel->markUnread($qId1);
     $unreadModel->markUnread($qId2);
     $unreadModel->write();
     $otherUnreadModel = new UnreadQuestionModel($userId1, $project->id->asString());
     $this->assertTrue($otherUnreadModel->isUnread($qId1));
     $this->assertTrue($otherUnreadModel->isUnread($qId2));
     $otherUnreadModel->markAllRead();
     $otherUnreadModel->write();
     $unreadModel->read();
     $this->assertFalse($unreadModel->isUnread($qId1));
     $this->assertFalse($unreadModel->isUnread($qId2));
 }