From 2c994d3a53767679f7db12ac131d97dbf3d4d13c Mon Sep 17 00:00:00 2001 From: "SUN-ASTERISK\\nguyen.h.p.nam" Date: Thu, 16 Jul 2020 14:04:41 +0700 Subject: [PATCH] Add C0 unit test for UsernameValidation --- tests/C0/UsernameValidationTest.php | 60 ++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/tests/C0/UsernameValidationTest.php b/tests/C0/UsernameValidationTest.php index d78a816..e05aee4 100644 --- a/tests/C0/UsernameValidationTest.php +++ b/tests/C0/UsernameValidationTest.php @@ -2,9 +2,67 @@ namespace Tests\C0; +use App\UsernameValidation; use PHPUnit\Framework\TestCase; class UsernameValidationTest extends TestCase { - // TODO: write 6 tests to coverage 100% code + function generateRandomString($length = 10) { + return substr(str_shuffle(str_repeat($x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)))), 1, $length); + } + + public function test_give_minimum_username_then_false_and_show_message() + { + $usernameValidation = new UsernameValidation(); + + $this->assertFalse($usernameValidation->isValid('')); + $this->assertEquals('Minimum length is ' . UsernameValidation::MIN_LENGTH, $usernameValidation->getMessage()); + } + + public function test_give_maximum_username_then_false_and_show_message() + { + $usernameValidation = new UsernameValidation(); + $username = $this->generateRandomString(UsernameValidation::MAX_LENGTH + 1); //get string always greater then MAX_LENGTH + + $this->assertFalse($usernameValidation->isValid($username)); + $this->assertEquals('Maximum length is ' . UsernameValidation::MAX_LENGTH, $usernameValidation->getMessage()); + } + + public function test_username_have_dash_at_begin_or_end_then_false_and_show_message() + { + $usernameValidation = new UsernameValidation(); + $username = $this->generateRandomString(floor(UsernameValidation::MAX_LENGTH / 2)); //get string allow in length + $username .= '-'; //add dash to test valid + + $this->assertFalse($usernameValidation->isValid($username)); + $this->assertEquals('- cannot appear at begin or end of name', $usernameValidation->getMessage()); + } + + public function test_username_have_multiple_dash_at_same_place_then_false_and_show_message() + { + $usernameValidation = new UsernameValidation(); + $username = $this->generateRandomString(floor(UsernameValidation::MAX_LENGTH / 2)); //get string allow in length + $username .= '--'; //add multiple dash to test valid + + $this->assertFalse($usernameValidation->isValid($username)); + $this->assertEquals('Only single - is allowed', $usernameValidation->getMessage()); + } + + public function test_username_have_character_not_allow_then_false_and_show_message() + { + $usernameValidation = new UsernameValidation(); + $username = $this->generateRandomString(floor(UsernameValidation::MAX_LENGTH / 2)); //get string allow in length + $username .= '@'; //add character not allow test valid + + $this->assertFalse($usernameValidation->isValid($username)); + $this->assertEquals('Invalid character. Use only letters, digits and -', $usernameValidation->getMessage()); + } + + public function test_username_id_valid() + { + $usernameValidation = new UsernameValidation(); + $username = $this->generateRandomString(floor(UsernameValidation::MAX_LENGTH / 2)); //get string allow in length + + $this->assertTrue($usernameValidation->isValid($username)); + } }