/** * 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]); }
/** * 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; }