/** * @return array */ public function rules() { return [[['number', 'operatorId'], 'required'], ['number', 'match', 'pattern' => '/^9[0-9]{9}$/'], ['number', 'unique'], ['ownerId', 'filter', 'filter' => function ($value) { return empty($value) ? null : (int) $value; }], ['ownerId', 'exist', 'targetClass' => Employee::className(), 'targetAttribute' => 'id'], ['limit', 'integer', 'min' => 0], ['limit', function ($attribute) { if ($this->accounting && empty($this->{$attribute})) { $this->addError($attribute, "При выбранной опции «Учитывать перерасход» лимит должен быть указан"); } }, 'skipOnEmpty' => false], ['operatorId', MongoIdValidator::className(), 'forceFormat' => 'object'], ['operatorId', 'exist', 'targetClass' => Operator::className(), 'targetAttribute' => '_id'], ['destination', 'in', 'range' => [self::DESTINATION_MODEM, self::DESTINATION_PHONE]], ['options', function ($attribute) { $range = array_keys(Number::optionItems()); foreach ($this->{$attribute} as $item) { if (!in_array($item, $range)) { $this->addError('options', "Опция «{$item}» не существует."); } } }], ['comment', 'safe']]; }
*/ use app\tests\codeception\_pages\mobile\number\UpdatePage; use app\modules\mobile\models\Number; use app\modules\directory\models\Employee; /** * @var $model app\modules\mobile\models\Number */ $I = new FunctionalTester($scenario); $I->wantTo('ensure that update Number model works'); $page = UpdatePage::openBy($I); $model = $I->grabRecord(Number::className(), ['_id' => 'number1']); $I->seeInTitle('Номер ' . $model['number']); $I->dontSeeElement($page->fieldSelector('number')); $I->SeeElement("#documents-panel-body"); $I->SeeElement("#history-panel-body"); $I->seeInField($page->fieldSelector('ownerName'), $model->owner['fullName']); $I->seeInField($page->fieldSelector('ownerPost'), $model->owner['post']); $I->seeInField($page->fieldSelector('operatorId'), $model['operatorId']); $I->seeInField($page->fieldSelector('destination'), $model['destination']); $I->seeInField($page->fieldSelector('limit'), $model['limit']); foreach (array_keys(Number::optionItems()) as $option) { in_array($option, $model->options) ? $I->seeCheckboxIsChecked($page->fieldSelector($option)) : $I->dontSeeCheckboxIsChecked($page->fieldSelector($option)); } $I->seeInField($page->fieldSelector('comment'), $model['comment']); $owner = $I->grabRecord(Employee::className(), ['_id' => 'employee2']); $page->submit(['number' => '1234567890', 'ownerName' => $owner['fullName'], 'ownerPost' => $owner['post'], 'operatorId' => 'operator2', 'destination' => Number::DESTINATION_MODEM, 'limit' => '2000', 'options' => [Number::OPTION_TRIP], 'comment' => 'This is update comment']); $I->see("Данные успешно обновлены", '.alert-success'); $history = $model['history']; $history[count($history) - 1]['returnDate'] = time(); $history[] = ['ownerId' => 'employee2', 'rentDate' => time()]; $I->seeRecord(Number::className(), ['_id' => 'number1', 'number' => $model['number'], 'ownerId' => 'employee2', 'operatorId' => 'operator2', 'destination' => Number::DESTINATION_MODEM, 'limit' => 2000, 'options' => [Number::OPTION_TRIP], 'history' => $history, 'comment' => 'This is update comment']);