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