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