/** * Test get contributor */ public function testGetContributor() { /* @var $user1 User */ $user1 = $this->getModule('Yii2')->grabFixture('users', 'activeUser1'); /* @var $user2 User */ $user2 = $this->getModule('Yii2')->grabFixture('users', 'activeUser2'); foreach ($user1->accounts as $account) { $contributor = $this->contributorApi->getContributor($account->type, $account->username); $this->assertEquals($contributor->getId(), $user1->id); $this->assertEquals($contributor->getContributorEmail(), $user1->email); } foreach ($user2->accounts as $account) { $contributor = $this->contributorApi->getContributor($account->type, $account->username); $this->assertInstanceOf(ContributorInterface::class, $contributor); $this->assertEquals($contributor->getId(), $user2->id); $this->assertEquals($contributor->getContributorEmail(), $user2->email); } // test unregistered contributor foreach ([UserAccount::TYPE_GIT, UserAccount::TYPE_HG, UserAccount::TYPE_SVN] as $type) { $username = '******' . $type; $useremail = 'unregistered user email' . $type; $contributor = $this->contributorApi->getContributor($type, $username, $useremail); $this->assertInstanceOf(UnregisteredContributor::className(), $contributor); $this->assertEquals($username, $contributor->getContributorName()); $this->assertEquals($useremail, $contributor->getContributorEmail()); $this->assertNull($contributor->getDefaultViewerId()); $this->assertNull($contributor->getContributorId()); $this->assertNull($contributor->getAvatarUrl()); } }
/** * Test unknown contributor avatar */ public function testWithUnknownContributor() { $contributor = $this->contributorApi->getContributor('git', 'Test contributor'); $this->assertInstanceOf(UnregisteredContributor::className(), $contributor); $expectedString = '<span class="avatar avatar-test-avatar-size"></span>'; $expectedDom = new DOMDocument(); $expectedDom->loadXML($expectedString); $result = ContributorAvatar::widget(['contributor' => $contributor, 'size' => 'test-avatar-size', 'asBlock' => false]); $resultDom = new DOMDocument(); $resultDom->loadXML($result); $this->assertEqualXMLStructure($expectedDom->firstChild, $resultDom->firstChild, true); }
/** * Test unknown contributor avatar */ public function testWithUnknownContributor() { $contributor = $this->contributorApi->getContributor('git', 'Test contributor', '*****@*****.**'); $this->assertInstanceOf(UnregisteredContributor::className(), $contributor); $result = ContributorLine::widget(['contributor' => $contributor, 'avatarSize' => 'test-avatar-size', 'showEmail' => true]); $this->assertContains('<span class="avatar avatar-test-avatar-size"></span>', $result); $this->assertContains('Test contributor <test@domain.ltd>', $result); $this->assertContains('Not registered', $result); $result = ContributorLine::widget(['contributor' => $contributor, 'avatarSize' => 'test-avatar-size', 'showEmail' => false]); $this->assertContains('<span class="avatar avatar-test-avatar-size"></span>', $result); $this->assertContains('Test contributor', $result); $this->assertContains('Not registered', $result); $this->assertNotContains('<test@domain.ltd>', $result); }
/** * Test widget with not registered contributor * * @depends testHeadString */ public function testWithoutContributor() { list($contributor, $reviewer, $authModel, $project, $commit) = $this->prepareFixtures(); /* @var $contributor User */ /* @var $reviewer User */ /* @var $authModel Auth */ /* @var $project Project */ /* @var $commit BaseCommit */ $result = CommitPanel::widget(['project' => $project, 'commit' => $commit, 'contributor' => $this->contributorApi->getContributor($project->repo_type, $commit->contributorName, $commit->contributorEmail), 'authUser' => $authModel, 'reviewModel' => null]); // check commiter name $expectedString = $commit->contributorName . ' ' . '<' . $commit->contributorEmail . '> ' . 'at ' . Html::encode($commit->getDate()->format("d\\'M y H:i:s")); $this->assertContains($expectedString, $result); // check has no contributor name $unexpectedString = $contributor->name; $this->assertNotContains($unexpectedString, $result); $this->assertContains('Not registered', $result); }
/** * To be reviewer * * @param integer $projectId Project identifier * @param string $commitId Commit identifier * * @return array */ public function actionCreateSelfReview($projectId, $commitId) { Yii::$app->response->format = Response::FORMAT_JSON; $project = $this->findProject($projectId); $commit = $this->findCommit($project, $commitId); $result = ['success' => false, 'html' => '', 'message' => '']; // find existent review model $model = ContributionReview::find()->andWhere(['project_id' => $project->id, 'commit_id' => $commit->getId()])->one(); if ($model && $model->reviewer_id == Yii::$app->user->getId()) { // user try to create existent model // it's not an error $result['success'] = true; } elseif ($model && is_null($model->reviewer_id)) { // model exists, but reviewer is not set $model->reviewer_id = Yii::$app->user->getId(); if ($model->save()) { $result['success'] = true; } } elseif ($model) { // other reviewer already installed $result['success'] = false; $result['message'] = Yii::t('project', 'Reviewer is already installed to this contribution'); } else { // model is not exists // create it $contributor = $this->contributorApi->getContributor($project->repo_type, $commit->contributorName, $commit->contributorEmail); $reviewer = $this->contributorApi->getContributorById(Yii::$app->user->getId()); $model = $this->projectApi->createContributionReview($project, $commit, $contributor, $reviewer); if (!$model instanceof ContributionReview) { $result['success'] = false; $result['message'] = Yii::t('project', 'An error occurred during the creation of the review'); } else { $result['success'] = true; } } if ($result['success'] && $model) { $result['html'] = CommitPanel::widget(['reviewModel' => $model, 'authUser' => Yii::$app->user, 'contributor' => $model->contributor, 'project' => $project, 'commit' => $commit, 'reviewButtonClass' => 'js-review-button']); } return $result; }