forked from laravel/framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidationUniqueRuleTest.php
More file actions
80 lines (64 loc) · 3.06 KB
/
ValidationUniqueRuleTest.php
File metadata and controls
80 lines (64 loc) · 3.06 KB
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
<?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('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;
}