public function testPublishTexts_2ArchivedTexts_1Published() { $project = self::$environ->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE); $text1 = new TextModel($project); $text1->title = 'Some Title'; $text1->isArchived = true; $text1->write(); $text2 = new TextModel($project); $text2->title = 'Another Title'; $text2->isArchived = true; $text2->write(); $this->assertTrue($text1->isArchived); $this->assertTrue($text2->isArchived); $count = TextCommands::publishTexts($project->id->asString(), array($text1->id->asString())); $text1->read($text1->id->asString()); $text2->read($text2->id->asString()); $this->assertEquals(1, $count); $this->assertNotTrue($text1->isArchived); $this->assertTrue($text2->isArchived); }
/** * @param string $projectId * @param array $object (json encoded) * @return string Id of text updated/added */ public static function updateText($projectId, $object) { $projectModel = new ProjectModel($projectId); ProjectCommands::checkIfArchivedAndThrow($projectModel); $textModel = new TextModel($projectModel); $isNewText = $object['id'] == ''; if (!$isNewText) { $textModel->read($object['id']); } JsonDecoder::decode($textModel, $object); TextCommands::makeValidRange($object); if (TextCommands::hasRange($object)) { $usxTrimHelper = new UsxTrimHelper($textModel->content, $object['startCh'] || 0, $object['startVs'] || 0, $object['endCh'] || 0, $object['endVs'] || 0); $textModel->content = $usxTrimHelper->trimUsx(); } $textId = $textModel->write(); if ($isNewText) { ActivityCommands::addText($projectModel, $textId, $textModel); } return $textId; }
public function text_publish($textIds) { return TextCommands::publishTexts($this->projectId, $textIds); }
$fourthProjectId = ProjectCommands::createProject($constants['fourthProjectName'], $constants['fourthProjectCode'], $projectType, $managerUserId, $website); $fourthProjectModel = new ProjectModel($fourthProjectId); $fourthProjectModel->projectCode = $constants['fourthProjectCode']; $fourthProjectModel->allowInviteAFriend = $constants['fourthProjectAllowInvites']; $fourthProjectModel->write(); $srProject = array('identifier' => $constants['srIdentifier'], 'name' => $constants['srName'], 'repository' => 'http://public.languagedepot.org', 'role' => 'manager'); $srTestProjectId = ProjectCommands::createProject($constants['srProjectName'], $constants['srProjectCode'], $projectType, $managerUserId, $website, $srProject); ProjectCommands::updateUserRole($testProjectId, $managerUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($testProjectId, $memberUserId, ProjectRoles::CONTRIBUTOR); ProjectCommands::updateUserRole($testProjectId, $resetUserId, ProjectRoles::CONTRIBUTOR); ProjectCommands::updateUserRole($otherProjectId, $adminUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($fourthProjectId, $adminUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($srTestProjectId, $adminUserId, ProjectRoles::MANAGER); if ($site == 'scriptureforge') { $text1 = TextCommands::updateText($testProjectId, array('id' => '', 'title' => $constants['testText1Title'], 'content' => $constants['testText1Content'])); $text2 = TextCommands::updateText($testProjectId, array('id' => '', 'title' => $constants['testText2Title'], 'content' => $constants['testText2Content'])); $question1 = QuestionCommands::updateQuestion($testProjectId, array('id' => '', 'textRef' => $text1, 'title' => $constants['testText1Question1Title'], 'description' => $constants['testText1Question1Content'])); $question2 = QuestionCommands::updateQuestion($testProjectId, array('id' => '', 'textRef' => $text1, 'title' => $constants['testText1Question2Title'], 'description' => $constants['testText1Question2Content'])); $template1 = QuestionTemplateCommands::updateTemplate($testProjectId, array('id' => '', 'title' => 'first template', 'description' => 'not particularly interesting')); $template2 = QuestionTemplateCommands::updateTemplate($testProjectId, array('id' => '', 'title' => 'second template', 'description' => 'not entirely interesting')); $answer1 = QuestionCommands::updateAnswer($testProjectId, $question1, array('id' => '', 'content' => $constants['testText1Question1Answer']), $managerUserId); $answer1Id = array_keys($answer1)[0]; $answer2 = QuestionCommands::updateAnswer($testProjectId, $question2, array('id' => '', 'content' => $constants['testText1Question2Answer']), $managerUserId); $answer2Id = array_keys($answer2)[0]; $comment1 = QuestionCommands::updateComment($testProjectId, $question1, $answer1Id, array('id' => '', 'content' => $constants['testText1Question1Answer1Comment']), $managerUserId); $comment2 = QuestionCommands::updateComment($testProjectId, $question2, $answer2Id, array('id' => '', 'content' => $constants['testText1Question2Answer2Comment']), $managerUserId); } elseif ($site == 'languageforge') { // Set up LanguageForge E2E test envrionment here ProjectCommands::updateUserRole($testProjectId, $observerUserId, LexRoles::OBSERVER); $testProjectModel = new LexProjectModel($testProjectId); $testProjectModel->addInputSystem('th-fonipa', 'tipa', 'Thai');
public function testTextCRUD_CRUDOK() { $projectId = self::$environ->makeProject(); $project = new ProjectModel($projectId); $userId = self::$environ->getProjectMember($projectId, 'user1'); // Initial List $result = self::$environ->fixJson(ProjectPageDto::encode($projectId, $userId)); $count = count($result['texts']); // Create $model = array('id' => '', 'title' => 'SomeText'); $id = TextCommands::updateText($projectId, $model); $this->assertNotNull($id); $this->assertEquals(24, strlen($id)); // Read $result = self::$environ->fixJson(TextCommands::readText($projectId, $id)); $this->assertNotNull($result['id']); $this->assertEquals('SomeText', $result['title']); // Update $result['title'] = 'OtherText'; $id = TextCommands::updateText($projectId, $result); $this->assertNotNull($id); $this->assertEquals($result['id'], $id); // Read back $result = self::$environ->fixJson(TextCommands::readText($projectId, $id)); $this->assertEquals('OtherText', $result['title']); // List $result = self::$environ->fixJson(ProjectPageDto::encode($projectId, $userId)); $this->assertCount($count + 1, $result['texts']); // Delete $result = TextCommands::deleteTexts($projectId, array($id)); $this->assertTrue($result > 0); // List to confirm delete $result = self::$environ->fixJson(ProjectPageDto::encode($projectId, $userId)); $this->assertCount($count, $result['texts']); // Clean up after ourselves ProjectCommands::deleteProjects(array($projectId), $project->ownerRef->asString()); }