80 - Testing the Confirmation Number Format

This commit is contained in:
Adam Wathan
2017-03-13 18:38:30 -04:00
parent 4fcd3a56fd
commit caa215e028
2 changed files with 45 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
<?php
namespace App;
class RandomOrderConfirmationNumberGenerator implements OrderConfirmationNumberGenerator
{
public function generate()
{
return str_repeat('A', 24);
}
}

View File

@@ -1,5 +1,6 @@
<?php
use App\RandomOrderConfirmationNumberGenerator;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
@@ -13,4 +14,37 @@ class RandomOrderConfirmationNumberGeneratorTest extends TestCase
//
// ABCDEFGHJKLMNPQRSTUVWXYZ
// 23456789
/** @test */
function must_be_24_characters_long()
{
$generator = new RandomOrderConfirmationNumberGenerator;
$confirmationNumber = $generator->generate();
$this->assertEquals(24, strlen($confirmationNumber));
}
/** @test */
function can_only_contain_uppercase_letters_and_numbers()
{
$generator = new RandomOrderConfirmationNumberGenerator;
$confirmationNumber = $generator->generate();
$this->assertRegExp('/^[A-Z0-9]+$/', $confirmationNumber);
}
/** @test */
function cannot_contain_ambiguous_characters()
{
$generator = new RandomOrderConfirmationNumberGenerator;
$confirmationNumber = $generator->generate();
$this->assertFalse(strpos($confirmationNumber, '1'));
$this->assertFalse(strpos($confirmationNumber, 'I'));
$this->assertFalse(strpos($confirmationNumber, '0'));
$this->assertFalse(strpos($confirmationNumber, 'O'));
}
}