Skip to content

Commit 61e80b6

Browse files
committed
update existing tests
1 parent 8b8e6ca commit 61e80b6

File tree

2 files changed

+35
-46
lines changed

2 files changed

+35
-46
lines changed
Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
use Illuminate\Support\Facades\Event;
4+
use StevenFox\LaravelModelValidation\Exceptions\ModelValidationException;
45
use StevenFox\LaravelModelValidation\Listeners\ValidateModel;
56
use StevenFox\LaravelModelValidation\Tests\Fixtures\ValidatesWhenSavingModel;
67
use StevenFox\LaravelModelValidation\Tests\Fixtures\ValidatingModel;
@@ -21,12 +22,12 @@
2122
Event::forget('*');
2223
Event::fake();
2324

24-
$m = new ValidatingModel();
25+
$m = new ValidatesWhenSavingModel();
2526
$modelClassName = $m::class;
2627

2728
expect($m::shouldValidateWhenSaving())->toBeTrue();
2829

29-
Event::assertListening("eloquent.updating: {$modelClassName}", Closure::class);
30+
Event::assertListening("eloquent.updating: {$modelClassName}", ValidateModel::class);
3031
});
3132

3233
it('will not register the model event listeners when shouldValidateOnSaving() is false', function () {
@@ -44,13 +45,14 @@
4445
->and(Event::hasListeners("eloquent.creating: {$modelClassName}"))
4546
->toBeFalse();
4647
});
47-
it('will re-register the model event listeners when reactivateValidationWhenSaving() is invoked', function () {
48+
49+
it('the model event listeners will be registered even if validation is disabled during boot', function () {
4850
Event::forget('*');
4951
Event::fake();
5052

5153
ValidatingModel::disableValidationWhenSaving();
5254

53-
$m = new ValidatingModel();
55+
$m = new ValidatesWhenSavingModel();
5456
$modelClassName = $m::class;
5557

5658
ValidatingModel::reactivateValidationWhenSaving();
@@ -63,15 +65,15 @@
6365
});
6466

6567
it('shouldNotValidateWhenSaving() will return the opposite of shouldValidateWhenSaving()', function () {
66-
expect(ValidatingModel::shouldNotValidateWhenSaving())
68+
expect(ValidatesWhenSavingModel::shouldNotValidateWhenSaving())
6769
->toBeFalse()
68-
->toBe(! ValidatingModel::shouldValidateWhenSaving());
70+
->toBe(! ValidatesWhenSavingModel::shouldValidateWhenSaving());
6971

70-
ValidatingModel::disableValidationWhenSaving();
72+
ValidatesWhenSavingModel::disableValidationWhenSaving();
7173

72-
expect(ValidatingModel::shouldNotValidateWhenSaving())
74+
expect(ValidatesWhenSavingModel::shouldNotValidateWhenSaving())
7375
->toBeTrue()
74-
->toBe(! ValidatingModel::shouldValidateWhenSaving());
76+
->toBe(! ValidatesWhenSavingModel::shouldValidateWhenSaving());
7577
});
7678

7779
it('provides a whileValidatingDisabled() function to run a callback while validation is disabled', function () {
@@ -89,80 +91,66 @@
8991

9092
it('will use database-prepared attribute values for validation by default', function () {
9193
$m = new ValidatingModel([
94+
'stringable' => str('foo'),
95+
'datetime' => \Illuminate\Support\Facades\Date::create(2000, 1, 1),
9296
'json' => ['foo' => 'bar'],
97+
'array_object' => ['foo' => 'bar'],
98+
'collection' => collect(['foo' => 'bar']),
9399
]);
94100

95101
expect($m->validationData())->toBe([
96-
'json' => \Illuminate\Database\Eloquent\Casts\Json::encode(['foo' => 'bar']),
102+
'stringable' => 'foo',
103+
'datetime' => '2000-01-01 00:00:00',
104+
'json' => '{"foo":"bar"}',
105+
'array_object' => '{"foo":"bar"}',
106+
'collection' => '{"foo":"bar"}',
97107
]);
98108
});
99109

100-
it('will stop the validation process and return false if a "validating" event listener returns false', function () {
101-
Event::listen(
102-
'eloquent.validating: '.ValidatingModel::class,
103-
function (ValidatingModel $model, \Illuminate\Validation\Validator $validator) {
104-
return false;
105-
});
106-
107-
$m = new ValidatingModel();
108-
109-
expect($m->validate())->toBeFalse();
110-
});
111-
112-
it('will stop the validation process and return false if a "validated" event listener returns false', function () {
113-
Event::listen(
114-
'eloquent.validated: '.ValidatingModel::class,
115-
function (ValidatingModel $model, \Illuminate\Validation\Validator $validator) {
116-
return false;
117-
});
118-
119-
$m = new ValidatingModel();
120-
121-
expect($m->validate())->toBeFalse();
122-
});
123-
124-
it('can use temporary validation rules', function () {
110+
it('can use superseding validation rules', function () {
125111
$m = new ValidatingModel([
126112
'required_string' => null,
127113
]);
128114

129-
$m->setTemporaryValidationRules([
115+
$m->setSupersedingValidationRules([
130116
'required_string' => 'nullable|string',
131117
]);
132118

133-
expect($m->getTemporaryValidationRules())
119+
expect($m->getSupersedingValidationRules())
134120
->toBe(['required_string' => 'nullable|string'])
135121
->and($m->makeValidator()->getRules())
136122
->toBe(['required_string' => ['nullable', 'string']])
137123
->and($m->validate()->fails())
138124
->toBeFalse();
139125
});
140126

141-
it('can clear the temporary validation rules', function () {
127+
it('can clear the superseding validation rules', function () {
142128
$m = new ValidatingModel();
143129

144-
$m->setTemporaryValidationRules([
130+
$m->setSupersedingValidationRules([
145131
'required_string' => 'nullable|string',
146132
]);
147133

148-
expect($m->getTemporaryValidationRules())->not()->toBeEmpty();
134+
expect($m->getSupersedingValidationRules())->not()->toBeEmpty()
135+
->and($m->makeValidator()->getRules())->toBe(['required_string' => ['nullable', 'string']]);
149136

150-
$m->clearTemporaryValidationRules();
137+
$m->clearSupersedingValidationRules();
151138

152-
expect($m->getTemporaryValidationRules())->toBeEmpty();
139+
expect($m->getSupersedingValidationRules())->toBeEmpty()
140+
->and($m->makeValidator()->getRules())->not()->toBe(['required_string' => ['nullable', 'string']]);
153141
});
154142

155143
it('uses independent rules for updating vs creating', function () {
156144
$m = new ValidatingModel();
157145

158146
expect($m->exists)->toBeFalse()
159-
->and($m->makeValidator()->getRules()['unique'])
160-
->toBe(['unique:short_urls,url_key,NULL,id']);
147+
->and($m->makeValidator()->getRules()['unique_column'])
148+
->toBe(['unique:validating_models,NULL,NULL,id']);
161149

162150
$m->id = 127;
163151
$m->exists = true;
164152

165153
expect($m->exists)->toBeTrue()
166-
->and($m->makeValidator()->getRules()['unique'])
167-
->toBe(['unique:short_urls,url_key,"127",id']); // The model key is now a part of the rule for ignoring
154+
->and($m->makeValidator()->getRules()['unique_column'])
155+
->toBe(['unique:validating_models,NULL,"127",id']); // The model key is now a part of the rule for ignoring
168156
});

tests/TestCase.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class TestCase extends Orchestra
88
{
99
public function getEnvironmentSetUp($app): void
1010
{
11+
config()->set('app.key', 'base64:KWmm+rhCpmYSG+Feh5hIjWWPvaBwQxjpLTYthMhVsUo=');
1112
config()->set('database.default', 'testing');
1213
}
1314

0 commit comments

Comments
 (0)