-
Notifications
You must be signed in to change notification settings - Fork 3
Add translation generator tests #80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
b61599f
test: add tests for translation file generation generator.
3ab39e9
chore: remove fixture export.
a7a7d02
Merge remote-tracking branch 'origin/49-add-tests-generator-tests' in…
pirs1337 edf5296
feat: add tests
pirs1337 872c78b
Merge remote-tracking branch 'origin/master' into 49-add-translator-g…
pirs1337 3ba3ec5
refactor: code
pirs1337 94c145a
refactor: code
pirs1337 6067363
refactor: code
pirs1337 216a37b
refactor: code
pirs1337 3252fcb
refactor: code
pirs1337 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,6 +9,6 @@ | |
|
|
||
| 'exceptions' => [ | ||
| 'not_found' => ':Entity does not exist', | ||
| ] | ||
| ], | ||
|
|
||
| ]; | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -127,6 +127,6 @@ | |
|
|
||
| 'exceptions' => [ | ||
| 'not_found' => ':Entity does not exist', | ||
| ] | ||
| ], | ||
|
|
||
| ]; | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| <?php | ||
|
|
||
| namespace RonasIT\Support\Tests\Support\Translation; | ||
|
|
||
| use RonasIT\Support\Tests\Support\FileSystemMock; | ||
| use RonasIT\Support\Tests\Support\GeneratorMockTrait; | ||
|
|
||
| trait TranslationMockTrait | ||
| { | ||
| use GeneratorMockTrait; | ||
|
|
||
| public function mockFilesystem(): void | ||
| { | ||
| $fileSystemMock = new FileSystemMock(); | ||
|
|
||
| $fileSystemMock->translations = []; | ||
|
|
||
| $fileSystemMock->setStructure(); | ||
| } | ||
|
|
||
| public function mockFilesystemForAppend(): void | ||
| { | ||
| $validation = file_get_contents(getcwd() . '/tests/Support/Translation/validation_without_exceptions.php'); | ||
|
|
||
| $fileSystemMock = new FileSystemMock(); | ||
|
|
||
| $fileSystemMock->translations = ['validation.php' => $validation]; | ||
|
|
||
| $fileSystemMock->setStructure(); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| <?php | ||
|
|
||
| return []; | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| <?php | ||
|
|
||
| namespace RonasIT\Support\Tests; | ||
|
|
||
| use Illuminate\Support\Facades\Event; | ||
| use Illuminate\Support\Facades\Lang; | ||
| use RonasIT\Support\Events\SuccessCreateMessage; | ||
| use RonasIT\Support\Events\WarningEvent; | ||
| use RonasIT\Support\Generators\TranslationsGenerator; | ||
| use RonasIT\Support\Tests\Support\Translation\TranslationMockTrait; | ||
|
|
||
| class TranslationGeneratorTest extends TestCase | ||
| { | ||
| use TranslationMockTrait; | ||
|
|
||
| public function testCreate() | ||
| { | ||
| Lang::shouldReceive('get')->andReturn([]); | ||
|
|
||
| $this->mockFilesystem(); | ||
|
|
||
| app(TranslationsGenerator::class) | ||
| ->setModel('Post') | ||
| ->generate(); | ||
|
|
||
| $this->assertGeneratedFileEquals('validation.php', 'resources/lang/en/validation.php'); | ||
|
|
||
| $this->assertEventPushed( | ||
| className: SuccessCreateMessage::class, | ||
| message: 'Created a new Translations dump on path: vfs://root/resources/lang/en/validation.php', | ||
| ); | ||
| } | ||
|
|
||
| public function testCreateStubNotExist() | ||
| { | ||
| config(['entity-generator.stubs.validation' => 'incorrect_stub']); | ||
|
|
||
| app(TranslationsGenerator::class) | ||
| ->setModel('Post') | ||
| ->generate(); | ||
|
|
||
| $this->assertFileDoesNotExist('resources/lang/en/validation.php'); | ||
|
|
||
| $this->assertEventPushed( | ||
| className: WarningEvent::class, | ||
| message: 'Generation of validation has been skipped cause the view incorrect_stub from the config entity-generator.stubs.validation is not exists. Please check that config has the correct view name value.', | ||
| ); | ||
| } | ||
|
|
||
| public function testAppendNotFoundException() | ||
| { | ||
| $this->mockFilesystemForAppend(); | ||
|
|
||
| app(TranslationsGenerator::class) | ||
| ->setModel('Post') | ||
| ->generate(); | ||
|
|
||
| $this->assertGeneratedFileEquals('validation_append_not_found_exception.php', 'resources/lang/en/validation.php'); | ||
|
|
||
| Event::assertNothingDispatched(); | ||
| } | ||
|
|
||
| public function testAppendNotFoundExceptionStubNotExist() | ||
| { | ||
| config(['entity-generator.stubs.translation_not_found' => 'incorrect_stub']); | ||
|
|
||
| $this->mockFilesystemForAppend(); | ||
|
|
||
| app(TranslationsGenerator::class) | ||
| ->setModel('Post') | ||
| ->generate(); | ||
|
|
||
| $this->assertFileDoesNotExist('validation.php', 'resources/lang/en/validation.php'); | ||
|
|
||
| $this->assertEventPushed( | ||
| className: WarningEvent::class, | ||
| message: 'Generation of translation not found has been skipped cause the view incorrect_stub from the config entity-generator.stubs.translation_not_found is not exists. Please check that config has the correct view name value.', | ||
| ); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,134 @@ | ||
| <?php | ||
|
|
||
| return [ | ||
|
|
||
| /* | ||
| |-------------------------------------------------------------------------- | ||
| | Validation Language Lines | ||
| |-------------------------------------------------------------------------- | ||
| | | ||
| | The following language lines contain the default error messages used by | ||
| | the validator class. Some of these rules have multiple versions such | ||
| | as the size rules. Feel free to tweak each of these messages here. | ||
| | | ||
| */ | ||
|
|
||
| 'accepted' => 'The :attribute must be accepted.', | ||
| 'active_url' => 'The :attribute is not a valid URL.', | ||
| 'after' => 'The :attribute must be a date after :date.', | ||
| 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', | ||
| 'alpha' => 'The :attribute may only contain letters.', | ||
| 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', | ||
| 'alpha_num' => 'The :attribute may only contain letters and numbers.', | ||
| 'array' => 'The :attribute must be an array.', | ||
| 'before' => 'The :attribute must be a date before :date.', | ||
| 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', | ||
| 'between' => [ | ||
| 'numeric' => 'The :attribute must be between :min and :max.', | ||
| 'file' => 'The :attribute must be between :min and :max kilobytes.', | ||
| 'string' => 'The :attribute must be between :min and :max characters.', | ||
| 'array' => 'The :attribute must have between :min and :max items.', | ||
| ], | ||
| 'boolean' => 'The :attribute field must be true or false.', | ||
| 'confirmed' => 'The :attribute confirmation does not match.', | ||
| 'date' => 'The :attribute is not a valid date.', | ||
| 'date_format' => 'The :attribute does not match the format :format.', | ||
| 'different' => 'The :attribute and :other must be different.', | ||
| 'digits' => 'The :attribute must be :digits digits.', | ||
| 'digits_between' => 'The :attribute must be between :min and :max digits.', | ||
| 'dimensions' => 'The :attribute has invalid image dimensions.', | ||
| 'distinct' => 'The :attribute field has a duplicate value.', | ||
| 'email' => 'The :attribute must be a valid email address.', | ||
| 'exists' => 'The selected :attribute is invalid.', | ||
| 'file' => 'The :attribute must be a file.', | ||
| 'filled' => 'The :attribute field must have a value.', | ||
| 'image' => 'The :attribute must be an image.', | ||
| 'in' => 'The selected :attribute is invalid.', | ||
| 'in_array' => 'The :attribute field does not exist in :other.', | ||
| 'integer' => 'The :attribute must be an integer.', | ||
| 'ip' => 'The :attribute must be a valid IP address.', | ||
| 'ipv4' => 'The :attribute must be a valid IPv4 address.', | ||
| 'ipv6' => 'The :attribute must be a valid IPv6 address.', | ||
| 'json' => 'The :attribute must be a valid JSON string.', | ||
| 'max' => [ | ||
| 'numeric' => 'The :attribute may not be greater than :max.', | ||
| 'file' => 'The :attribute may not be greater than :max kilobytes.', | ||
| 'string' => 'The :attribute may not be greater than :max characters.', | ||
| 'array' => 'The :attribute may not have more than :max items.', | ||
| ], | ||
| 'mimes' => 'The :attribute must be a file of type: :values.', | ||
| 'mimetypes' => 'The :attribute must be a file of type: :values.', | ||
| 'min' => [ | ||
| 'numeric' => 'The :attribute must be at least :min.', | ||
| 'file' => 'The :attribute must be at least :min kilobytes.', | ||
| 'string' => 'The :attribute must be at least :min characters.', | ||
| 'array' => 'The :attribute must have at least :min items.', | ||
| ], | ||
| 'not_in' => 'The selected :attribute is invalid.', | ||
| 'numeric' => 'The :attribute must be a number.', | ||
| 'present' => 'The :attribute field must be present.', | ||
| 'regex' => 'The :attribute format is invalid.', | ||
| 'required' => 'The :attribute field is required.', | ||
| 'required_if' => 'The :attribute field is required when :other is :value.', | ||
| 'required_unless' => 'The :attribute field is required unless :other is in :values.', | ||
| 'required_with' => 'The :attribute field is required when :values is present.', | ||
| 'required_with_all' => 'The :attribute field is required when :values is present.', | ||
| 'required_without' => 'The :attribute field is required when :values is not present.', | ||
| 'required_without_all' => 'The :attribute field is required when none of :values are present.', | ||
| 'same' => 'The :attribute and :other must match.', | ||
| 'size' => [ | ||
| 'numeric' => 'The :attribute must be :size.', | ||
| 'file' => 'The :attribute must be :size kilobytes.', | ||
| 'string' => 'The :attribute must be :size characters.', | ||
| 'array' => 'The :attribute must contain :size items.', | ||
| ], | ||
| 'string' => 'The :attribute must be a string.', | ||
| 'timezone' => 'The :attribute must be a valid zone.', | ||
| 'unique' => 'The :attribute has already been taken.', | ||
| 'uploaded' => 'The :attribute failed to upload.', | ||
| 'url' => 'The :attribute format is invalid.', | ||
|
|
||
| /* | ||
| |-------------------------------------------------------------------------- | ||
| | Custom Validation Language Lines | ||
| |-------------------------------------------------------------------------- | ||
| | | ||
| | Here you may specify custom validation messages for attributes using the | ||
| | convention "attribute.rule" to name the lines. This makes it quick to | ||
| | specify a specific custom language line for a given attribute rule. | ||
| | | ||
| */ | ||
|
|
||
| 'custom' => [ | ||
| 'attribute-name' => [ | ||
| 'rule-name' => 'custom-message', | ||
| ], | ||
| ], | ||
|
|
||
| /* | ||
| |-------------------------------------------------------------------------- | ||
| | Custom Validation Attributes | ||
| |-------------------------------------------------------------------------- | ||
| | | ||
| | The following language lines are used to swap attribute place-holders | ||
| | with something more reader friendly such as E-Mail Address instead | ||
| | of "email". This simply helps us make messages a little cleaner. | ||
| | | ||
| */ | ||
|
|
||
| 'attributes' => [], | ||
|
|
||
| /* | ||
| |-------------------------------------------------------------------------- | ||
| | Custom Validation Attributes | ||
| |-------------------------------------------------------------------------- | ||
| | | ||
| | The following language lines are used to swap http error messages. | ||
| | | ||
| */ | ||
|
|
||
| 'exceptions' => [ | ||
| 'not_found' => ':Entity does not exist', | ||
| ], | ||
|
|
||
| ]; |
17 changes: 17 additions & 0 deletions
17
tests/fixtures/TranslationGeneratorTest/validation_append_not_found_exception.php
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| <?php | ||
|
|
||
| return [ | ||
| /* | ||
| |-------------------------------------------------------------------------- | ||
| | Custom Validation Attributes | ||
| |-------------------------------------------------------------------------- | ||
| | | ||
| | The following language lines are used to swap http error messages. | ||
| | | ||
| */ | ||
|
|
||
| 'exceptions' => [ | ||
| 'not_found' => ':Entity does not exist', | ||
| ], | ||
|
|
||
| ]; |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.