Created
August 6, 2014 08:02
-
-
Save tmsnvd/5435aa009fc42cd5b73c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace tests\unit\models; | |
use app\tests\fixtures\UserFixture; | |
use Yii; | |
use yii\codeception\DbTestCase; | |
use Codeception\Specify; | |
use Codeception\Util\Debug; | |
use app\models\User; | |
use yii\db\Query; | |
class UserTest extends DbTestCase | |
{ | |
use Specify; | |
protected function setUp() | |
{ | |
parent::setUp(); | |
Yii::$app->mailer->fileTransportCallback = function ($mailer, $message) { | |
return 'testing_message.eml'; | |
}; | |
} | |
protected function tearDown() | |
{ | |
parent::tearDown(); | |
} | |
public function fixtures() | |
{ | |
return [ | |
'users' => UserFixture::className() | |
]; | |
} | |
public function testFirstScenarioValidation() | |
{ | |
//$model = $this->getMock('app\models\User', ['validate', 'save']); | |
//$model->expects($this->once())->method('validate'); | |
//$model->expects($this->once())->method('save')->will($this->returnValue(false)); | |
$model = new User; | |
$model->scenario = 'register_step_1'; | |
$model->attributes = [ | |
'name' => 'tester', | |
'surname' => '', | |
'email' => 'unit@test.lt', | |
'pass' => '123', | |
'repeat_password' => '123', | |
'has_esign' => '0', | |
'has_eula' => '0', | |
'verifyCode' => 'b', | |
]; | |
$query = new Query; | |
$this->specify('Model validation should FAIL in first scenario', function () use ($model, $query){ | |
expect('Validation failed', $model->validate() )->false(); | |
expect('Save to DB failed', $model->save() )->false(); | |
expect('Should be 5 validation errors', count($model->errors) )->equals(5); | |
expect('Should be 0 users in DB', $query->from($model->tableName())->count() )->equals(0); | |
}); | |
$model->attributes = [ | |
'name' => 'Jonai', | |
'surname' => 'param param', | |
'email' => 'unit@test.lt', | |
'pass' => '123456', | |
'repeat_password' => '123456', | |
'has_esign' => '1', | |
'has_eula' => '1', | |
'verifyCode' => 'a', | |
]; | |
$this->specify('Model validation should SUCCEED in first scenario', function () use ($model, $query){ | |
expect('Validation successful', $model->validate())->true(); | |
expect('Save to DB successful', $model->save())->true(); | |
expect('Should NONE (0) validation errors', count($model->errors))->equals(0); | |
expect('Should be 1 user in DB', $query->from($model->tableName())->count() )->equals(1); | |
}); | |
$model = new User; | |
$model->scenario = 'register_step_1'; | |
$model->attributes = [ | |
'name' => 'Jonai', | |
'surname' => 'param param', | |
'email' => 'unit@test.lt', | |
'pass' => '123456', | |
'repeat_password' => '123456', | |
'has_esign' => '1', | |
'has_eula' => '1', | |
'verifyCode' => 'a', | |
]; | |
$this->specify('Model validation should FAIL in first scenario, user email not unique', function () use ($model, $query){ | |
expect('Validation failed', $model->validate())->false(); | |
expect('Save to DB failed', $model->save())->false(); | |
expect('Should 1 validation error', count($model->errors))->equals(1); | |
expect('Should be 1 user in DB', $query->from($model->tableName())->count() )->equals(1); | |
}); | |
$model->sendActivation('unit@test.lt'); | |
$this->specify('email should be send', function () { | |
expect('email file should exist', file_exists($this->getMessageFile()))->true(); | |
}); | |
$this->specify('message should contain correct data', function () use ($model) { | |
$emailMessage = file_get_contents($this->getMessageFile()); | |
expect('email should contain user name', $emailMessage)->contains($model->name); | |
}); | |
unlink($this->getMessageFile()); | |
} | |
public function testActivation() | |
{ | |
//$model->scenario = 'register_step_1'; | |
//$model->attributes = $this->users[0]; | |
$model = new User; | |
$query = new Query; | |
$this->specify('Model validation should FAIL in first scenario', function () use ($model, $query){ | |
expect('Should be 2 users in DB', $query->from($model->tableName())->count() )->equals(2); | |
}); | |
/**/ | |
} | |
private function getMessageFile() | |
{ | |
return Yii::getAlias(Yii::$app->mailer->fileTransportPath) . '/testing_message.eml'; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment