示例#1
0
 /**
  * @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']];
 }
示例#2
0
 */
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']);