Example #1
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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 &lt;test@domain.ltd&gt;', $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('&lt;test@domain.ltd&gt;', $result);
 }
Example #4
0
 /**
  * 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 . ' ' . '&lt;' . $commit->contributorEmail . '&gt; ' . '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;
 }