1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
<?php
namespace Illuminate\Tests\Validation;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Rules\Unique;
use PHPUnit\Framework\TestCase;
class ValidationUniqueRuleTest extends TestCase
{
public function testItCorrectlyFormatsAStringVersionOfTheRule()
{
$rule = new Unique('table');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,NULL,NULL,id,foo,"bar"', (string) $rule);
$rule = new Unique(EloquentModelStub::class);
$rule->where('foo', 'bar');
$this->assertSame('unique:table,NULL,NULL,id,foo,"bar"', (string) $rule);
$rule = new Unique(NoTableName::class);
$rule->where('foo', 'bar');
$this->assertSame('unique:no_table_names,NULL,NULL,id,foo,"bar"', (string) $rule);
$rule = new Unique('Illuminate\Tests\Validation\NoTableName');
$rule->where('foo', 'bar');
$this->assertSame('unique:no_table_names,NULL,NULL,id,foo,"bar"', (string) $rule);
$rule = new Unique(ClassWithNonEmptyConstructor::class);
$rule->where('foo', 'bar');
$this->assertSame('unique:'.ClassWithNonEmptyConstructor::class.',NULL,NULL,id,foo,"bar"', (string) $rule);
$rule = new Unique('table', 'column');
$rule->ignore('Taylor, Otwell', 'id_column');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,"Taylor, Otwell",id_column,foo,"bar"', (string) $rule);
$rule = new Unique(EloquentModelStub::class, 'column');
$rule->ignore('Taylor, Otwell', 'id_column');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,"Taylor, Otwell",id_column,foo,"bar"', (string) $rule);
$rule = new Unique('table', 'column');
$rule->ignore('Taylor, Otwell"\'..-"', 'id_column');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,"Taylor, Otwell\"\\\'..-\"",id_column,foo,"bar"', (string) $rule);
$this->assertSame('Taylor, Otwell"\'..-"', stripslashes(str_getcsv('table,column,"Taylor, Otwell\"\\\'..-\"",id_column,foo,"bar"')[2]));
$this->assertSame('id_column', stripslashes(str_getcsv('table,column,"Taylor, Otwell\"\\\'..-\"",id_column,foo,"bar"')[3]));
$rule = new Unique('table', 'column');
$rule->ignore(null, 'id_column');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,NULL,id_column,foo,"bar"', (string) $rule);
$model = new EloquentModelStub(['id_column' => 1]);
$rule = new Unique('table', 'column');
$rule->ignore($model);
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,"1",id_column,foo,"bar"', (string) $rule);
$rule = new Unique('table', 'column');
$rule->ignore($model, 'id_column');
$rule->where('foo', 'bar');
$this->assertSame('unique:table,column,"1",id_column,foo,"bar"', (string) $rule);
$rule = new Unique('table');
$rule->where('foo', '"bar"');
$this->assertSame('unique:table,NULL,NULL,id,foo,"""bar"""', (string) $rule);
}
}
class EloquentModelStub extends Model
{
protected $table = 'table';
protected $primaryKey = 'id_column';
protected $guarded = [];
}
class NoTableName extends Model
{
protected $guarded = [];
public $timestamps = false;
}
class ClassWithNonEmptyConstructor
{
private $bar;
private $baz;
public function __construct($bar, $baz)
{
$this->bar = $bar;
$this->baz = $baz;
}
}
|