Laraland/tests/_support/AcceptanceTester.php
Gregorio Chiko Putra 70fe3a814c Created regular tests
2018-07-21 10:00:34 +07:00

152 lines
3.7 KiB
PHP

<?php
/**
* Inherited Methods
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
*
* @SuppressWarnings(PHPMD)
*/
class AcceptanceTester extends \Codeception\Actor
{
use _generated\AcceptanceTesterActions;
private $mailcathcher,
$mail;
/**
* @Given Saya mempunyai hak akses di database
*/
public function sayaMempunyaiHakAksesDiDatabase()
{
$I = $this;
$I->seeInDatabase('users', ['email' => 'admin@laraland.test']);
}
/**
* @When Saya mengirim form berisi email saya
*/
public function sayaMengirimFormBerisiEmailSaya()
{
$I = $this;
$I->amOnPage('/password/reset');
$I->fillField('email', 'admin@laraland.test');
$I->click('button[type=submit]');
}
/**
* @Then Saya melihat bahwa sebuah email telah dikirim dari sistem
*/
public function sayaMelihatBahwaSebuahEmailTelahDikirimDariSistem()
{
$I = $this;
$I->see('We have e-mailed your password reset link!');
}
/**
* @Given Saya membuka link pada email dari sistem
*/
public function sayaMembukaLinkPadaEmailDariSistem()
{
$I = $this;
$I->requestEmailResetPasswordLink($I);
$this->mailcatcher = new GuzzleHttp\Client([
'base_uri' => 'http://localhost:8025/api/v1/'
]);
$this->mail = $this->getLastMessage($this->mailcatcher);
$pattern = '/\/password\/reset\/[\w=\s]+[^\W]+/';
foreach($this->mail as $key => $val) {
if ($key == 'Content') {
foreach($val as $head => $body) {
if ($head == 'Body') {
preg_match($pattern, $body, $matches);
}
}
}
}
$url = preg_replace('/=\s+/', '', $matches[0]);
$url = preg_replace('/\s+[\w\W]+/', '', $url);
$I->amOnPage($url);
}
/**
* @When Saya mengirim form berisi password baru
*/
public function sayaMengirimFormBerisiPasswordBaru()
{
$I = $this;
$I->fillField('email', 'admin@laraland.test');
$I->fillField('password', 'newsecret');
$I->fillField('password_confirmation', 'newsecret');
$I->click('button[type=submit]');
}
/**
* @Then Saya berhasil signin dengan password baru
*/
public function sayaBerhasilSigninDenganPasswordBaru()
{
$I = $this;
$I->seeCurrentUrlEquals('/home');
$I->see('Your password has been reset!');
}
/**
* @Given Saya berada di halaman registrasi
*/
public function sayaBeradaDiHalamanRegistrasi()
{
$I = $this;
$I->amOnPage('/register');
}
/**
* @When Saya mengirim form registrasi
*/
public function sayaMengirimFormRegistrasi()
{
$I = $this;
$I->fillField('name', \Faker\Factory::create()->name);
$I->fillField('email', 'admin2@laraland.test');
$I->fillField('password', 'sosecret');
$I->fillField('password_confirmation', 'sosecret');
$I->click('button[type=submit]');
}
/**
* @Then Saya akan dialihkan ke halaman dashboard
*/
public function sayaAkanDialihkanKeHalamanDashboard()
{
$I = $this;
$I->seeCurrentUrlEquals('/home');
$I->see('Dashboard');
}
}