public function testGetModelsForAffect()
 {
     // test update one model
     $controller = new ApiController('api');
     $controller->method = 'PUT';
     $controller->model = new User('update');
     $user2 = $this->users('user2');
     $user3 = $this->users('user3');
     $singleUserData = array($user2->attributes);
     $singleUserData['first_name'] = 'affected first name';
     $_GET['id'] = $user2->id;
     $_POST = $singleUserData;
     $models = $controller->getModelsForAffect(true);
     $this->assertTrue(is_array($models));
     $this->assertEquals(count($models), 1);
     $this->assertEquals($models[0]->id, $user2->id);
     // test create one model
     $_POST = array();
     unset($_GET['id']);
     $this->assertTrue(!isset($_GET['id']));
     $this->assertTrue(empty($_POST));
     $controller = new ApiController('api');
     $controller->method = 'POST';
     $controller->model = new User('create');
     $singleUserData = array('id' => '', 'first_name' => 'new first_name 1', 'middle_name' => 'new middle_name 1', 'last_name' => 'new last_name 1', 'email' => '*****@*****.**', 'login' => 'user1', 'password' => 'test password', 'role' => 'test role');
     $controller->data = $singleUserData;
     $models = $controller->getModelsForAffect(true);
     $this->assertTrue(is_array($models));
     $this->assertEquals(count($models), 1);
     $this->assertTrue($models[0]->isNewRecord);
     // test update collection
     $_POST = array();
     unset($_GET['id']);
     $this->assertTrue(!isset($_GET['id']));
     $this->assertTrue(empty($_POST));
     $collectionUsersData = array($user2->attributes, $user3->attributes);
     $_POST = $collectionUsersData;
     $controller = new ApiController('api');
     $controller->method = 'PUT';
     $controller->model = new User('update');
     $models = $controller->getModelsForAffect(true);
     $this->assertTrue(is_array($models));
     $this->assertEquals(2, count($models));
     $this->assertTrue($models[0] instanceof CActiveRecord && $models[1] instanceof CActiveRecord);
     $this->assertTrue($models[0]->id == $user2->id);
     $this->assertTrue($models[1]->id == $user3->id);
     // test create collection
     $_POST = array();
     unset($_GET['id']);
     $this->assertTrue(!isset($_GET['id']));
     $this->assertTrue(empty($_POST));
     $collectionUsersData = array(array('id' => '', 'first_name' => 'new first_name 1', 'middle_name' => 'new middle_name 1', 'last_name' => 'new last_name 1', 'email' => '*****@*****.**', 'login' => 'user1', 'password' => 'test password', 'role' => 'test role'), array('first_name' => 'new first_name 2', 'middle_name' => 'new middle_name 2', 'last_name' => 'new last_name 2', 'email' => '*****@*****.**', 'login' => 'user2', 'password' => 'test password', 'role' => 'test role'));
     $_POST = $collectionUsersData;
     $controller = new ApiController('api');
     $controller->method = 'POST';
     $controller->model = new User('create');
     $models = $controller->getModelsForAffect(true);
     $this->assertTrue(is_array($models));
     $this->assertEquals(count($models), 2);
     $this->assertTrue($models[0] instanceof CActiveRecord && $models[1] instanceof CActiveRecord);
     $this->assertTrue($models[0]->id === null);
     $this->assertTrue($models[1]->id === null);
     $this->assertTrue($models[0]->isNewRecord);
     $this->assertTrue($models[1]->isNewRecord);
 }