public function testBatchRemoveForCompositePrimaryKey()
 {
     $ids = [];
     $depart = new UserDepartmentAssignment();
     $depart->userId = 1;
     $depart->departmentId = 2;
     $depart->save(false);
     $ids[] = ['userId' => $depart->userId, 'departmentId' => $depart->departmentId];
     $depart = new UserDepartmentAssignment();
     $depart->userId = 3;
     $depart->departmentId = 5;
     $depart->save(false);
     $ids[] = ['departmentId' => $depart->departmentId, 'userId' => $depart->userId];
     for ($i = 0; $i < 2; $i++) {
         $depart = new UserDepartmentAssignment();
         $depart->userId = $i + 1;
         $depart->departmentId = $i * 2;
     }
     Yii::$app->request->setBodyParams($ids);
     $this->specify('Remove a AR with single primary key', function () {
         $action = new BatchRemoveAction("batch-remove", null, ['modelClass' => 'tests\\codeception\\unit\\models\\base\\UserDepartmentAssignment']);
         $n = $action->run();
         expect("Number of deleted records should be 2: ", $n)->equals(2);
     });
 }
 public function testRemoveForCompositePrimaryKey()
 {
     $this->specify('Remove a AR with composite primary key', function () {
         /*UserDepartmentAssignment::deleteAll(['userId' => 300,'departmentId'=>99]);
           $depart = new UserDepartmentAssignment();
           $depart->userId = 300;
           $depart->departmentId = 99;
           $depart->save(false);*/
         $controller = new ActiveController('user-department-assignments', Yii::$app, ['modelClass' => 'tests\\codeception\\unit\\models\\base\\UserDepartmentAssignment']);
         $action = new DeleteAction("remove", null, ['modelClass' => 'tests\\codeception\\unit\\models\\base\\UserDepartmentAssignment']);
         $action->controller = $controller;
         $action->runWithParams(['id' => '{"userId": 300,"departmentId" : 99}']);
         $model = UserDepartmentAssignment::findOne(['userId' => 300, 'departmentId' => 99]);
         expect("The result of findOne() after deleting should be null: ", $model)->null();
     }, ['throws' => ['yii\\web\\NotFoundHttpException']]);
 }
示例#3
0
 public function testBatchSaveForUpdatableKeyModel()
 {
     /** @var User[] $inputModels */
     $inputModels = [];
     for ($i = 0; $i < 4; $i++) {
         $m = $inputModels[] = new User();
         $m->username = "******" . rand(10000, 99999);
         $m->password = $m->username;
     }
     /** @var User[] $savedReturn */
     $savedReturn = [];
     DbHelper::batchSave($inputModels, [], DbHelper::SAVE_MODE_AUTO, $savedReturn);
     /** @var User[] $savedUsers */
     $savedUsers = $savedReturn['inserted'];
     $department = new Department();
     $department->name = "Department testBatchSaveForUpdatableKeyModel";
     $department1 = new Department();
     $department1->name = "Department testBatchSaveForUpdatableKeyModel";
     $departmentSavedReturn = [];
     DbHelper::batchSave([$department, $department1], [], DbHelper::SAVE_MODE_AUTO, $departmentSavedReturn);
     /** @var Department $department */
     $department = $departmentSavedReturn['inserted'][0];
     /** @var Department $department1 */
     $department1 = $departmentSavedReturn['inserted'][1];
     /** @var UserDepartmentAssignment[] $inputModels */
     $inputModels = [];
     $ids = [];
     $sql = '';
     for ($i = 0; $i < 3; $i++) {
         $savedUser = $savedUsers[$i];
         $m = $inputModels[] = new UserDepartmentAssignment();
         $m->userId = $savedUser->id;
         $m->departmentId = $department->id;
         $ids[] = ['userId' => $savedUser->id, 'departmentId' => $department->id];
         if ($sql != '') {
             $sql = $sql . ' OR ';
         }
         $sql = $sql . "(`userId`={$savedUser->id} AND `departmentId`={$department->id})";
     }
     DbHelper::batchSave($inputModels);
     $sql = 'SELECT * FROM ' . UserDepartmentAssignment::tableName() . ' WHERE ' . $sql;
     /** @var UserDepartmentAssignment[] $savedAssignments */
     $savedAssignments = UserDepartmentAssignment::findBySql($sql)->all();
     $this->assertEquals(3, count($savedAssignments));
     $savedAssignments[0]->departmentId = $department1->id;
     $savedAssignments[1]->departmentId = $department1->id;
     $savedAssignments[2]->departmentId = $department1->id;
     $savedAssignments[2]->userId = $savedUsers[3]->id;
     DbHelper::batchSave($savedAssignments);
     $sql1 = '';
     foreach ($savedAssignments as $savedAssignment) {
         if ($sql1 != '') {
             $sql1 = $sql1 . ' OR ';
         }
         $sql1 = $sql1 . "(`userId`={$savedAssignment->userId} AND `departmentId`={$savedAssignment->departmentId})";
     }
     $sql1 = 'SELECT * FROM ' . UserDepartmentAssignment::tableName() . ' WHERE ' . $sql1;
     $return = UserDepartmentAssignment::findBySql($sql1)->count();
     $this->assertEquals(3, $return);
     $return = UserDepartmentAssignment::findBySql($sql)->count();
     $this->assertEquals(0, $return);
 }