示例#1
0
 /**
  * Run action: update exists accounts or add new account
  */
 public function run()
 {
     $model = $this->model;
     $successMessage = '';
     $errorMessage = '';
     $query = $model->getAccounts();
     $query->modelClass = UserAccountForm::className();
     $accounts = $query->indexBy('id')->all();
     // new model
     $newAccount = new UserAccountForm();
     if (Yii::$app->request->post('add-new') && $newAccount->load(Yii::$app->request->post()) && $newAccount->validate()) {
         // add new username
         $result = $this->userModule->updateVcsBindings($model, [$newAccount]);
         if ($result) {
             $successMessage = Yii::t('user', 'New binding was successfully added');
         } else {
             $errorMessage = Yii::t('user', 'Error add a new binding');
         }
     } elseif (Yii::$app->request->post('update') && UserAccountForm::loadMultiple($accounts, Yii::$app->request->post()) && UserAccountForm::validateMultiple($accounts)) {
         $result = $this->userModule->updateVcsBindings($model, $accounts);
         if ($result) {
             $successMessage = Yii::t('user', 'Bindings was successfully updated');
         } else {
             $errorMessage = Yii::t('user', 'Update bindings error');
         }
     }
     if (!empty($_POST)) {
         // reset accounts list
         $accounts = $query->indexBy('id')->all();
     }
     return $this->controller->render('vcs-bindings', ['model' => $model, 'accounts' => $accounts, 'newAccount' => $newAccount, 'successMessage' => $successMessage, 'errorMessage' => $errorMessage]);
 }
示例#2
0
 /**
  * Tests VCS bindings update
  *
  * @return User
  *
  * @depends testLockAndActivate
  */
 public function testVCSBindings()
 {
     /* @var $user User */
     $user = $this->getModule('Yii2')->grabFixture('users', 'activeUser1');
     $accounts = [0 => new UserAccountForm(['username' => 'testing user name git', 'type' => UserAccount::TYPE_GIT]), 1 => new UserAccountForm(['username' => 'testing user name hg', 'type' => UserAccount::TYPE_HG])];
     $this->assertTrue($this->userModule->updateVcsBindings($user, $accounts));
     $this->assertEquals(count($accounts), count($user->accounts));
     unset($user->accounts);
     $accounts[0]->deletionFlag = true;
     $this->assertTrue($this->userModule->updateVcsBindings($user, $accounts));
     $this->assertEquals(1, count($user->accounts));
     /* @var $contributorApi ContributorApi */
     $contributorApi = Yii::$app->contributors;
     $getByName = $contributorApi->getContributor(UserAccount::TYPE_HG, 'testing user name hg');
     $this->assertInstanceOf(User::className(), $getByName);
     $this->assertEquals($getByName->id, $user->id);
     return $user;
 }