mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 18:13:11 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edd69c5e05 | ||
|
|
68d3d19298 | ||
|
|
75149ddb1f | ||
|
|
e020e265a4 | ||
|
|
6af1f32d96 | ||
|
|
972befd7aa | ||
|
|
805c4e9a2a | ||
|
|
c0bb9ee1fd | ||
|
|
d9a731daba | ||
|
|
d3b24ffeae | ||
|
|
015cc6c493 | ||
|
|
44f289f76a | ||
|
|
fb0c576806 | ||
|
|
0d1dd2182b | ||
|
|
027e58fd56 | ||
|
|
a46e3b4505 | ||
|
|
e7734d3c20 | ||
|
|
fcf3fae860 | ||
|
|
b91b959364 | ||
|
|
9b0fbb4467 | ||
|
|
6c8e847430 | ||
|
|
25b61c56fe | ||
|
|
428d32cebd | ||
|
|
51a72d7766 | ||
|
|
d200f2284b | ||
|
|
8faae38655 | ||
|
|
8740a9a158 | ||
|
|
d344cdc842 | ||
|
|
5e411ef104 | ||
|
|
499a2113b3 | ||
|
|
f8a8cb18e0 | ||
|
|
16eb4f65ee | ||
|
|
0edf8f750e | ||
|
|
1b15d2930b | ||
|
|
3668e3821a | ||
|
|
7b4cef1ea4 | ||
|
|
cd2a71d43c | ||
|
|
c9132b28a6 | ||
|
|
8ab6e0536b | ||
|
|
87ebe458e9 | ||
|
|
9ef14f83be | ||
|
|
39c148ad42 | ||
|
|
2b3c9a2449 |
+1
-2
@@ -6,5 +6,4 @@
|
|||||||
/.gitignore export-ignore
|
/.gitignore export-ignore
|
||||||
/.travis.yml export-ignore
|
/.travis.yml export-ignore
|
||||||
/phpunit.xml.dist export-ignore
|
/phpunit.xml.dist export-ignore
|
||||||
/.scrutinizer.yml export-ignore
|
/tests export-ignore
|
||||||
/tests export-ignore
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: barryvdh
|
||||||
|
patreon: # Replace with a single Patreon username
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: # Replace with a single Ko-fi username
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
otechie: # Replace with a single Otechie username
|
||||||
|
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||||
@@ -2,3 +2,4 @@ build
|
|||||||
vendor
|
vendor
|
||||||
composer.lock
|
composer.lock
|
||||||
.idea
|
.idea
|
||||||
|
.phpunit.result.cache
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
filter:
|
|
||||||
excluded_paths: [tests/*]
|
|
||||||
|
|
||||||
checks:
|
|
||||||
php:
|
|
||||||
remove_extra_empty_lines: true
|
|
||||||
remove_php_closing_tag: true
|
|
||||||
remove_trailing_whitespace: true
|
|
||||||
fix_use_statements:
|
|
||||||
remove_unused: true
|
|
||||||
preserve_multiple: false
|
|
||||||
preserve_blanklines: true
|
|
||||||
order_alphabetically: true
|
|
||||||
fix_php_opening_tag: true
|
|
||||||
fix_linefeed: true
|
|
||||||
fix_line_ending: true
|
|
||||||
fix_identation_4spaces: true
|
|
||||||
fix_doc_comments: true
|
|
||||||
|
|
||||||
tools:
|
|
||||||
external_code_coverage:
|
|
||||||
timeout: 600
|
|
||||||
runs: 3
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
preset: psr2
|
|
||||||
+51
-13
@@ -1,27 +1,65 @@
|
|||||||
language: php
|
language: php
|
||||||
|
|
||||||
php:
|
|
||||||
- 7.0
|
|
||||||
- 7.1
|
|
||||||
- 7.2
|
|
||||||
|
|
||||||
# This triggers builds to run on the new TravisCI infrastructure.
|
|
||||||
# See: http://docs.travis-ci.com/user/workers/container-based-infrastructure/
|
|
||||||
sudo: false
|
|
||||||
|
|
||||||
## Cache composer
|
## Cache composer
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.composer/cache
|
- $HOME/.composer/cache
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- RUN_PHPCS=0
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- php: 7.0
|
- php: '7.2'
|
||||||
env: 'COMPOSER_FLAGS="--prefer-stable --prefer-lowest"'
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.2'
|
||||||
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.2'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.2'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.2'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.2'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.3'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='5.5.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='5.8.*' COMPOSER_FLAGS='--prefer-stable'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-lowest'
|
||||||
|
- php: '7.4'
|
||||||
|
env: LARAVEL='^6.0' COMPOSER_FLAGS='--prefer-stable' RUN_PHPCS=1
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- travis_wait 20 travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist
|
- phpenv config-rm xdebug.ini || true
|
||||||
|
|
||||||
|
install:
|
||||||
|
- travis_retry composer remove phpro/grumphp --no-interaction --no-update --dev
|
||||||
|
- composer require "illuminate/support:${LARAVEL}" --no-interaction --no-update
|
||||||
|
- composer require "illuminate/console:${LARAVEL}" --no-interaction --no-update
|
||||||
|
- composer require "illuminate/filesystem:${LARAVEL}" --no-interaction --no-update
|
||||||
|
- composer require --dev "illuminate/config:${LARAVEL}" --no-interaction --no-update
|
||||||
|
- composer require --dev "illuminate/view:${LARAVEL}" --no-interaction --no-update
|
||||||
|
- travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist --no-suggest
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- vendor/bin/phpcs --standard=psr2 src/
|
|
||||||
- vendor/bin/phpunit
|
- vendor/bin/phpunit
|
||||||
|
- if [[ $RUN_PHPCS = 1 ]]; then vendor/bin/phpcs --standard=psr2 src/; fi
|
||||||
|
|||||||
+13
-16
@@ -10,24 +10,21 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7",
|
"php": ">=7.2",
|
||||||
"illuminate/support": "^5.5,<5.9",
|
"illuminate/support": "^5.5|^6|^7",
|
||||||
"illuminate/console": "^5.5,<5.9",
|
"illuminate/console": "^5.5|^6|^7",
|
||||||
"illuminate/filesystem": "^5.5,<5.9",
|
"illuminate/filesystem": "^5.5|^6|^7",
|
||||||
"barryvdh/reflection-docblock": "^2.0.6",
|
"barryvdh/reflection-docblock": "^2.0.6",
|
||||||
"composer/composer": "^1.6"
|
"composer/composer": "^1.6",
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"illuminate/config": "^5.1,<5.9",
|
|
||||||
"illuminate/view": "^5.1,<5.9",
|
|
||||||
"phpro/grumphp": "^0.14",
|
|
||||||
"phpunit/phpunit" : "4.*",
|
|
||||||
"scrutinizer/ocular": "~1.1",
|
|
||||||
"squizlabs/php_codesniffer": "^3",
|
|
||||||
"doctrine/dbal": "~2.3"
|
"doctrine/dbal": "~2.3"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"require-dev": {
|
||||||
"doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)"
|
"illuminate/config": "^5.5|^6|^7",
|
||||||
|
"illuminate/view": "^5.5|^6|^7",
|
||||||
|
"phpro/grumphp": "^0.17.1",
|
||||||
|
"squizlabs/php_codesniffer": "^3",
|
||||||
|
"orchestra/testbench": "^3|^4",
|
||||||
|
"mockery/mockery": "^1.3"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@@ -36,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Barryvdh\\LaravelIdeHelper\\": "tests"
|
"Barryvdh\\LaravelIdeHelper\\Tests\\": "tests"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+15
-14
@@ -27,6 +27,18 @@ return array(
|
|||||||
|
|
||||||
'include_fluent' => false,
|
'include_fluent' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Factory Builders
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Set to true to generate factory generators for better factory()
|
||||||
|
| method auto-completion.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'include_factory_builders' => false,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Write Model Magic methods
|
| Write Model Magic methods
|
||||||
@@ -98,18 +110,7 @@ return array(
|
|||||||
'Session' => array('Illuminate\Session\Store'),
|
'Session' => array('Illuminate\Session\Store'),
|
||||||
),
|
),
|
||||||
|
|
||||||
'magic' => array(
|
'magic' => array(),
|
||||||
'Log' => array(
|
|
||||||
'debug' => 'Monolog\Logger::addDebug',
|
|
||||||
'info' => 'Monolog\Logger::addInfo',
|
|
||||||
'notice' => 'Monolog\Logger::addNotice',
|
|
||||||
'warning' => 'Monolog\Logger::addWarning',
|
|
||||||
'error' => 'Monolog\Logger::addError',
|
|
||||||
'critical' => 'Monolog\Logger::addCritical',
|
|
||||||
'alert' => 'Monolog\Logger::addAlert',
|
|
||||||
'emergency' => 'Monolog\Logger::addEmergency',
|
|
||||||
)
|
|
||||||
),
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -189,10 +190,10 @@ return array(
|
|||||||
| Cast the given "real type" to the given "type".
|
| Cast the given "real type" to the given "type".
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
'type_overrides' => array(
|
'type_overrides' => array(
|
||||||
'integer' => 'int',
|
'integer' => 'int',
|
||||||
'boolean' => 'bool',
|
'boolean' => 'bool',
|
||||||
),
|
),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|||||||
+5
-2
@@ -11,5 +11,8 @@ parameters:
|
|||||||
standard: PSR2
|
standard: PSR2
|
||||||
warning_severity: ~
|
warning_severity: ~
|
||||||
ignore_patterns:
|
ignore_patterns:
|
||||||
- tests/
|
- tests/
|
||||||
triggered_by: [php]
|
triggered_by: [php]
|
||||||
|
whitelist_patterns:
|
||||||
|
- /^src\/.*/
|
||||||
|
- /^config\/.*/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
## Laravel 5 IDE Helper Generator
|
## Laravel IDE Helper Generator
|
||||||
|
|
||||||
[![Latest Version on Packagist][ico-version]][link-packagist]
|
[![Latest Version on Packagist][ico-version]][link-packagist]
|
||||||
[![Software License][ico-license]](LICENSE.md)
|
[![Software License][ico-license]](LICENSE.md)
|
||||||
@@ -7,6 +7,19 @@
|
|||||||
|
|
||||||
__For Laravel 4.x, check [version 1.11](https://github.com/barryvdh/laravel-ide-helper/tree/1.11)__
|
__For Laravel 4.x, check [version 1.11](https://github.com/barryvdh/laravel-ide-helper/tree/1.11)__
|
||||||
|
|
||||||
|
* [Complete phpDocs, directly from the source](#complete-phpdocs--directly-from-the-source)
|
||||||
|
* [Install](#install)
|
||||||
|
* [Automatic phpDoc generation for Laravel Facades](#automatic-phpdoc-generation-for-laravel-facades)
|
||||||
|
* [Automatic phpDocs for models](#automatic-phpdocs-for-models)
|
||||||
|
* [Automatic phpDocs generation for Laravel Fluent methods](#automatic-phpdocs-generation-for-laravel-fluent-methods)
|
||||||
|
* [Auto-completion for factory builders](#auto-completion-for-factory-builders)
|
||||||
|
- [PhpStorm Meta for Container instances](#phpstorm-meta-for-container-instances)
|
||||||
|
- [Lumen Install](#lumen-install)
|
||||||
|
+ [Enabling Facades](#enabling-facades)
|
||||||
|
+ [Adding the Service Provider](#adding-the-service-provider)
|
||||||
|
+ [Adding Additional Facades](#adding-additional-facades)
|
||||||
|
* [License](#license)
|
||||||
|
|
||||||
### Complete phpDocs, directly from the source
|
### Complete phpDocs, directly from the source
|
||||||
|
|
||||||
_Check out [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_
|
_Check out [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_
|
||||||
@@ -29,7 +42,7 @@ Note: You do need CodeComplice for Sublime Text: https://github.com/spectacles/C
|
|||||||
Require this package with composer using the following command:
|
Require this package with composer using the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require barryvdh/laravel-ide-helper
|
composer require --dev barryvdh/laravel-ide-helper
|
||||||
```
|
```
|
||||||
|
|
||||||
After updating composer, add the service provider to the `providers` array in `config/app.php`
|
After updating composer, add the service provider to the `providers` array in `config/app.php`
|
||||||
@@ -39,12 +52,6 @@ Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
|
|||||||
```
|
```
|
||||||
**Laravel 5.5** uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
|
**Laravel 5.5** uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
|
||||||
|
|
||||||
To install this package on only development systems, add the `--dev` flag to your composer command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
composer require --dev barryvdh/laravel-ide-helper
|
|
||||||
```
|
|
||||||
|
|
||||||
In Laravel, instead of adding the service provider in the `config/app.php` file, you can add the following code to your `app/Providers/AppServiceProvider.php` file, within the `register()` method:
|
In Laravel, instead of adding the service provider in the `config/app.php` file, you can add the following code to your `app/Providers/AppServiceProvider.php` file, within the `register()` method:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -75,8 +82,8 @@ You can configure your composer.json to do this after each commit:
|
|||||||
"scripts":{
|
"scripts":{
|
||||||
"post-update-cmd": [
|
"post-update-cmd": [
|
||||||
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
|
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
|
||||||
"php artisan ide-helper:generate",
|
"@php artisan ide-helper:generate",
|
||||||
"php artisan ide-helper:meta"
|
"@php artisan ide-helper:meta"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
```
|
```
|
||||||
@@ -97,13 +104,6 @@ The `Illuminate/Support/helpers.php` is already set up, but you can add/remove y
|
|||||||
|
|
||||||
### Automatic phpDocs for models
|
### Automatic phpDocs for models
|
||||||
|
|
||||||
> You need to add `doctrine/dbal: ~2.3` to require-dev in your own composer.json to get database columns.
|
|
||||||
|
|
||||||
|
|
||||||
```bash
|
|
||||||
composer require --dev doctrine/dbal
|
|
||||||
```
|
|
||||||
|
|
||||||
If you don't want to write your properties yourself, you can use the command `php artisan ide-helper:models` to generate
|
If you don't want to write your properties yourself, you can use the command `php artisan ide-helper:models` to generate
|
||||||
phpDocs, based on table columns, relations and getters/setters. You can write the comments directly to your Model file, using the `--write (-W)` option. By default, you are asked to overwrite or write to a separate file (`_ide_helper_models.php`). You can force No with `--nowrite (-N)`.
|
phpDocs, based on table columns, relations and getters/setters. You can write the comments directly to your Model file, using the `--write (-W)` option. By default, you are asked to overwrite or write to a separate file (`_ide_helper_models.php`). You can force No with `--nowrite (-N)`.
|
||||||
Please make sure to backup your models, before writing the info.
|
Please make sure to backup your models, before writing the info.
|
||||||
@@ -169,6 +169,18 @@ After publishing vendor, simply change the `include_fluent` line your `config/id
|
|||||||
And then run `php artisan ide-helper:generate` , you will now see all of the Fluent methods are recognized by your IDE.
|
And then run `php artisan ide-helper:generate` , you will now see all of the Fluent methods are recognized by your IDE.
|
||||||
|
|
||||||
|
|
||||||
|
### Auto-completion for factory builders
|
||||||
|
|
||||||
|
If you would like the `factory()->create()` and `factory()->make()` methods to return the correct model class,
|
||||||
|
you can enable custom factory builders with the `include_factory_builders` line your `config/ide-helper.php` file.
|
||||||
|
|
||||||
|
```php
|
||||||
|
'include_factory_builders' => true,
|
||||||
|
```
|
||||||
|
|
||||||
|
For this to work, you must also publish the PhpStorm Meta file (see below).
|
||||||
|
|
||||||
|
|
||||||
## PhpStorm Meta for Container instances
|
## PhpStorm Meta for Container instances
|
||||||
|
|
||||||
It's possible to generate a PhpStorm meta file to [add support for factory design pattern](https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata). For Laravel, this means we can make PhpStorm understand what kind of object we are resolving from the IoC Container. For example, `events` will return an `Illuminate\Events\Dispatcher` object, so with the meta file you can call `app('events')` and it will autocomplete the Dispatcher methods.
|
It's possible to generate a PhpStorm meta file to [add support for factory design pattern](https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata). For Laravel, this means we can make PhpStorm understand what kind of object we are resolving from the IoC Container. For example, `events` will return an `Illuminate\Events\Dispatcher` object, so with the meta file you can call `app('events')` and it will autocomplete the Dispatcher methods.
|
||||||
@@ -249,14 +261,10 @@ The Laravel IDE Helper Generator is open-sourced software licensed under the [MI
|
|||||||
[ico-version]: https://img.shields.io/packagist/v/barryvdh/laravel-ide-helper.svg?style=flat-square
|
[ico-version]: https://img.shields.io/packagist/v/barryvdh/laravel-ide-helper.svg?style=flat-square
|
||||||
[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square
|
[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square
|
||||||
[ico-travis]: https://img.shields.io/travis/barryvdh/laravel-ide-helper/master.svg?style=flat-square
|
[ico-travis]: https://img.shields.io/travis/barryvdh/laravel-ide-helper/master.svg?style=flat-square
|
||||||
[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/barryvdh/laravel-ide-helper.svg?style=flat-square
|
|
||||||
[ico-code-quality]: https://img.shields.io/scrutinizer/g/barryvdh/laravel-ide-helper.svg?style=flat-square
|
|
||||||
[ico-downloads]: https://img.shields.io/packagist/dt/barryvdh/laravel-ide-helper.svg?style=flat-square
|
[ico-downloads]: https://img.shields.io/packagist/dt/barryvdh/laravel-ide-helper.svg?style=flat-square
|
||||||
|
|
||||||
[link-packagist]: https://packagist.org/packages/barryvdh/laravel-ide-helper
|
[link-packagist]: https://packagist.org/packages/barryvdh/laravel-ide-helper
|
||||||
[link-travis]: https://travis-ci.org/barryvdh/laravel-ide-helper
|
[link-travis]: https://travis-ci.org/barryvdh/laravel-ide-helper
|
||||||
[link-scrutinizer]: https://scrutinizer-ci.com/g/barryvdh/laravel-ide-helper/code-structure
|
|
||||||
[link-code-quality]: https://scrutinizer-ci.com/g/barryvdh/laravel-ide-helper
|
|
||||||
[link-downloads]: https://packagist.org/packages/barryvdh/laravel-ide-helper
|
[link-downloads]: https://packagist.org/packages/barryvdh/laravel-ide-helper
|
||||||
[link-author]: https://github.com/barryvdh
|
[link-author]: https://github.com/barryvdh
|
||||||
[link-contributors]: ../../contributors
|
[link-contributors]: ../../contributors
|
||||||
|
|||||||
@@ -105,3 +105,13 @@ namespace Illuminate\Support {
|
|||||||
class Fluent {}
|
class Fluent {}
|
||||||
}
|
}
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php foreach ($factories as $factory): ?>
|
||||||
|
namespace <?=$factory->getNamespaceName()?> {
|
||||||
|
/**
|
||||||
|
* @method \Illuminate\Database\Eloquent\Collection|<?=$factory->getShortName()?>[]|<?=$factory->getShortName()?> create($attributes = [])
|
||||||
|
* @method \Illuminate\Database\Eloquent\Collection|<?=$factory->getShortName()?>[]|<?=$factory->getShortName()?> make($attributes = [])
|
||||||
|
*/
|
||||||
|
class <?=$factory->getShortName()?>FactoryBuilder extends \Illuminate\Database\Eloquent\FactoryBuilder {}
|
||||||
|
}
|
||||||
|
<?php endforeach; ?>
|
||||||
|
|||||||
@@ -20,6 +20,15 @@ namespace PHPSTORM_META {
|
|||||||
]));
|
]));
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|
||||||
|
<?php if (count($factories)): ?>
|
||||||
|
override(\factory(0), map([
|
||||||
|
'' => '@FactoryBuilder',
|
||||||
|
<?php foreach($factories as $factory): ?>
|
||||||
|
'<?= $factory->getName() ?>' => \<?= $factory->getName() ?>FactoryBuilder::class,
|
||||||
|
<?php endforeach; ?>
|
||||||
|
]));
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
override(\Illuminate\Support\Arr::add(0), type(0));
|
override(\Illuminate\Support\Arr::add(0), type(0));
|
||||||
override(\Illuminate\Support\Arr::except(0), type(0));
|
override(\Illuminate\Support\Arr::except(0), type(0));
|
||||||
override(\Illuminate\Support\Arr::first(0), elementType(0));
|
override(\Illuminate\Support\Arr::first(0), elementType(0));
|
||||||
|
|||||||
+3
-2
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
namespace Barryvdh\LaravelIdeHelper;
|
namespace Barryvdh\LaravelIdeHelper;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
use Barryvdh\Reflection\DocBlock;
|
use Barryvdh\Reflection\DocBlock;
|
||||||
use Barryvdh\Reflection\DocBlock\Context;
|
use Barryvdh\Reflection\DocBlock\Context;
|
||||||
@@ -315,7 +316,7 @@ class Alias
|
|||||||
{
|
{
|
||||||
foreach ($this->magicMethods as $magic => $real) {
|
foreach ($this->magicMethods as $magic => $real) {
|
||||||
list($className, $name) = explode('::', $real);
|
list($className, $name) = explode('::', $real);
|
||||||
if (!class_exists($className) && !interface_exists($className)) {
|
if ((!class_exists($className) && !interface_exists($className)) || !method_exists($className, $name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$method = new \ReflectionMethod($className, $name);
|
$method = new \ReflectionMethod($className, $name);
|
||||||
@@ -395,7 +396,7 @@ class Alias
|
|||||||
return new \ReflectionMethod($macro_func[0], $macro_func[1]);
|
return new \ReflectionMethod($macro_func[0], $macro_func[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_object($macro_func) && is_callable($macro_func)) {
|
if (is_object($macro_func) && is_callable($macro_func) && !$macro_func instanceof Closure) {
|
||||||
return new \ReflectionMethod($macro_func, '__invoke');
|
return new \ReflectionMethod($macro_func, '__invoke');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
namespace Barryvdh\LaravelIdeHelper\Console;
|
namespace Barryvdh\LaravelIdeHelper\Console;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Factories;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
@@ -47,6 +48,7 @@ class MetaCommand extends Command
|
|||||||
|
|
||||||
protected $methods = [
|
protected $methods = [
|
||||||
'new \Illuminate\Contracts\Container\Container',
|
'new \Illuminate\Contracts\Container\Container',
|
||||||
|
'\Illuminate\Container\Container::makeWith(0)',
|
||||||
'\Illuminate\Contracts\Container\Container::make(0)',
|
'\Illuminate\Contracts\Container\Container::make(0)',
|
||||||
'\Illuminate\Contracts\Container\Container::makeWith(0)',
|
'\Illuminate\Contracts\Container\Container::makeWith(0)',
|
||||||
'\App::make(0)',
|
'\App::make(0)',
|
||||||
@@ -76,6 +78,9 @@ class MetaCommand extends Command
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
// Needs to run before exception handler is registered
|
||||||
|
$factories = $this->config->get('ide-helper.include_factory_builders') ? Factories::all() : [];
|
||||||
|
|
||||||
$this->registerClassAutoloadExceptions();
|
$this->registerClassAutoloadExceptions();
|
||||||
|
|
||||||
$bindings = array();
|
$bindings = array();
|
||||||
@@ -87,10 +92,11 @@ class MetaCommand extends Command
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$concrete = $this->laravel->make($abstract);
|
$concrete = $this->laravel->make($abstract);
|
||||||
if (is_object($concrete)) {
|
$reflectionClass = new \ReflectionClass($concrete);
|
||||||
|
if (is_object($concrete) && !$reflectionClass->isAnonymous()) {
|
||||||
$bindings[$abstract] = get_class($concrete);
|
$bindings[$abstract] = get_class($concrete);
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Throwable $e) {
|
||||||
if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
|
if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
|
||||||
$this->comment("Cannot make '$abstract': ".$e->getMessage());
|
$this->comment("Cannot make '$abstract': ".$e->getMessage());
|
||||||
}
|
}
|
||||||
@@ -100,6 +106,7 @@ class MetaCommand extends Command
|
|||||||
$content = $this->view->make('meta', [
|
$content = $this->view->make('meta', [
|
||||||
'bindings' => $bindings,
|
'bindings' => $bindings,
|
||||||
'methods' => $this->methods,
|
'methods' => $this->methods,
|
||||||
|
'factories' => $factories,
|
||||||
])->render();
|
])->render();
|
||||||
|
|
||||||
$filename = $this->option('filename');
|
$filename = $this->option('filename');
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ class ModelsCommand extends Command
|
|||||||
*/
|
*/
|
||||||
protected $nullableColumns = [];
|
protected $nullableColumns = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* During initializtion we use Laravels Date Facade to
|
||||||
|
* determine the actual date class and store it here.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $dateClass;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Filesystem $files
|
* @param Filesystem $files
|
||||||
*/
|
*/
|
||||||
@@ -96,13 +104,17 @@ class ModelsCommand extends Command
|
|||||||
//If filename is default and Write is not specified, ask what to do
|
//If filename is default and Write is not specified, ask what to do
|
||||||
if (!$this->write && $filename === $this->filename && !$this->option('nowrite')) {
|
if (!$this->write && $filename === $this->filename && !$this->option('nowrite')) {
|
||||||
if ($this->confirm(
|
if ($this->confirm(
|
||||||
"Do you want to overwrite the existing model files? Choose no to write to $filename instead?"
|
"Do you want to overwrite the existing model files? Choose no to write to $filename instead"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$this->write = true;
|
$this->write = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->dateClass = class_exists(\Illuminate\Support\Facades\Date::class)
|
||||||
|
? '\\' . get_class(\Illuminate\Support\Facades\Date::now())
|
||||||
|
: '\Illuminate\Support\Carbon';
|
||||||
|
|
||||||
$content = $this->generateDocs($model, $ignore);
|
$content = $this->generateDocs($model, $ignore);
|
||||||
|
|
||||||
if (!$this->write) {
|
if (!$this->write) {
|
||||||
@@ -217,8 +229,10 @@ class ModelsCommand extends Command
|
|||||||
$output .= $this->createPhpDocs($name);
|
$output .= $this->createPhpDocs($name);
|
||||||
$ignore[] = $name;
|
$ignore[] = $name;
|
||||||
$this->nullableColumns = [];
|
$this->nullableColumns = [];
|
||||||
} catch (\Exception $e) {
|
} catch (\Throwable $e) {
|
||||||
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
|
$this->error("Exception: " . $e->getMessage() .
|
||||||
|
"\nCould not analyze class $name.\n\nTrace:\n" .
|
||||||
|
$e->getTraceAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,13 +298,13 @@ class ModelsCommand extends Command
|
|||||||
break;
|
break;
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
$realType = '\Illuminate\Support\Carbon';
|
$realType = $this->dateClass;
|
||||||
break;
|
break;
|
||||||
case 'collection':
|
case 'collection':
|
||||||
$realType = '\Illuminate\Support\Collection';
|
$realType = '\Illuminate\Support\Collection';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$realType = 'mixed';
|
$realType = class_exists($type) ? ('\\' . $type) : 'mixed';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,7 +362,7 @@ class ModelsCommand extends Command
|
|||||||
foreach ($columns as $column) {
|
foreach ($columns as $column) {
|
||||||
$name = $column->getName();
|
$name = $column->getName();
|
||||||
if (in_array($name, $model->getDates())) {
|
if (in_array($name, $model->getDates())) {
|
||||||
$type = '\Illuminate\Support\Carbon';
|
$type = $this->dateClass;
|
||||||
} else {
|
} else {
|
||||||
$type = $column->getType()->getName();
|
$type = $column->getType()->getName();
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
@@ -446,14 +460,24 @@ class ModelsCommand extends Command
|
|||||||
}
|
}
|
||||||
} elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) {
|
} elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) {
|
||||||
$reflection = new \ReflectionClass($model);
|
$reflection = new \ReflectionClass($model);
|
||||||
$this->setMethod($method, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->getName());
|
|
||||||
|
$builder = get_class($model->newModelQuery());
|
||||||
|
|
||||||
|
$this->setMethod($method, "\\{$builder}|\\" . $reflection->getName());
|
||||||
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
||||||
&& !Str::startsWith($method, 'get')
|
&& !Str::startsWith($method, 'get')
|
||||||
) {
|
) {
|
||||||
//Use reflection to inspect the code, based on Illuminate/Support/SerializableClosure.php
|
//Use reflection to inspect the code, based on Illuminate/Support/SerializableClosure.php
|
||||||
$reflection = new \ReflectionMethod($model, $method);
|
$reflection = new \ReflectionMethod($model, $method);
|
||||||
// php 7.x type or fallback to docblock
|
|
||||||
$type = (string) $reflection->getReturnType() ?: (string)$this->getReturnTypeFromDocBlock($reflection);
|
if ($returnType = $reflection->getReturnType()) {
|
||||||
|
$type = $returnType instanceof \ReflectionNamedType
|
||||||
|
? $returnType->getName()
|
||||||
|
: (string)$returnType;
|
||||||
|
} else {
|
||||||
|
// php 7.x type or fallback to docblock
|
||||||
|
$type = (string)$this->getReturnTypeFromDocBlock($reflection);
|
||||||
|
}
|
||||||
|
|
||||||
$file = new \SplFileObject($reflection->getFileName());
|
$file = new \SplFileObject($reflection->getFileName());
|
||||||
$file->seek($reflection->getStartLine() - 1);
|
$file->seek($reflection->getStartLine() - 1);
|
||||||
@@ -470,6 +494,7 @@ class ModelsCommand extends Command
|
|||||||
foreach (array(
|
foreach (array(
|
||||||
'hasMany' => '\Illuminate\Database\Eloquent\Relations\HasMany',
|
'hasMany' => '\Illuminate\Database\Eloquent\Relations\HasMany',
|
||||||
'hasManyThrough' => '\Illuminate\Database\Eloquent\Relations\HasManyThrough',
|
'hasManyThrough' => '\Illuminate\Database\Eloquent\Relations\HasManyThrough',
|
||||||
|
'hasOneThrough' => '\Illuminate\Database\Eloquent\Relations\HasOneThrough',
|
||||||
'belongsToMany' => '\Illuminate\Database\Eloquent\Relations\BelongsToMany',
|
'belongsToMany' => '\Illuminate\Database\Eloquent\Relations\BelongsToMany',
|
||||||
'hasOne' => '\Illuminate\Database\Eloquent\Relations\HasOne',
|
'hasOne' => '\Illuminate\Database\Eloquent\Relations\HasOne',
|
||||||
'belongsTo' => '\Illuminate\Database\Eloquent\Relations\BelongsTo',
|
'belongsTo' => '\Illuminate\Database\Eloquent\Relations\BelongsTo',
|
||||||
@@ -480,14 +505,19 @@ class ModelsCommand extends Command
|
|||||||
'morphedByMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany'
|
'morphedByMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany'
|
||||||
) as $relation => $impl) {
|
) as $relation => $impl) {
|
||||||
$search = '$this->' . $relation . '(';
|
$search = '$this->' . $relation . '(';
|
||||||
if (stripos($code, $search) || stripos($impl, (string)$type) !== false) {
|
if (stripos($code, $search) || $impl === (string)$type) {
|
||||||
//Resolve the relation's model to a Relation object.
|
//Resolve the relation's model to a Relation object.
|
||||||
$methodReflection = new \ReflectionMethod($model, $method);
|
$methodReflection = new \ReflectionMethod($model, $method);
|
||||||
if ($methodReflection->getNumberOfParameters()) {
|
if ($methodReflection->getNumberOfParameters()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$relationObj = $model->$method();
|
// Adding constraints requires reading model properties which
|
||||||
|
// can cause errors. Since we don't need constraints we can
|
||||||
|
// disable them when we fetch the relation to avoid errors.
|
||||||
|
$relationObj = Relation::noConstraints(function () use ($model, $method) {
|
||||||
|
return $model->$method();
|
||||||
|
});
|
||||||
|
|
||||||
if ($relationObj instanceof Relation) {
|
if ($relationObj instanceof Relation) {
|
||||||
$relatedModel = '\\' . get_class($relationObj->getRelated());
|
$relatedModel = '\\' . get_class($relationObj->getRelated());
|
||||||
@@ -500,7 +530,7 @@ class ModelsCommand extends Command
|
|||||||
'morphToMany',
|
'morphToMany',
|
||||||
'morphedByMany',
|
'morphedByMany',
|
||||||
];
|
];
|
||||||
if (in_array($relation, $relations)) {
|
if (strpos(get_class($relationObj), 'Many') !== false) {
|
||||||
//Collection or array of models (because Collection is Arrayable)
|
//Collection or array of models (because Collection is Arrayable)
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
$method,
|
$method,
|
||||||
@@ -508,6 +538,12 @@ class ModelsCommand extends Command
|
|||||||
true,
|
true,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
$this->setProperty(
|
||||||
|
Str::snake($method) . '_count',
|
||||||
|
'int|null',
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
} elseif ($relation === "morphTo") {
|
} elseif ($relation === "morphTo") {
|
||||||
// Model isn't specified because relation is polymorphic
|
// Model isn't specified because relation is polymorphic
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
@@ -721,7 +757,7 @@ class ModelsCommand extends Command
|
|||||||
if (is_bool($default)) {
|
if (is_bool($default)) {
|
||||||
$default = $default ? 'true' : 'false';
|
$default = $default ? 'true' : 'false';
|
||||||
} elseif (is_array($default)) {
|
} elseif (is_array($default)) {
|
||||||
$default = 'array()';
|
$default = '[]';
|
||||||
} elseif (is_null($default)) {
|
} elseif (is_null($default)) {
|
||||||
$default = 'null';
|
$default = 'null';
|
||||||
} elseif (is_int($default)) {
|
} elseif (is_int($default)) {
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Database\Eloquent\Factory;
|
||||||
|
use ReflectionClass;
|
||||||
|
|
||||||
|
class Factories
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function all()
|
||||||
|
{
|
||||||
|
$factories = [];
|
||||||
|
|
||||||
|
$factory = app(Factory::class);
|
||||||
|
|
||||||
|
$definitions = (new ReflectionClass(Factory::class))->getProperty('definitions');
|
||||||
|
$definitions->setAccessible(true);
|
||||||
|
|
||||||
|
foreach ($definitions->getValue($factory) as $factory_target => $config) {
|
||||||
|
try {
|
||||||
|
$factories[] = new ReflectionClass($factory_target);
|
||||||
|
} catch (Exception $exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $factories;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -86,6 +86,7 @@ class Generator
|
|||||||
->with('helpers', $this->helpers)
|
->with('helpers', $this->helpers)
|
||||||
->with('version', $app->version())
|
->with('version', $app->version())
|
||||||
->with('include_fluent', $this->config->get('ide-helper.include_fluent', true))
|
->with('include_fluent', $this->config->get('ide-helper.include_fluent', true))
|
||||||
|
->with('factories', $this->config->get('ide-helper.include_factory_builders') ? Factories::all() : [])
|
||||||
->render();
|
->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -314,14 +314,14 @@ class Method
|
|||||||
$params = array();
|
$params = array();
|
||||||
$paramsWithDefault = array();
|
$paramsWithDefault = array();
|
||||||
foreach ($method->getParameters() as $param) {
|
foreach ($method->getParameters() as $param) {
|
||||||
$paramStr = '$' . $param->getName();
|
$paramStr = $param->isVariadic() ? '...$' . $param->getName() : '$' . $param->getName();
|
||||||
$params[] = $paramStr;
|
$params[] = $paramStr;
|
||||||
if ($param->isOptional()) {
|
if ($param->isOptional() && !$param->isVariadic()) {
|
||||||
$default = $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null;
|
$default = $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null;
|
||||||
if (is_bool($default)) {
|
if (is_bool($default)) {
|
||||||
$default = $default ? 'true' : 'false';
|
$default = $default ? 'true' : 'false';
|
||||||
} elseif (is_array($default)) {
|
} elseif (is_array($default)) {
|
||||||
$default = 'array()';
|
$default = '[]';
|
||||||
} elseif (is_null($default)) {
|
} elseif (is_null($default)) {
|
||||||
$default = 'null';
|
$default = 'null';
|
||||||
} elseif (is_int($default)) {
|
} elseif (is_int($default)) {
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
use ReflectionClass;
|
||||||
|
|
||||||
|
class EloquentCommandTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCommand()
|
||||||
|
{
|
||||||
|
$modelFilename = $this->getVendorModelFilename();
|
||||||
|
$modelSource = file_get_contents($modelFilename);
|
||||||
|
if (false !== strpos($modelSource, '* @mixin')) {
|
||||||
|
$msg = sprintf('Class %s already contains the @mixin markers', Model::class);
|
||||||
|
$this->markTestSkipped($msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
// We don't care about actual args (filename)
|
||||||
|
->andReturn('abstract class Model implements'); // This is enough to trigger the replacement logic
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(), // First arg is path, we don't care
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
$command = $this->app->make(EloquentCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command);
|
||||||
|
|
||||||
|
$expectedContent = '/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @mixin \Eloquent
|
||||||
|
* @mixin \Illuminate\Database\Eloquent\Builder
|
||||||
|
* @mixin \Illuminate\Database\Query\Builder
|
||||||
|
*/
|
||||||
|
abstract class Model implements';
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
|
||||||
|
$display = $tester->getDisplay();
|
||||||
|
$this->assertRegExp(';Unexpected no document on Illuminate\\\Database\\\Eloquent\\\Model;', $display);
|
||||||
|
$this->assertRegExp(';Wrote expected docblock to .*/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php;', $display);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getVendorModelFilename(): string
|
||||||
|
{
|
||||||
|
$class = Model::class;
|
||||||
|
$reflectedClass = new ReflectionClass($class);
|
||||||
|
|
||||||
|
return $reflectedClass->getFileName();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
||||||
|
use Illuminate\Foundation\Application;
|
||||||
|
|
||||||
|
abstract class AbstractModelsCommand extends TestCase
|
||||||
|
{
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
// Skip older Laravel version for these tests
|
||||||
|
if (version_compare(Application::VERSION, '6.0', '<')) {
|
||||||
|
$this->markTestSkipped('This test requires Laravel 6.0 or higher');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->loadMigrationsFrom(__DIR__ . '/migrations');
|
||||||
|
$this->artisan('migrate');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$config = $app['config'];
|
||||||
|
|
||||||
|
$config->set('database.default', 'sqlite');
|
||||||
|
$config->set('database.connections.sqlite', [
|
||||||
|
'driver' => 'sqlite',
|
||||||
|
'database' => ':memory:',
|
||||||
|
'prefix' => '',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class CustomDate extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Carbon\CarbonImmutable;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
use Illuminate\Support\Facades\Date;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
Date::use(CarbonImmutable::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function tearDown(): void
|
||||||
|
{
|
||||||
|
Date::use(Carbon::class);
|
||||||
|
|
||||||
|
parent::tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/CustomDate/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/CustomDate.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate
|
||||||
|
*
|
||||||
|
* @property \Carbon\CarbonImmutable|null $created_at
|
||||||
|
* @property \Carbon\CarbonImmutable|null $updated_at
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomDate\Models\CustomDate whereUpdatedAt($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class CustomDate extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Post extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/GenerateBasicPhpdoc/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Post.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property string|null $char_nullable
|
||||||
|
* @property string $char_not_nullable
|
||||||
|
* @property string|null $string_nullable
|
||||||
|
* @property string $string_not_nullable
|
||||||
|
* @property string|null $text_nullable
|
||||||
|
* @property string $text_not_nullable
|
||||||
|
* @property string|null $medium_text_nullable
|
||||||
|
* @property string $medium_text_not_nullable
|
||||||
|
* @property string|null $long_text_nullable
|
||||||
|
* @property string $long_text_not_nullable
|
||||||
|
* @property integer|null $integer_nullable
|
||||||
|
* @property integer $integer_not_nullable
|
||||||
|
* @property integer|null $tiny_integer_nullable
|
||||||
|
* @property integer $tiny_integer_not_nullable
|
||||||
|
* @property integer|null $small_integer_nullable
|
||||||
|
* @property integer $small_integer_not_nullable
|
||||||
|
* @property integer|null $medium_integer_nullable
|
||||||
|
* @property integer $medium_integer_not_nullable
|
||||||
|
* @property integer|null $big_integer_nullable
|
||||||
|
* @property integer $big_integer_not_nullable
|
||||||
|
* @property integer|null $unsigned_integer_nullable
|
||||||
|
* @property integer $unsigned_integer_not_nullable
|
||||||
|
* @property integer|null $unsigned_tiny_integer_nullable
|
||||||
|
* @property integer $unsigned_tiny_integer_not_nullable
|
||||||
|
* @property integer|null $unsigned_small_integer_nullable
|
||||||
|
* @property integer $unsigned_small_integer_not_nullable
|
||||||
|
* @property integer|null $unsigned_medium_integer_nullable
|
||||||
|
* @property integer $unsigned_medium_integer_not_nullable
|
||||||
|
* @property integer|null $unsigned_big_integer_nullable
|
||||||
|
* @property integer $unsigned_big_integer_not_nullable
|
||||||
|
* @property float|null $float_nullable
|
||||||
|
* @property float $float_not_nullable
|
||||||
|
* @property float|null $double_nullable
|
||||||
|
* @property float $double_not_nullable
|
||||||
|
* @property float|null $decimal_nullable
|
||||||
|
* @property float $decimal_not_nullable
|
||||||
|
* @property float|null $unsigned_decimal_nullable
|
||||||
|
* @property float $unsigned_decimal_not_nullable
|
||||||
|
* @property integer|null $boolean_nullable
|
||||||
|
* @property integer $boolean_not_nullable
|
||||||
|
* @property string|null $enum_nullable
|
||||||
|
* @property string $enum_not_nullable
|
||||||
|
* @property string|null $json_nullable
|
||||||
|
* @property string $json_not_nullable
|
||||||
|
* @property string|null $jsonb_nullable
|
||||||
|
* @property string $jsonb_not_nullable
|
||||||
|
* @property string|null $date_nullable
|
||||||
|
* @property string $date_not_nullable
|
||||||
|
* @property string|null $datetime_nullable
|
||||||
|
* @property string $datetime_not_nullable
|
||||||
|
* @property string|null $datetimetz_nullable
|
||||||
|
* @property string $datetimetz_not_nullable
|
||||||
|
* @property string|null $time_nullable
|
||||||
|
* @property string $time_not_nullable
|
||||||
|
* @property string|null $timetz_nullable
|
||||||
|
* @property string $timetz_not_nullable
|
||||||
|
* @property string|null $timestamp_nullable
|
||||||
|
* @property string $timestamp_not_nullable
|
||||||
|
* @property string|null $timestamptz_nullable
|
||||||
|
* @property string $timestamptz_not_nullable
|
||||||
|
* @property integer|null $year_nullable
|
||||||
|
* @property integer $year_not_nullable
|
||||||
|
* @property mixed|null $binary_nullable
|
||||||
|
* @property mixed $binary_not_nullable
|
||||||
|
* @property string|null $uuid_nullable
|
||||||
|
* @property string $uuid_not_nullable
|
||||||
|
* @property string|null $ipaddress_nullable
|
||||||
|
* @property string $ipaddress_not_nullable
|
||||||
|
* @property string|null $macaddress_nullable
|
||||||
|
* @property string $macaddress_not_nullable
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBigIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBigIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBinaryNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBinaryNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBooleanNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereBooleanNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereCharNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereCharNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDateNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDateNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDatetimeNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDatetimeNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDatetimetzNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDatetimetzNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDecimalNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDecimalNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDoubleNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereDoubleNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereEnumNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereEnumNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereFloatNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereFloatNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereIpaddressNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereIpaddressNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereJsonNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereJsonNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereJsonbNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereJsonbNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereLongTextNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereLongTextNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMacaddressNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMacaddressNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMediumIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMediumIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMediumTextNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereMediumTextNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereSmallIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereSmallIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereStringNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereStringNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTextNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTextNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimeNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimeNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimestampNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimestampNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimestamptzNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimestamptzNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimetzNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTimetzNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTinyIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereTinyIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedBigIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedBigIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedDecimalNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedDecimalNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedMediumIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedMediumIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedSmallIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedSmallIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedTinyIntegerNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUnsignedTinyIntegerNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUuidNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereUuidNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereYearNotNullable($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhpdoc\Models\Post whereYearNullable($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Post extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnPhpdocAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeWithIntReturnTypeAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnTypeAndPhpdocAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnTypeAndButPhpdocStringAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeWithoutTypeAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return what|ever|we-write/here
|
||||||
|
*/
|
||||||
|
public function getAttributeTakesPhpdocLiteralAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnTypeIntOrNullAttribute(): ?int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnsImportedClass(): DateTime
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnsFqnClass(): \Illuminate\Support\Facades\Date
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/Getter/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property-read mixed $attribute_return_type_int_or_null
|
||||||
|
* @property-read \what|\ever|\we-write/here $attribute_takes_phpdoc_literal
|
||||||
|
* @property-read int $attribute_with_int_return_phpdoc
|
||||||
|
* @property-read string $attribute_with_int_return_type_and_but_phpdoc_string
|
||||||
|
* @property-read int $attribute_with_int_return_type_and_phpdoc
|
||||||
|
* @property-read mixed $attribute_with_int_return_type
|
||||||
|
* @property-read mixed $attribute_without_type
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Getter\Models\Simple whereId($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnPhpdocAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeWithIntReturnTypeAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnTypeAndPhpdocAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getAttributeWithIntReturnTypeAndButPhpdocStringAttribute(): int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeWithoutTypeAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return what|ever|we-write/here
|
||||||
|
*/
|
||||||
|
public function getAttributeTakesPhpdocLiteralAttribute()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnTypeIntOrNullAttribute(): ?int
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnsImportedClass(): DateTime
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributeReturnsFqnClass(): \Illuminate\Support\Facades\Date
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||||
|
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
// Regular relations
|
||||||
|
public function relationHasMany(): HasMany
|
||||||
|
{
|
||||||
|
return $this->hasMany(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationHasOne(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsTo(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsToMany(): BelongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphTo(): MorphTo
|
||||||
|
{
|
||||||
|
return $this->morphTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphOne(): MorphOne
|
||||||
|
{
|
||||||
|
return $this->morphOne(Simple::class, 'relationMorphTo');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphMany(): MorphMany
|
||||||
|
{
|
||||||
|
return $this->morphMany(Simple::class, 'relationMorphTo');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphedByMany(): MorphToMany
|
||||||
|
{
|
||||||
|
return $this->morphedByMany(Simple::class, 'foo');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom relations
|
||||||
|
|
||||||
|
public function relationBelongsToInAnotherNamespace(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(AnotherModel::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsToSameNameAsColumn(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(AnotherModel::class, __FUNCTION__);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class AnotherModel extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/Relations/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @property-read \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple $relationBelongsTo
|
||||||
|
* @property-read \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel $relationBelongsToInAnotherNamespace
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple[] $relationBelongsToMany
|
||||||
|
* @property-read int|null $relation_belongs_to_many_count
|
||||||
|
* @property-read \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel $relationBelongsToSameNameAsColumn
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple[] $relationHasMany
|
||||||
|
* @property-read int|null $relation_has_many_count
|
||||||
|
* @property-read \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple $relationHasOne
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple[] $relationMorphMany
|
||||||
|
* @property-read int|null $relation_morph_many_count
|
||||||
|
* @property-read \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple $relationMorphOne
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $relationMorphTo
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple[] $relationMorphedByMany
|
||||||
|
* @property-read int|null $relation_morphed_by_many_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models\Simple whereId($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
// Regular relations
|
||||||
|
public function relationHasMany(): HasMany
|
||||||
|
{
|
||||||
|
return $this->hasMany(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationHasOne(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsTo(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsToMany(): BelongsToMany
|
||||||
|
{
|
||||||
|
return $this->belongsToMany(Simple::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphTo(): MorphTo
|
||||||
|
{
|
||||||
|
return $this->morphTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphOne(): MorphOne
|
||||||
|
{
|
||||||
|
return $this->morphOne(Simple::class, 'relationMorphTo');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphMany(): MorphMany
|
||||||
|
{
|
||||||
|
return $this->morphMany(Simple::class, 'relationMorphTo');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationMorphedByMany(): MorphToMany
|
||||||
|
{
|
||||||
|
return $this->morphedByMany(Simple::class, 'foo');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Custom relations
|
||||||
|
|
||||||
|
public function relationBelongsToInAnotherNamespace(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(AnotherModel::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function relationBelongsToSameNameAsColumn(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(AnotherModel::class, __FUNCTION__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Text of existing phpdoc
|
||||||
|
*
|
||||||
|
* @property string $foo
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/ResetAndSmartReset/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNoReset(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Text of existing phpdoc
|
||||||
|
*
|
||||||
|
* @property string $foo
|
||||||
|
* @property integer $id
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple whereId($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testReset(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
'--reset' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple whereId($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSmartReset(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
'--smart-reset' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Text of existing phpdoc
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\ResetAndSmartReset\Models\Simple whereId($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes;
|
||||||
|
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||||
|
use Illuminate\Filesystem\Filesystem;
|
||||||
|
use Mockery;
|
||||||
|
|
||||||
|
class Test extends AbstractModelsCommand
|
||||||
|
{
|
||||||
|
protected function getEnvironmentSetUp($app)
|
||||||
|
{
|
||||||
|
parent::getEnvironmentSetUp($app);
|
||||||
|
|
||||||
|
$app['config']->set('ide-helper', [
|
||||||
|
'model_locations' => [
|
||||||
|
// This is calculated from the base_path() which points to
|
||||||
|
// vendor/orchestra/testbench-core/laravel
|
||||||
|
'/../../../../tests/Console/ModelsCommand/SoftDeletes/Models',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test(): void
|
||||||
|
{
|
||||||
|
$actualContent = null;
|
||||||
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('get')
|
||||||
|
->andReturn(file_get_contents(__DIR__ . '/Models/Simple.php'))
|
||||||
|
->once();
|
||||||
|
$mockFilesystem
|
||||||
|
->shouldReceive('put')
|
||||||
|
->with(
|
||||||
|
Mockery::any(),
|
||||||
|
Mockery::capture($actualContent)
|
||||||
|
)
|
||||||
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||||
|
->once();
|
||||||
|
|
||||||
|
$this->instance(Filesystem::class, $mockFilesystem);
|
||||||
|
|
||||||
|
$command = $this->app->make(ModelsCommand::class);
|
||||||
|
|
||||||
|
$tester = $this->runCommand($command, [
|
||||||
|
'--write' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertSame(0, $tester->getStatusCode());
|
||||||
|
$this->assertEmpty($tester->getDisplay());
|
||||||
|
|
||||||
|
$expectedContent = <<<'PHP'
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple
|
||||||
|
*
|
||||||
|
* @property integer $id
|
||||||
|
* @method static bool|null forceDelete()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple newQuery()
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple onlyTrashed()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple query()
|
||||||
|
* @method static bool|null restore()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple withTrashed()
|
||||||
|
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletes\Models\Simple withoutTrashed()
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
|
class Simple extends Model
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
}
|
||||||
|
|
||||||
|
PHP;
|
||||||
|
|
||||||
|
$this->assertSame($expectedContent, $actualContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CustomDatesTable extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('custom_dates', function (Blueprint $table) {
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class PostsTable extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('posts', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
|
||||||
|
$table->char('char_nullable')->nullable();
|
||||||
|
$table->char('char_not_nullable');
|
||||||
|
|
||||||
|
$table->string('string_nullable')->nullable();
|
||||||
|
$table->string('string_not_nullable');
|
||||||
|
|
||||||
|
$table->text('text_nullable')->nullable();
|
||||||
|
$table->text('text_not_nullable');
|
||||||
|
|
||||||
|
$table->mediumText('medium_text_nullable')->nullable();
|
||||||
|
$table->mediumText('medium_text_not_nullable');
|
||||||
|
|
||||||
|
$table->longText('long_text_nullable')->nullable();
|
||||||
|
$table->longText('long_text_not_nullable');
|
||||||
|
|
||||||
|
$table->integer('integer_nullable')->nullable();
|
||||||
|
$table->integer('integer_not_nullable');
|
||||||
|
|
||||||
|
$table->tinyInteger('tiny_integer_nullable')->nullable();
|
||||||
|
$table->tinyInteger('tiny_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->smallInteger('small_integer_nullable')->nullable();
|
||||||
|
$table->smallInteger('small_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->mediumInteger('medium_integer_nullable')->nullable();
|
||||||
|
$table->mediumInteger('medium_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->bigInteger('big_integer_nullable')->nullable();
|
||||||
|
$table->bigInteger('big_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedInteger('unsigned_integer_nullable')->nullable();
|
||||||
|
$table->unsignedInteger('unsigned_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedTinyInteger('unsigned_tiny_integer_nullable')->nullable();
|
||||||
|
$table->unsignedTinyInteger('unsigned_tiny_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedSmallInteger('unsigned_small_integer_nullable')->nullable();
|
||||||
|
$table->unsignedSmallInteger('unsigned_small_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedMediumInteger('unsigned_medium_integer_nullable')->nullable();
|
||||||
|
$table->unsignedMediumInteger('unsigned_medium_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('unsigned_big_integer_nullable')->nullable();
|
||||||
|
$table->unsignedBigInteger('unsigned_big_integer_not_nullable');
|
||||||
|
|
||||||
|
$table->float('float_nullable')->nullable();
|
||||||
|
$table->float('float_not_nullable');
|
||||||
|
|
||||||
|
$table->double('double_nullable')->nullable();
|
||||||
|
$table->double('double_not_nullable');
|
||||||
|
|
||||||
|
$table->decimal('decimal_nullable')->nullable();
|
||||||
|
$table->decimal('decimal_not_nullable');
|
||||||
|
|
||||||
|
$table->unsignedDecimal('unsigned_decimal_nullable')->nullable();
|
||||||
|
$table->unsignedDecimal('unsigned_decimal_not_nullable');
|
||||||
|
|
||||||
|
$table->boolean('boolean_nullable')->nullable();
|
||||||
|
$table->boolean('boolean_not_nullable');
|
||||||
|
|
||||||
|
$table->enum('enum_nullable', ['foo', 'bar'])->nullable();
|
||||||
|
$table->enum('enum_not_nullable', ['foo', 'bar']);
|
||||||
|
|
||||||
|
$table->json('json_nullable')->nullable();
|
||||||
|
$table->json('json_not_nullable');
|
||||||
|
|
||||||
|
$table->jsonb('jsonb_nullable')->nullable();
|
||||||
|
$table->jsonb('jsonb_not_nullable');
|
||||||
|
|
||||||
|
$table->date('date_nullable')->nullable();
|
||||||
|
$table->date('date_not_nullable');
|
||||||
|
|
||||||
|
$table->dateTime('datetime_nullable')->nullable();
|
||||||
|
$table->dateTime('datetime_not_nullable');
|
||||||
|
|
||||||
|
$table->dateTimeTz('datetimetz_nullable')->nullable();
|
||||||
|
$table->dateTimeTz('datetimetz_not_nullable');
|
||||||
|
|
||||||
|
$table->time('time_nullable')->nullable();
|
||||||
|
$table->time('time_not_nullable');
|
||||||
|
|
||||||
|
$table->timeTz('timetz_nullable')->nullable();
|
||||||
|
$table->timeTz('timetz_not_nullable');
|
||||||
|
|
||||||
|
$table->timestamp('timestamp_nullable')->nullable();
|
||||||
|
$table->timestamp('timestamp_not_nullable');
|
||||||
|
|
||||||
|
$table->timestampTz('timestamptz_nullable')->nullable();
|
||||||
|
$table->timestampTz('timestamptz_not_nullable');
|
||||||
|
|
||||||
|
$table->year('year_nullable')->nullable();
|
||||||
|
$table->year('year_not_nullable');
|
||||||
|
|
||||||
|
$table->binary('binary_nullable')->nullable();
|
||||||
|
$table->binary('binary_not_nullable');
|
||||||
|
|
||||||
|
$table->uuid('uuid_nullable')->nullable();
|
||||||
|
$table->uuid('uuid_not_nullable');
|
||||||
|
|
||||||
|
$table->ipAddress('ipaddress_nullable')->nullable();
|
||||||
|
$table->ipAddress('ipaddress_not_nullable');
|
||||||
|
|
||||||
|
$table->macAddress('macaddress_nullable')->nullable();
|
||||||
|
$table->macAddress('macaddress_not_nullable');
|
||||||
|
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class SimpleTable extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('simples', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
+13
-8
@@ -1,8 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Barryvdh\LaravelIdeHelper;
|
namespace Barryvdh\LaravelIdeHelper\Tests;
|
||||||
|
|
||||||
class ExampleTest extends \PHPUnit_Framework_TestCase
|
use Barryvdh\LaravelIdeHelper\Method;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class ExampleTest extends TestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Test that we can actually instantiate the class
|
* Test that we can actually instantiate the class
|
||||||
@@ -32,15 +35,16 @@ class ExampleTest extends \PHPUnit_Framework_TestCase
|
|||||||
*
|
*
|
||||||
* @param string $last
|
* @param string $last
|
||||||
* @param string $first
|
* @param string $first
|
||||||
|
* @param string $middle
|
||||||
* @static
|
* @static
|
||||||
*/';
|
*/';
|
||||||
$this->assertEquals($output, $method->getDocComment(''));
|
$this->assertEquals($output, $method->getDocComment(''));
|
||||||
$this->assertEquals('setName', $method->getName());
|
$this->assertEquals('setName', $method->getName());
|
||||||
$this->assertEquals('\\'.ExampleClass::class, $method->getDeclaringClass());
|
$this->assertEquals('\\'.ExampleClass::class, $method->getDeclaringClass());
|
||||||
$this->assertEquals('$last, $first', $method->getParams(true));
|
$this->assertEquals('$last, $first, ...$middle', $method->getParams(true));
|
||||||
$this->assertEquals(['$last', '$first'], $method->getParams(false));
|
$this->assertEquals(['$last', '$first', '...$middle'], $method->getParams(false));
|
||||||
$this->assertEquals('$last, $first = \'Barry\'', $method->getParamsWithDefault(true));
|
$this->assertEquals('$last, $first = \'Barry\', ...$middle', $method->getParamsWithDefault(true));
|
||||||
$this->assertEquals(['$last', '$first = \'Barry\''], $method->getParamsWithDefault(false));
|
$this->assertEquals(['$last', '$first = \'Barry\'', '...$middle'], $method->getParamsWithDefault(false));
|
||||||
$this->assertEquals(true, $method->shouldReturn());
|
$this->assertEquals(true, $method->shouldReturn());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,9 +54,10 @@ class ExampleClass
|
|||||||
/**
|
/**
|
||||||
* @param string $last
|
* @param string $last
|
||||||
* @param string $first
|
* @param string $first
|
||||||
|
* @param string $middle
|
||||||
*/
|
*/
|
||||||
public function setName($last, $first = 'Barry')
|
public function setName($last, $first = 'Barry', ...$middle)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Tests;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Orchestra\Testbench\TestCase as BaseTestCase;
|
||||||
|
use Symfony\Component\Console\Tester\CommandTester;
|
||||||
|
|
||||||
|
abstract class TestCase extends BaseTestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The `CommandTester` is directly returned, use methods like
|
||||||
|
* `->getDisplay()` or `->getStatusCode()` on it.
|
||||||
|
*
|
||||||
|
* @param Command $command
|
||||||
|
* @param array $arguments The command line arguments, array of key=>value
|
||||||
|
* Examples:
|
||||||
|
* - named arguments: ['model' => 'Post']
|
||||||
|
* - boolean flags: ['--all' => true]
|
||||||
|
* - arguments with values: ['--arg' => 'value']
|
||||||
|
* @param array $interactiveInput Interactive responses to the command
|
||||||
|
* I.e. anything the command `->ask()` or `->confirm()`, etc.
|
||||||
|
* @return CommandTester
|
||||||
|
*/
|
||||||
|
protected function runCommand(Command $command, array $arguments = [], array $interactiveInput = []): CommandTester
|
||||||
|
{
|
||||||
|
$command->setLaravel($this->app);
|
||||||
|
|
||||||
|
$tester = new CommandTester($command);
|
||||||
|
$tester->setInputs($interactiveInput);
|
||||||
|
|
||||||
|
$tester->execute($arguments);
|
||||||
|
|
||||||
|
return $tester;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user