forked from laravel/framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidationFactoryTest.php
More file actions
executable file
·84 lines (72 loc) · 3.31 KB
/
ValidationFactoryTest.php
File metadata and controls
executable file
·84 lines (72 loc) · 3.31 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
81
82
83
84
<?php
use Mockery as m;
use Illuminate\Validation\Factory;
use Illuminate\Validation\Validator;
use Illuminate\Validation\PresenceVerifierInterface;
use Symfony\Component\Translation\TranslatorInterface;
class ValidationFactoryTest extends PHPUnit_Framework_TestCase
{
public function tearDown()
{
m::close();
}
public function testMakeMethodCreatesValidValidator()
{
$translator = m::mock(TranslatorInterface::class);
$factory = new Factory($translator);
$validator = $factory->make(['foo' => 'bar'], ['baz' => 'boom']);
$this->assertEquals($translator, $validator->getTranslator());
$this->assertEquals(['foo' => 'bar'], $validator->getData());
$this->assertEquals(['baz' => ['boom']], $validator->getRules());
$presence = m::mock(PresenceVerifierInterface::class);
$noop1 = function () {
};
$noop2 = function () {
};
$noop3 = function () {
};
$factory->extend('foo', $noop1);
$factory->extendImplicit('implicit', $noop2);
$factory->replacer('replacer', $noop3);
$factory->setPresenceVerifier($presence);
$validator = $factory->make([], []);
$this->assertEquals(['foo' => $noop1, 'implicit' => $noop2], $validator->getExtensions());
$this->assertEquals(['replacer' => $noop3], $validator->getReplacers());
$this->assertEquals($presence, $validator->getPresenceVerifier());
$presence = m::mock(PresenceVerifierInterface::class);
$factory->extend('foo', $noop1, 'foo!');
$factory->extendImplicit('implicit', $noop2, 'implicit!');
$factory->setPresenceVerifier($presence);
$validator = $factory->make([], []);
$this->assertEquals(['foo' => $noop1, 'implicit' => $noop2], $validator->getExtensions());
$this->assertEquals(['foo' => 'foo!', 'implicit' => 'implicit!'], $validator->getFallbackMessages());
$this->assertEquals($presence, $validator->getPresenceVerifier());
}
public function testValidateCallsValidateOnTheValidator()
{
$validator = m::mock(Validator::class);
$translator = m::mock(TranslatorInterface::class);
$factory = m::mock(Factory::class.'[make]', [$translator]);
$factory->shouldReceive('make')->once()
->with(['foo' => 'bar'], ['foo' => 'required'], [], [])
->andReturn($validator);
$validator->shouldReceive('validate')->once();
$factory->validate(['foo' => 'bar'], ['foo' => 'required']);
}
public function testCustomResolverIsCalled()
{
unset($_SERVER['__validator.factory']);
$translator = m::mock(TranslatorInterface::class);
$factory = new Factory($translator);
$factory->resolver(function ($translator, $data, $rules) {
$_SERVER['__validator.factory'] = true;
return new Validator($translator, $data, $rules);
});
$validator = $factory->make(['foo' => 'bar'], ['baz' => 'boom']);
$this->assertTrue($_SERVER['__validator.factory']);
$this->assertEquals($translator, $validator->getTranslator());
$this->assertEquals(['foo' => 'bar'], $validator->getData());
$this->assertEquals(['baz' => ['boom']], $validator->getRules());
unset($_SERVER['__validator.factory']);
}
}