mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5515cabea3 | ||
|
|
9859958cfa | ||
|
|
ae5d7708b7 | ||
|
|
113545bc1a | ||
|
|
ff54a20d21 | ||
|
|
db53e8e2b5 | ||
|
|
b3a79fe6c1 | ||
|
|
b4138e5122 | ||
|
|
c4d1f780b0 | ||
|
|
317889805b | ||
|
|
ca0cf7355a | ||
|
|
336ae44ef2 | ||
|
|
0168e7256b | ||
|
|
1044f466e9 | ||
|
|
fd4d280a80 | ||
|
|
2ff9672a49 | ||
|
|
00ee13e0cf | ||
|
|
4ef3876b94 | ||
|
|
5db6029f2c | ||
|
|
2a3c7fb087 | ||
|
|
b677af89c2 | ||
|
|
594534ec5a | ||
|
|
7305504c99 | ||
|
|
186340bedc | ||
|
|
4aa2e6a576 | ||
|
|
9baf93a502 | ||
|
|
affa55122f | ||
|
|
b7d84785b1 | ||
|
|
4df96b5e62 | ||
|
|
3a22b8daf6 | ||
|
|
24596b67f1 | ||
|
|
d978986523 | ||
|
|
3ea232dc3a | ||
|
|
007d3adb68 | ||
|
|
764bc02b84 | ||
|
|
a96add6981 | ||
|
|
4a6d127440 | ||
|
|
1ca875fbca | ||
|
|
462989abd5 | ||
|
|
bd5b6ecee7 | ||
|
|
3b66fea925 | ||
|
|
707ec990e7 | ||
|
|
a49cb46fdf | ||
|
|
a12f902b33 | ||
|
|
8287f02afa | ||
|
|
1d9e82f2b7 | ||
|
|
9599cfbbc9 | ||
|
|
c852650d7e | ||
|
|
ac6fbffac3 | ||
|
|
1ad23fd14c | ||
|
|
444325205e | ||
|
|
c760c9aa0c | ||
|
|
ce4186c1c7 |
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: "🐛 Bug Report"
|
||||
about: 'Report a general bug.'
|
||||
labels: bug
|
||||
|
||||
---
|
||||
|
||||
### Versions:
|
||||
- ide-helper Version: #.#.#
|
||||
- Laravel Version: #.#.# <!-- remove if not applicable -->
|
||||
- Lumen Version: #.#.# <!-- remove if not applicable -->
|
||||
- PHP Version: #.#.#
|
||||
|
||||
### Description:
|
||||
|
||||
<!--
|
||||
Please describe in detail the nature of the bug, code samples, etc.
|
||||
|
||||
The more, the better.
|
||||
-->
|
||||
|
||||
### Steps To Reproduce:
|
||||
|
||||
- …
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: "✨ Feature request"
|
||||
about: 'Suggest a new feature or other improvements.'
|
||||
labels: enhancement
|
||||
|
||||
---
|
||||
|
||||
### Summary
|
||||
|
||||
<!--
|
||||
Describe in detail what you propose, show (preferable) code examples and also signal if you're willing to work on it!
|
||||
-->
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "🙋🏼♂️ Support question"
|
||||
about: 'I need assistance or clarification on usage of this library.'
|
||||
labels: question
|
||||
|
||||
---
|
||||
|
||||
### Versions:
|
||||
- ide-helper Version: #.#.#
|
||||
- Laravel Version: #.#.# <!-- remove if not applicable -->
|
||||
- Lumen Version: #.#.# <!-- remove if not applicable -->
|
||||
- PHP Version: #.#.#
|
||||
|
||||
### Question:
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
## Summary
|
||||
<!-- Please provide an exhaustive description. -->
|
||||
|
||||
## Type of change
|
||||
|
||||
<!-- Please delete options that are not relevant. -->
|
||||
|
||||
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||
- [ ] New feature (non-breaking change which adds functionality)
|
||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- [ ] This change requires a documentation update
|
||||
- [ ] Misc. change (internal, infrastructure, maintenance, etc.)
|
||||
|
||||
### Checklist
|
||||
- [ ] Existing tests have been adapted and/or new tests have been added
|
||||
- [ ] Add a CHANGELOG.md entry
|
||||
- [ ] Update the README.md
|
||||
- [ ] Code style has been fixed via `composer fix-style`
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
normalize:
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
name: Fix Code Style
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
fix-style:
|
||||
name: Fix Code Style
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
COMPOSER_NO_INTERACTION: 1
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 7.4
|
||||
coverage: none
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer update --prefer-dist --no-progress
|
||||
|
||||
- run: composer fix-style
|
||||
continue-on-error: true
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: composer fix-style
|
||||
commit_author: laravel-ide-helper <[email protected]>
|
||||
@@ -0,0 +1,132 @@
|
||||
name: Integration Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- "*"
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
php-lumen-integration-tests:
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 15
|
||||
env:
|
||||
COMPOSER_NO_INTERACTION: 1
|
||||
strategy:
|
||||
matrix:
|
||||
php: [8.0, 7.4, 7.3, 7.2]
|
||||
lumen: [8.*, 7.*, 6.*]
|
||||
exclude:
|
||||
- lumen: 6.*
|
||||
php: 8.0
|
||||
- lumen: 7.*
|
||||
php: 8.0
|
||||
- lumen: 8.*
|
||||
php: 7.2
|
||||
name: P${{ matrix.php }} - Lumen${{ matrix.lumen }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: src
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
coverage: none
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer create-project --prefer-dist laravel/lumen:${{ matrix.lumen }} --no-progress sample
|
||||
cd sample
|
||||
composer require "league/flysystem:^1" --no-update --no-progress
|
||||
composer update --prefer-stable --prefer-dist --no-progress
|
||||
|
||||
- name: Add package from source
|
||||
run: |
|
||||
cd sample
|
||||
sed -e 's|"type": "project",|&\n"repositories": [ { "type": "path", "url": "../src" } ],|' -i composer.json
|
||||
composer require --dev "barryvdh/laravel-ide-helper:*"
|
||||
|
||||
- name: Insert service provider
|
||||
run: sed -e 's|// \$app->register(App\\\Providers\\\EventServiceProvider::class);|&\n$app->register(\\Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider::class);|' -i sample/bootstrap/app.php
|
||||
|
||||
- name: Execute generate run
|
||||
run: |
|
||||
cd sample
|
||||
php artisan ide-helper:generate
|
||||
|
||||
- name: Execute meta run
|
||||
run: |
|
||||
cd sample
|
||||
php artisan ide-helper:meta
|
||||
|
||||
- name: Check file existence
|
||||
run: |
|
||||
ls sample/_ide_helper.php
|
||||
ls sample/.phpstorm.meta.php
|
||||
|
||||
- name: Check file count in logs
|
||||
run: |
|
||||
if [ `ls -1q "sample/storage/logs/" | wc -l` -gt 0 ];then exit 1;fi
|
||||
|
||||
php-laravel-integration-tests:
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 15
|
||||
env:
|
||||
COMPOSER_NO_INTERACTION: 1
|
||||
strategy:
|
||||
matrix:
|
||||
php: [7.4, 7.3, 7.2]
|
||||
laravel: [8.*, 7.*, 6.*]
|
||||
exclude:
|
||||
- laravel: 8.*
|
||||
php: 7.2
|
||||
name: P${{ matrix.php }} - Laravel${{ matrix.laravel }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: src
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
coverage: none
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer create-project --prefer-dist laravel/laravel:${{ matrix.laravel }} --no-progress sample
|
||||
cd sample
|
||||
composer update --prefer-stable --prefer-dist --no-progress
|
||||
|
||||
- name: Add package from source
|
||||
run: |
|
||||
cd sample
|
||||
sed -e 's|"type": "project",|&\n"repositories": [ { "type": "path", "url": "../src" } ],|' -i composer.json
|
||||
composer require --dev "barryvdh/laravel-ide-helper:*"
|
||||
|
||||
- name: Execute generate run
|
||||
run: |
|
||||
cd sample
|
||||
php artisan ide-helper:generate
|
||||
|
||||
- name: Execute meta run
|
||||
run: |
|
||||
cd sample
|
||||
php artisan ide-helper:meta
|
||||
|
||||
- name: Check file existence
|
||||
run: |
|
||||
ls sample/_ide_helper.php
|
||||
ls sample/.phpstorm.meta.php
|
||||
|
||||
- name: Check file count in logs
|
||||
run: |
|
||||
if [ `ls -1q "sample/storage/logs/" | wc -l` -gt 0 ];then exit 1;fi
|
||||
@@ -9,7 +9,7 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
@@ -1,22 +1,32 @@
|
||||
name: Tests
|
||||
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- "*"
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
php-tests:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 15
|
||||
env:
|
||||
COMPOSER_NO_INTERACTION: 1
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php: [7.4, 7.3, 7.2]
|
||||
laravel: [7.*, 6.*, 5.5.*]
|
||||
php: [8.0, 7.4, 7.3, 7.2]
|
||||
laravel: [8.*, 7.*, 6.*]
|
||||
dependency-version: [prefer-lowest, prefer-stable]
|
||||
exclude:
|
||||
- laravel: 5.5.*
|
||||
php: 7.4
|
||||
- laravel: 8.*
|
||||
php: 7.2
|
||||
- php: 8.0
|
||||
dependency-version: prefer-lowest
|
||||
|
||||
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
|
||||
|
||||
@@ -29,46 +39,14 @@ jobs:
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
coverage: none
|
||||
|
||||
extensions: pdo_sqlite
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer remove phpro/grumphp vimeo/psalm --no-update --dev
|
||||
composer remove vimeo/psalm --no-update --dev
|
||||
composer remove friendsofphp/php-cs-fixer --no-update --dev
|
||||
composer require "laravel/framework:${{ matrix.laravel }}" --no-update --no-progress
|
||||
composer update --${{ matrix.dependency-version }} --prefer-dist --no-suggest --no-progress
|
||||
composer update --${{ matrix.dependency-version }} --prefer-dist --no-progress
|
||||
|
||||
- name: Execute Unit Tests
|
||||
run: composer test
|
||||
|
||||
fix-style:
|
||||
name: Fix Code Style
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
COMPOSER_NO_INTERACTION: 1
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 7.4
|
||||
coverage: none
|
||||
tools: composer:v2
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer remove phpro/grumphp vimeo/psalm --no-update --dev
|
||||
composer update --prefer-dist --no-suggest --no-progress
|
||||
|
||||
- run: composer fix-style
|
||||
continue-on-error: true
|
||||
|
||||
# Revert modifications so they don't get commited 💥
|
||||
- run: git checkout -- composer.json
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: composer fix-style
|
||||
commit_author: laravel-ide-helper <[email protected]>
|
||||
run: composer test-ci
|
||||
|
||||
+7
-4
@@ -1,5 +1,8 @@
|
||||
build
|
||||
vendor
|
||||
composer.lock
|
||||
.idea
|
||||
.phpunit.result.cache
|
||||
|
||||
/.idea
|
||||
/.php_cs
|
||||
/.php_cs.cache
|
||||
/.php_cs.tests.cache
|
||||
/composer.lock
|
||||
/vendor
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
// Share common rules between non-test and test files
|
||||
return [
|
||||
// PSR12 from https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/4943
|
||||
'@PSR2' => true,
|
||||
'blank_line_after_opening_tag' => true,
|
||||
'braces' => [
|
||||
// Not-yet-implemented
|
||||
// 'allow_single_line_anonymous_class_with_empty_body' => true,
|
||||
],
|
||||
'compact_nullable_typehint' => true,
|
||||
'declare_equal_normalize' => true,
|
||||
'lowercase_cast' => true,
|
||||
'lowercase_static_reference' => true,
|
||||
'new_with_braces' => true,
|
||||
'no_blank_lines_after_class_opening' => true,
|
||||
'no_leading_import_slash' => true,
|
||||
'no_whitespace_in_blank_line' => true,
|
||||
'ordered_class_elements' => [
|
||||
'order' => [
|
||||
'use_trait',
|
||||
],
|
||||
],
|
||||
'ordered_imports' => [
|
||||
'imports_order' => [
|
||||
'class',
|
||||
'function',
|
||||
'const',
|
||||
],
|
||||
'sort_algorithm' => 'alpha',
|
||||
],
|
||||
'return_type_declaration' => true,
|
||||
'short_scalar_cast' => true,
|
||||
'single_blank_line_before_namespace' => true,
|
||||
'single_trait_insert_per_statement' => true,
|
||||
'ternary_operator_spaces' => true,
|
||||
'visibility_required' => [
|
||||
'elements' => [
|
||||
'const',
|
||||
'method',
|
||||
'property',
|
||||
],
|
||||
],
|
||||
|
||||
// Further quality-of-life improvements
|
||||
'array_syntax' => [
|
||||
'syntax' => 'short',
|
||||
],
|
||||
'concat_space' => [
|
||||
'spacing' => 'one',
|
||||
],
|
||||
'fully_qualified_strict_types' => true,
|
||||
'native_function_invocation' => [
|
||||
'include' => [],
|
||||
'strict' => true,
|
||||
],
|
||||
'no_unused_imports' => true,
|
||||
'single_quote' => true,
|
||||
'space_after_semicolon' => true,
|
||||
'trailing_comma_in_multiline_array' => true,
|
||||
'trim_array_spaces' => true,
|
||||
'unary_operator_spaces' => true,
|
||||
'whitespace_after_comma_in_array' => true,
|
||||
];
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
require __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
->in(__DIR__)
|
||||
->exclude('tests');
|
||||
|
||||
$config = require __DIR__ . '/.php_cs.common.php';
|
||||
|
||||
return PhpCsFixer\Config::create()
|
||||
->setFinder($finder)
|
||||
->setRules($config)
|
||||
->setRiskyAllowed(true)
|
||||
->setCacheFile(__DIR__ . '/.php_cs.cache');
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
->in(__DIR__ . '/tests')
|
||||
->exclude('__snapshots__');
|
||||
|
||||
$config = require __DIR__ . '/.php_cs.common.php';
|
||||
|
||||
// Additional rules for tests
|
||||
$config = array_merge(
|
||||
$config,
|
||||
[
|
||||
'declare_strict_types' => true,
|
||||
]
|
||||
);
|
||||
|
||||
return PhpCsFixer\Config::create()
|
||||
->setFinder($finder)
|
||||
->setRules($config)
|
||||
->setRiskyAllowed(true)
|
||||
->setCacheFile(__DIR__ . '/.php_cs.tests.cache');
|
||||
@@ -0,0 +1,81 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
[Next release](https://github.com/barryvdh/laravel-ide-helper/compare/v2.8.1...master)
|
||||
--------------
|
||||
|
||||
### Added
|
||||
- Fix phpdoc generate for custom cast with parameter [\#986 / artelkr](https://github.com/barryvdh/laravel-ide-helper/pull/986)
|
||||
- Created a possibility to add custom relation type [\#987 / efinder2](https://github.com/barryvdh/laravel-ide-helper/pull/987)
|
||||
- Added `@see` with macro/mixin definition location to PhpDoc [\#1054 / riesjart](https://github.com/barryvdh/laravel-ide-helper/pull/1054)
|
||||
- Initial compatibility for PHP8 [\#1106 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1106)
|
||||
|
||||
### Changed
|
||||
- Implement DeferrableProvider [\#914 / kon-shou](https://github.com/barryvdh/laravel-ide-helper/pull/914)
|
||||
|
||||
### Fixed
|
||||
- Compatibility with Lumen [\#1043 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1043)
|
||||
- Allow model_locations to have glob patterns [\#1059 / saackearl](https://github.com/barryvdh/laravel-ide-helper/pull/1059)
|
||||
- Error when generating helper for macroable classes which are not facades and contain a "fake" method [\#1066 / domkrm] (https://github.com/barryvdh/laravel-ide-helper/pull/1066)
|
||||
- Casts with a return type of `static` or `$this` now resolve to an instance of the cast [\#1103 / riesjart](https://github.com/barryvdh/laravel-ide-helper/pull/1103)
|
||||
|
||||
### Removed
|
||||
- Removed format and broken generateJsonHelper [\#1053 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/1053)
|
||||
|
||||
2020-09-07, 2.8.1
|
||||
-----------------
|
||||
### Added
|
||||
- Support Laravel 8 [\#1022 / barryvdh](https://github.com/barryvdh/laravel-ide-helper/pull/1022)
|
||||
- Add option to force usage of FQN [\#1031 / edvordo](https://github.com/barryvdh/laravel-ide-helper/pull/1031)
|
||||
- Add support for macros of all macroable classes [\#1006 / domkrm](https://github.com/barryvdh/laravel-ide-helper/pull/1006)
|
||||
|
||||
2020-08-11, 2.8.0
|
||||
-----------------
|
||||
### Added
|
||||
- Add static return type to builder methods [\#924 / dmason30](https://github.com/barryvdh/laravel-ide-helper/pull/924)
|
||||
- Add `optonal` to meta generator for PhpStorm [\#932 / halaei](https://github.com/barryvdh/laravel-ide-helper/pull/932)
|
||||
- Decimal columns as string in Models [\#948 / fgibaux](https://github.com/barryvdh/laravel-ide-helper/pull/948)
|
||||
- Simplify full namespaces for already included resources [\#954 / LANGERGabriel](https://github.com/barryvdh/laravel-ide-helper/pull/954)
|
||||
- Make writing relation count properties optional [\#969 / AegirLeet](https://github.com/barryvdh/laravel-ide-helper/pull/969)
|
||||
- Add more methods able to resolve container instances [\#996 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/996)
|
||||
|
||||
### Fixed
|
||||
- Test `auth` is bound before detect Auth driver [\#946 / zhwei](https://github.com/barryvdh/laravel-ide-helper/pull/946)
|
||||
- Fix inline doc-block for final models [\#944 / Gummibeer](https://github.com/barryvdh/laravel-ide-helper/pull/955)
|
||||
|
||||
2020-04-22, 2.7.0
|
||||
-----------------
|
||||
### Added
|
||||
- Add `ignored_models` as config option [\#890 / pataar](https://github.com/barryvdh/laravel-ide-helper/pull/890)
|
||||
- Infer return type from reflection if no phpdoc given [\#906 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/906)
|
||||
- Add custom collection support for get and all methods [\#903 / dmason30](https://github.com/barryvdh/laravel-ide-helper/pull/903)
|
||||
- if a model implements interfaces, include them in the stub [\#920 / mr-feek](https://github.com/barryvdh/laravel-ide-helper/pull/920)
|
||||
- Generate noinspections PHPStorm tags [\#905 / mzglinski](https://github.com/barryvdh/laravel-ide-helper/pull/905)
|
||||
- Added support for Laravel 7 custom casts [\#913 / belamov](https://github.com/barryvdh/laravel-ide-helper/pull/913)
|
||||
- Ability to use patterns for model_locations [\#921 / 4n70w4](https://github.com/barryvdh/laravel-ide-helper/pull/921)
|
||||
|
||||
### Fixed
|
||||
- MorphToMany relations with query not working [\#894 / UksusoFF](https://github.com/barryvdh/laravel-ide-helper/pull/894)
|
||||
- Fix camelCase duplicated properties generator [\#881 / bop10](https://github.com/barryvdh/laravel-ide-helper/pull/881)
|
||||
- Prevent generation of invalid code for certain parameter default values [\#901 / loilo](https://github.com/barryvdh/laravel-ide-helper/pull/901)
|
||||
- Make hasOne and morphOne nullable [\#864 / leo108](https://github.com/barryvdh/laravel-ide-helper/pull/864)
|
||||
- Remove unnecessary and wrong definition of SoftDelete methods [\#918 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/918)
|
||||
- Unregister meta command custom autoloader when it is no longer needed [\#919 / mr-feek](https://github.com/barryvdh/laravel-ide-helper/pull/919)
|
||||
|
||||
2020-02-25, 2.6.7
|
||||
-----------------
|
||||
### Added
|
||||
- Support for Laravel 7 [commit by barryvdh](https://github.com/barryvdh/laravel-ide-helper/commit/edd69c5e0508972c81f1f7173236de2459c45814)
|
||||
|
||||
2019-12-02, 2.6.6
|
||||
-----------------
|
||||
### Added
|
||||
- Add splat operator (...) support [\#860 / ngmy](https://github.com/barryvdh/laravel-ide-helper/pull/860)
|
||||
- Add support for custom date class via Date::use() [\#859 / mfn](https://github.com/barryvdh/laravel-ide-helper/pull/859)
|
||||
|
||||
### Fixed
|
||||
- Prevent undefined property errors [\#877 / matt-allan](https://github.com/barryvdh/laravel-ide-helper/pull/877)
|
||||
|
||||
----
|
||||
Missing an older changelog? Feel free to submit a PR!
|
||||
@@ -39,7 +39,7 @@ If for some reason you want manually control this:
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"dont-discover": [
|
||||
"barryvdh/laravel-ide-helper",
|
||||
"barryvdh/laravel-ide-helper"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ If for some reason you want manually control this:
|
||||
```php
|
||||
public function register()
|
||||
{
|
||||
if ($this->app->environment() !== 'production') {
|
||||
if ($this->app->isLocal()) {
|
||||
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
|
||||
}
|
||||
// ...
|
||||
@@ -110,6 +110,18 @@ You can use an in-memory SQLite driver by adding the `-M` option.
|
||||
You can choose to include helper files. This is not enabled by default, but you can override it with the `--helpers (-H)` option.
|
||||
The `Illuminate/Support/helpers.php` is already set up, but you can add/remove your own files in the config file.
|
||||
|
||||
### Automatic PHPDoc generation for macros and mixins
|
||||
|
||||
This package can generate PHPDocs for macros and mixins which will be added to the `_ide_helper.php` file.
|
||||
|
||||
But this only works if you use type hinting when declaring a macro.
|
||||
|
||||
```php
|
||||
Str::macro('concat', function(string $str1, string $str2) : string {
|
||||
return $str1 . $str2;
|
||||
});
|
||||
```
|
||||
|
||||
### Automatic PHPDocs for models
|
||||
|
||||
If you don't want to write your properties yourself, you can use the command `php artisan ide-helper:models` to generate
|
||||
@@ -121,6 +133,10 @@ By default, you are asked to overwrite or write to a separate file (`_ide_helper
|
||||
You can write the comments directly to your Model file, using the `--write (-W)` option, or
|
||||
force to not write with `--nowrite (-N)`.
|
||||
|
||||
Alternatively using the `--write-mixin (-M)` option will only add a mixin tag to your Model file,
|
||||
writing the rest in (`_ide_helper_models.php`).
|
||||
The class name will be different from the model, avoiding the IDE duplicate annoyance.
|
||||
|
||||
> Please make sure to back up your models, before writing the info.
|
||||
|
||||
Writing to the models should keep the existing comments and only append new properties/methods.
|
||||
@@ -128,7 +144,7 @@ The existing PHPDoc is replaced, or added if not found.
|
||||
With the `--reset (-R)` option, the existing PHPDocs are ignored, and only the newly found columns/relations are saved as PHPDocs.
|
||||
|
||||
```bash
|
||||
php artisan ide-helper:models Post
|
||||
php artisan ide-helper:models "App\Models\Post"
|
||||
```
|
||||
|
||||
```php
|
||||
@@ -151,10 +167,18 @@ php artisan ide-helper:models Post
|
||||
*/
|
||||
```
|
||||
|
||||
With the `--write-mixin (-M)` option
|
||||
```php
|
||||
/**
|
||||
* …
|
||||
* @mixin IdeHelperPost
|
||||
*/
|
||||
```
|
||||
|
||||
By default, models in `app/models` are scanned. The optional argument tells what models to use (also outside app/models).
|
||||
|
||||
```bash
|
||||
php artisan ide-helper:models Post User
|
||||
php artisan ide-helper:models "App\Models\Post" "App\Models\User"
|
||||
```
|
||||
|
||||
You can also scan a different directory, using the `--dir` option (relative from the base path):
|
||||
@@ -168,20 +192,18 @@ You can publish the config file (`php artisan vendor:publish`) and set the defau
|
||||
Models can be ignored using the `--ignore (-I)` option
|
||||
|
||||
```bash
|
||||
php artisan ide-helper:models --ignore="Post,User"
|
||||
php artisan ide-helper:models --ignore="App\Models\Post,App\Models\User"
|
||||
```
|
||||
|
||||
Or can be ignored by setting the `ignored_models` config
|
||||
|
||||
```php
|
||||
'ignored_models' => [
|
||||
Post::class,
|
||||
App\Post::class,
|
||||
Api\User::class
|
||||
],
|
||||
```
|
||||
|
||||
> Note: With namespaces, wrap your model name in double-quotes (`"`): `php artisan ide-helper:models "API\User"`, or escape the slashes (`Api\\User`).
|
||||
|
||||
#### Magic `where*` methods
|
||||
|
||||
Eloquent allows calling `where<Attribute>` on your modes, e.g. `Post::whereTitle(…)` and automatically translates this to e.g. `Post::where('title', '=', '…')`.
|
||||
@@ -194,6 +216,13 @@ You may use the [`::withCount`](https://laravel.com/docs/master/eloquent-relatio
|
||||
|
||||
By default, these attributes are generated in the phpdoc. You can turn them off by setting the config `write_model_relation_count_properties` to `false`.
|
||||
|
||||
#### Dedicated Eloquent Builder methods
|
||||
|
||||
A new method to the eloquent models was added called `newEloquentBuilder` [Reference](https://timacdonald.me/dedicated-eloquent-model-query-builders/) where we can
|
||||
add support for creating a new dedicated class instead of using local scopes in the model itself.
|
||||
|
||||
If for some reason it's undesired to have them generated (one for each column), you can disable this via config `write_model_external_builder_methods` and setting it to `false`.
|
||||
|
||||
#### Unsupported or custom database types
|
||||
|
||||
Common column types (e.g. varchar, integer) are correctly mapped to PHP types (`string`, `int`).
|
||||
@@ -234,6 +263,7 @@ Then run `php artisan ide-helper:generate`, you will now see all Fluent methods
|
||||
|
||||
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.
|
||||
Deprecated for Laravel 8 or latest.
|
||||
|
||||
```php
|
||||
'include_factory_builders' => true,
|
||||
|
||||
+26
-14
@@ -21,22 +21,24 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.2",
|
||||
"ext-json": "*",
|
||||
"barryvdh/reflection-docblock": "^2.0.6",
|
||||
"composer/composer": "^1.6 || ^2.0@dev",
|
||||
"composer/composer": "^1.6 || ^2",
|
||||
"doctrine/dbal": "~2.3",
|
||||
"illuminate/console": "^5.5 || ^6 || ^7",
|
||||
"illuminate/filesystem": "^5.5 || ^6 || ^7",
|
||||
"illuminate/support": "^5.5 || ^6 || ^7",
|
||||
"illuminate/console": "^6 || ^7 || ^8",
|
||||
"illuminate/filesystem": "^6 || ^7 || ^8",
|
||||
"illuminate/support": "^6 || ^7 || ^8",
|
||||
"phpdocumentor/type-resolver": "^1.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"illuminate/config": "^5.5 || ^6 || ^7",
|
||||
"illuminate/view": "^5.5 || ^6 || ^7",
|
||||
"mockery/mockery": "^1.3",
|
||||
"orchestra/testbench": "^3.5 || ^4 || ^5",
|
||||
"phpro/grumphp": "^0.19.0",
|
||||
"spatie/phpunit-snapshot-assertions": "^1.4 || ^2.2 || ^3",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"ext-pdo_sqlite": "*",
|
||||
"friendsofphp/php-cs-fixer": "^2",
|
||||
"illuminate/config": "^6 || ^7 || ^8",
|
||||
"illuminate/view": "^6 || ^7 || ^8",
|
||||
"mockery/mockery": "^1.3.3",
|
||||
"orchestra/testbench": "^4 || ^5 || ^6",
|
||||
"phpunit/phpunit": "^8.5 || ^9",
|
||||
"spatie/phpunit-snapshot-assertions": "^1.4 || ^2.2 || ^3 || ^4",
|
||||
"vimeo/psalm": "^3.12"
|
||||
},
|
||||
"config": {
|
||||
@@ -44,7 +46,7 @@
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.7-dev"
|
||||
"dev-master": "2.8-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
@@ -62,11 +64,21 @@
|
||||
"Barryvdh\\LaravelIdeHelper\\Tests\\": "tests"
|
||||
}
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"scripts": {
|
||||
"analyze": "psalm",
|
||||
"check-style": "phpcs -p --standard=PSR12 config/ resources/ src/ tests/ '--ignore=*__snapshots_*'",
|
||||
"fix-style": "phpcbf -p --standard=PSR12 config/ resources/ src/ tests/ '--ignore=*__snapshots_*'",
|
||||
"check-style": [
|
||||
"php-cs-fixer fix --diff --diff-format=udiff --dry-run",
|
||||
"php-cs-fixer fix --diff --diff-format=udiff --dry-run --config=.php_cs.tests.php"
|
||||
],
|
||||
"fix-style": [
|
||||
"php-cs-fixer fix",
|
||||
"php-cs-fixer fix --config=.php_cs.tests.php"
|
||||
],
|
||||
"psalm-set-baseline": "psalm --set-baseline=psalm-baseline.xml",
|
||||
"test": "phpunit",
|
||||
"test-ci": "phpunit -d --without-creating-snapshots",
|
||||
"test-regenerate": "phpunit -d --update-snapshots"
|
||||
}
|
||||
}
|
||||
|
||||
+58
-22
@@ -1,18 +1,17 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Filename & Format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default filename (without extension) and the format (php or json)
|
||||
| The default filename
|
||||
|
|
||||
*/
|
||||
|
||||
'filename' => '_ide_helper',
|
||||
'format' => 'php',
|
||||
'filename' => '_ide_helper.php',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -45,6 +44,8 @@ return array(
|
||||
| Set to true to generate factory generators for better factory()
|
||||
| method auto-completion.
|
||||
|
|
||||
| Deprecated for Laravel 8 or latest.
|
||||
|
|
||||
*/
|
||||
|
||||
'include_factory_builders' => false,
|
||||
@@ -60,6 +61,17 @@ return array(
|
||||
|
||||
'write_model_magic_where' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Write Model External Eloquent Builder methods
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set to false to disable write external eloquent builder methods
|
||||
|
|
||||
*/
|
||||
|
||||
'write_model_external_builder_methods' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Write Model relation count properties
|
||||
@@ -98,9 +110,9 @@ return array(
|
||||
|
||||
'include_helpers' => false,
|
||||
|
||||
'helper_files' => array(
|
||||
'helper_files' => [
|
||||
base_path() . '/vendor/laravel/framework/src/Illuminate/Support/helpers.php',
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -115,9 +127,9 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'model_locations' => array(
|
||||
'model_locations' => [
|
||||
'app',
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -128,9 +140,9 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'ignored_models' => array(
|
||||
'ignored_models' => [
|
||||
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -141,12 +153,12 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'extra' => array(
|
||||
'Eloquent' => array('Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'),
|
||||
'Session' => array('Illuminate\Session\Store'),
|
||||
),
|
||||
'extra' => [
|
||||
'Eloquent' => ['Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'],
|
||||
'Session' => ['Illuminate\Session\Store'],
|
||||
],
|
||||
|
||||
'magic' => array(),
|
||||
'magic' => [],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -158,9 +170,9 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'interfaces' => array(
|
||||
'interfaces' => [
|
||||
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -188,9 +200,9 @@ return array(
|
||||
| ),
|
||||
|
|
||||
*/
|
||||
'custom_db_types' => array(
|
||||
'custom_db_types' => [
|
||||
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -226,10 +238,10 @@ return array(
|
||||
| Cast the given "real type" to the given "type".
|
||||
|
|
||||
*/
|
||||
'type_overrides' => array(
|
||||
'type_overrides' => [
|
||||
'integer' => 'int',
|
||||
'boolean' => 'bool',
|
||||
),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -242,4 +254,28 @@ return array(
|
||||
*/
|
||||
'include_class_docblocks' => false,
|
||||
|
||||
);
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Force FQN usage
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Use the fully qualified (class) name in docBlock,
|
||||
| event if class exists in a given file
|
||||
| or there is an import (use className) of a given class
|
||||
|
|
||||
*/
|
||||
'force_fqn' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Additional relation types
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Sometimes it's needed to create custom relation types. The key of the array
|
||||
| is the Relationship Method name. The value of the array is the canonical class
|
||||
| name of the Relationship, e.g. `'relationName' => RelationShipClass::class`.
|
||||
|
|
||||
*/
|
||||
'additional_relation_types' => [],
|
||||
|
||||
];
|
||||
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
grumphp:
|
||||
tasks:
|
||||
phpunit:
|
||||
script: test
|
||||
triggered_by: [php]
|
||||
metadata:
|
||||
task: composer_script
|
||||
phpcs:
|
||||
script: check-style
|
||||
triggered_by: [php]
|
||||
metadata:
|
||||
task: composer_script
|
||||
static analysis:
|
||||
script: analyze
|
||||
triggered_by: [php]
|
||||
metadata:
|
||||
task: composer_script
|
||||
+7
-5
@@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit bootstrap="vendor/autoload.php"
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
backupGlobals="false"
|
||||
backupStaticAttributes="false"
|
||||
colors="true"
|
||||
@@ -14,9 +16,9 @@
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<filter>
|
||||
<whitelist>
|
||||
<coverage>
|
||||
<include>
|
||||
<directory suffix=".php">src/</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</include>
|
||||
</coverage>
|
||||
</phpunit>
|
||||
|
||||
+13
-3
@@ -1,8 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<files psalm-version="3.12.0@d46283075d76ed244f7825b378eeb1cee246af73">
|
||||
<files psalm-version="3.15@de6e7f324f44dde540ebe7ebd4eb481b97c86f30">
|
||||
<file src="src/Factories.php">
|
||||
<UndefinedClass occurrences="2">
|
||||
<code>Factory</code>
|
||||
<code>Factory</code>
|
||||
</UndefinedClass>
|
||||
</file>
|
||||
<file src="src/Generator.php">
|
||||
<UndefinedClass occurrences="8">
|
||||
<code>'\Laravel\Lumen\Application'</code>
|
||||
<UndefinedClass occurrences="7">
|
||||
<code>\Auth</code>
|
||||
<code>\DB</code>
|
||||
<code>\Cache</code>
|
||||
@@ -12,4 +17,9 @@
|
||||
<code>\Storage</code>
|
||||
</UndefinedClass>
|
||||
</file>
|
||||
<file src="src/IdeHelperServiceProvider.php">
|
||||
<TooFewArguments occurrences="1">
|
||||
<code>new PhpEngine()</code>
|
||||
</TooFewArguments>
|
||||
</file>
|
||||
</files>
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($method->isInstanceCall()) :?>
|
||||
<?php if ($method->isInstanceCall()) : ?>
|
||||
/** @var <?=$method->getRoot()?> $instance */
|
||||
<?php endif?>
|
||||
<?= $method->shouldReturn() ? 'return ' : '' ?><?= $method->getRootMethodCall() ?>;
|
||||
@@ -58,7 +58,7 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($method->isInstanceCall()) :?>
|
||||
<?php if ($method->isInstanceCall()) : ?>
|
||||
/** @var <?=$method->getRoot()?> $instance */
|
||||
<?php endif?>
|
||||
<?= $method->shouldReturn() ? 'return ' : '' ?><?= $method->getRootMethodCall() ?>;
|
||||
|
||||
+38
-36
@@ -11,13 +11,14 @@
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
use Closure;
|
||||
use ReflectionClass;
|
||||
use Barryvdh\Reflection\DocBlock;
|
||||
use Barryvdh\Reflection\DocBlock\Context;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\MethodTag;
|
||||
use Illuminate\Config\Repository as ConfigRepository;
|
||||
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\MethodTag;
|
||||
use Closure;
|
||||
use Illuminate\Config\Repository as ConfigRepository;
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
use ReflectionClass;
|
||||
|
||||
class Alias
|
||||
{
|
||||
@@ -31,12 +32,12 @@ class Alias
|
||||
protected $short;
|
||||
protected $namespace = '__root';
|
||||
protected $root = null;
|
||||
protected $classes = array();
|
||||
protected $methods = array();
|
||||
protected $usedMethods = array();
|
||||
protected $classes = [];
|
||||
protected $methods = [];
|
||||
protected $usedMethods = [];
|
||||
protected $valid = false;
|
||||
protected $magicMethods = array();
|
||||
protected $interfaces = array();
|
||||
protected $magicMethods = [];
|
||||
protected $interfaces = [];
|
||||
protected $phpdoc = null;
|
||||
|
||||
/** @var ConfigRepository */
|
||||
@@ -50,7 +51,7 @@ class Alias
|
||||
* @param array $magicMethods
|
||||
* @param array $interfaces
|
||||
*/
|
||||
public function __construct($config, $alias, $facade, $magicMethods = array(), $interfaces = array())
|
||||
public function __construct($config, $alias, $facade, $magicMethods = [], $interfaces = [])
|
||||
{
|
||||
$this->alias = $alias;
|
||||
$this->magicMethods = $magicMethods;
|
||||
@@ -63,12 +64,12 @@ class Alias
|
||||
|
||||
$this->detectRoot();
|
||||
|
||||
if ((!$this->isTrait() && $this->root)) {
|
||||
$this->valid = true;
|
||||
} else {
|
||||
if (!$this->root || $this->isTrait()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->valid = true;
|
||||
|
||||
$this->addClass($this->root);
|
||||
$this->detectFake();
|
||||
$this->detectNamespace();
|
||||
@@ -82,7 +83,7 @@ class Alias
|
||||
|
||||
|
||||
if ($facade === '\Illuminate\Database\Eloquent\Model') {
|
||||
$this->usedMethods = array('decrement', 'increment');
|
||||
$this->usedMethods = ['decrement', 'increment'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,13 +202,17 @@ class Alias
|
||||
protected function detectFake()
|
||||
{
|
||||
$facade = $this->facade;
|
||||
|
||||
|
||||
if (!is_subclass_of($facade, Facade::class)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!method_exists($facade, 'fake')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$real = $facade::getFacadeRoot();
|
||||
|
||||
|
||||
try {
|
||||
$facade::fake();
|
||||
$fake = $facade::getFacadeRoot();
|
||||
@@ -289,12 +294,12 @@ class Alias
|
||||
//When the database connection is not set, some classes will be skipped
|
||||
} catch (\PDOException $e) {
|
||||
$this->error(
|
||||
"PDOException: " . $e->getMessage() .
|
||||
'PDOException: ' . $e->getMessage() .
|
||||
"\nPlease configure your database connection correctly, or use the sqlite memory driver (-M)." .
|
||||
" Skipping $facade."
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
$this->error("Exception: " . $e->getMessage() . "\nSkipping $facade.");
|
||||
$this->error('Exception: ' . $e->getMessage() . "\nSkipping $facade.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,10 +311,7 @@ class Alias
|
||||
protected function isTrait()
|
||||
{
|
||||
// Check if the facade is not a Trait
|
||||
if (function_exists('trait_exists') && trait_exists($this->facade)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return trait_exists($this->facade);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -416,22 +418,22 @@ class Alias
|
||||
{
|
||||
$serializer = new DocBlockSerializer(1, $prefix);
|
||||
|
||||
if ($this->phpdoc) {
|
||||
if ($this->config->get('ide-helper.include_class_docblocks')) {
|
||||
// if a class doesn't expose any DocBlock tags
|
||||
// we can perform reflection on the class and
|
||||
// add in the original class DocBlock
|
||||
if (count($this->phpdoc->getTags()) === 0) {
|
||||
$class = new ReflectionClass($this->root);
|
||||
$this->phpdoc = new DocBlock($class->getDocComment());
|
||||
}
|
||||
}
|
||||
|
||||
$this->removeDuplicateMethodsFromPhpDoc();
|
||||
return $serializer->getDocComment($this->phpdoc);
|
||||
if (!$this->phpdoc) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return '';
|
||||
if ($this->config->get('ide-helper.include_class_docblocks')) {
|
||||
// if a class doesn't expose any DocBlock tags
|
||||
// we can perform reflection on the class and
|
||||
// add in the original class DocBlock
|
||||
if (count($this->phpdoc->getTags()) === 0) {
|
||||
$class = new ReflectionClass($this->root);
|
||||
$this->phpdoc = new DocBlock($class->getDocComment());
|
||||
}
|
||||
}
|
||||
|
||||
$this->removeDuplicateMethodsFromPhpDoc();
|
||||
return $serializer->getDocComment($this->phpdoc);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,8 +15,8 @@ use Barryvdh\LaravelIdeHelper\Eloquent;
|
||||
use Barryvdh\LaravelIdeHelper\Generator;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
|
||||
/**
|
||||
* A command to generate autocomplete information for your IDE
|
||||
@@ -25,7 +25,6 @@ use Symfony\Component\Console\Input\InputArgument;
|
||||
*/
|
||||
class GeneratorCommand extends Command
|
||||
{
|
||||
|
||||
/**
|
||||
* The console command name.
|
||||
*
|
||||
@@ -59,7 +58,8 @@ class GeneratorCommand extends Command
|
||||
* @param \Illuminate\View\Factory $view
|
||||
*/
|
||||
public function __construct(
|
||||
/*ConfigRepository */ $config,
|
||||
/*ConfigRepository */
|
||||
$config,
|
||||
Filesystem $files,
|
||||
/* Illuminate\View\Factory */
|
||||
$view
|
||||
@@ -85,46 +85,45 @@ class GeneratorCommand extends Command
|
||||
$this->error(
|
||||
'Error generating IDE Helper: first delete your compiled file (php artisan clear-compiled)'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
$filename = $this->argument('filename');
|
||||
|
||||
// Add the php extension if missing
|
||||
// This is a backwards-compatible shim and can be removed in the future
|
||||
if (substr($filename, -4, 4) !== '.php') {
|
||||
$filename .= '.php';
|
||||
}
|
||||
|
||||
if ($this->option('memory')) {
|
||||
$this->useMemoryDriver();
|
||||
}
|
||||
|
||||
|
||||
$helpers = '';
|
||||
if ($this->option('helpers') || ($this->config->get('ide-helper.include_helpers'))) {
|
||||
foreach ($this->config->get('ide-helper.helper_files', []) as $helper) {
|
||||
if (file_exists($helper)) {
|
||||
$helpers .= str_replace(['<?php', '?>'], '', $this->files->get($helper));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$filename = $this->argument('filename');
|
||||
$format = $this->option('format');
|
||||
|
||||
// Strip the php extension
|
||||
if (substr($filename, -4, 4) == '.php') {
|
||||
$filename = substr($filename, 0, -4);
|
||||
}
|
||||
|
||||
$filename .= '.' . $format;
|
||||
|
||||
if ($this->option('memory')) {
|
||||
$this->useMemoryDriver();
|
||||
}
|
||||
|
||||
|
||||
$helpers = '';
|
||||
if ($this->option('helpers') || ($this->config->get('ide-helper.include_helpers'))) {
|
||||
foreach ($this->config->get('ide-helper.helper_files', array()) as $helper) {
|
||||
if (file_exists($helper)) {
|
||||
$helpers .= str_replace(array('<?php', '?>'), '', $this->files->get($helper));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$helpers = '';
|
||||
}
|
||||
}
|
||||
|
||||
$generator = new Generator($this->config, $this->view, $this->getOutput(), $helpers);
|
||||
$content = $generator->generate($format);
|
||||
$written = $this->files->put($filename, $content);
|
||||
$generator = new Generator($this->config, $this->view, $this->getOutput(), $helpers);
|
||||
$content = $generator->generate();
|
||||
$written = $this->files->put($filename, $content);
|
||||
|
||||
if ($written !== false) {
|
||||
$this->info("A new helper file was written to $filename");
|
||||
if ($written !== false) {
|
||||
$this->info("A new helper file was written to $filename");
|
||||
|
||||
if ($this->option('write_mixins')) {
|
||||
Eloquent::writeEloquentModelHelper($this, $this->files);
|
||||
}
|
||||
} else {
|
||||
$this->error("The helper file could not be created at $filename");
|
||||
if ($this->option('write_mixins')) {
|
||||
Eloquent::writeEloquentModelHelper($this, $this->files);
|
||||
}
|
||||
} else {
|
||||
$this->error("The helper file could not be created at $filename");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,10 +132,10 @@ class GeneratorCommand extends Command
|
||||
//Use a sqlite database in memory, to avoid connection errors on Database facades
|
||||
$this->config->set(
|
||||
'database.connections.sqlite',
|
||||
array(
|
||||
[
|
||||
'driver' => 'sqlite',
|
||||
'database' => ':memory:',
|
||||
)
|
||||
]
|
||||
);
|
||||
$this->config->set('database.default', 'sqlite');
|
||||
}
|
||||
@@ -150,11 +149,11 @@ class GeneratorCommand extends Command
|
||||
{
|
||||
$filename = $this->config->get('ide-helper.filename');
|
||||
|
||||
return array(
|
||||
array(
|
||||
'filename', InputArgument::OPTIONAL, 'The path to the helper file', $filename
|
||||
),
|
||||
);
|
||||
return [
|
||||
[
|
||||
'filename', InputArgument::OPTIONAL, 'The path to the helper file', $filename,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -164,14 +163,12 @@ class GeneratorCommand extends Command
|
||||
*/
|
||||
protected function getOptions()
|
||||
{
|
||||
$format = $this->config->get('ide-helper.format');
|
||||
$writeMixins = $this->config->get('ide-helper.write_eloquent_model_mixins');
|
||||
|
||||
return array(
|
||||
array('format', "F", InputOption::VALUE_OPTIONAL, 'The format for the IDE Helper', $format),
|
||||
array('write_mixins', "W", InputOption::VALUE_OPTIONAL, 'Write mixins to Laravel Model?', $writeMixins),
|
||||
array('helpers', "H", InputOption::VALUE_NONE, 'Include the helper files'),
|
||||
array('memory', "M", InputOption::VALUE_NONE, 'Use sqlite memory driver'),
|
||||
);
|
||||
return [
|
||||
['write_mixins', 'W', InputOption::VALUE_OPTIONAL, 'Write mixins to Laravel Model?', $writeMixins],
|
||||
['helpers', 'H', InputOption::VALUE_NONE, 'Include the helper files'],
|
||||
['memory', 'M', InputOption::VALUE_NONE, 'Use sqlite memory driver'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||
*/
|
||||
class MetaCommand extends Command
|
||||
{
|
||||
|
||||
/**
|
||||
* The console command name.
|
||||
*
|
||||
@@ -58,7 +57,7 @@ class MetaCommand extends Command
|
||||
'\App::makeWith(0)',
|
||||
'\app(0)',
|
||||
'\resolve(0)',
|
||||
'\Psr\Container\ContainerInterface::get',
|
||||
'\Psr\Container\ContainerInterface::get(0)',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -87,7 +86,7 @@ class MetaCommand extends Command
|
||||
|
||||
$this->registerClassAutoloadExceptions();
|
||||
|
||||
$bindings = array();
|
||||
$bindings = [];
|
||||
foreach ($this->getAbstracts() as $abstract) {
|
||||
// Validator and seeder cause problems
|
||||
if (in_array($abstract, ['validator', 'seeder'])) {
|
||||
@@ -161,9 +160,9 @@ class MetaCommand extends Command
|
||||
{
|
||||
$filename = $this->config->get('ide-helper.meta_filename');
|
||||
|
||||
return array(
|
||||
array('filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the meta file', $filename),
|
||||
);
|
||||
return [
|
||||
['filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the meta file', $filename],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+341
-167
@@ -19,6 +19,16 @@ use Composer\Autoload\ClassMapGenerator;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
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\HasManyThrough;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOneThrough;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -28,6 +38,7 @@ use ReflectionObject;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* A command to generate autocomplete information for your IDE
|
||||
@@ -36,6 +47,20 @@ use Symfony\Component\Console\Output\OutputInterface;
|
||||
*/
|
||||
class ModelsCommand extends Command
|
||||
{
|
||||
protected const RELATION_TYPES = [
|
||||
'hasMany' => HasMany::class,
|
||||
'hasManyThrough' => HasManyThrough::class,
|
||||
'hasOneThrough' => HasOneThrough::class,
|
||||
'belongsToMany' => BelongsToMany::class,
|
||||
'hasOne' => HasOne::class,
|
||||
'belongsTo' => BelongsTo::class,
|
||||
'morphOne' => MorphOne::class,
|
||||
'morphTo' => MorphTo::class,
|
||||
'morphMany' => MorphMany::class,
|
||||
'morphToMany' => MorphToMany::class,
|
||||
'morphedByMany' => MorphToMany::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var Filesystem $files
|
||||
*/
|
||||
@@ -58,20 +83,22 @@ class ModelsCommand extends Command
|
||||
|
||||
protected $write_model_magic_where;
|
||||
protected $write_model_relation_count_properties;
|
||||
protected $properties = array();
|
||||
protected $methods = array();
|
||||
protected $properties = [];
|
||||
protected $methods = [];
|
||||
protected $write = false;
|
||||
protected $dirs = array();
|
||||
protected $write_mixin = false;
|
||||
protected $dirs = [];
|
||||
protected $reset;
|
||||
protected $keep_text;
|
||||
protected $phpstorm_noinspections;
|
||||
protected $write_model_external_builder_methods;
|
||||
/**
|
||||
* @var bool[string]
|
||||
*/
|
||||
protected $nullableColumns = [];
|
||||
|
||||
/**
|
||||
* During initializtion we use Laravels Date Facade to
|
||||
* During initialization we use Laravels Date Facade to
|
||||
* determine the actual date class and store it here.
|
||||
*
|
||||
* @var string
|
||||
@@ -96,8 +123,9 @@ class ModelsCommand extends Command
|
||||
{
|
||||
$filename = $this->option('filename');
|
||||
$this->write = $this->option('write');
|
||||
$this->write_mixin = $this->option('write-mixin');
|
||||
$this->dirs = array_merge(
|
||||
$this->laravel['config']->get('ide-helper.model_locations'),
|
||||
$this->laravel['config']->get('ide-helper.model_locations', []),
|
||||
$this->option('dir')
|
||||
);
|
||||
$model = $this->argument('model');
|
||||
@@ -108,9 +136,11 @@ class ModelsCommand extends Command
|
||||
$this->keep_text = $this->reset = true;
|
||||
}
|
||||
$this->write_model_magic_where = $this->laravel['config']->get('ide-helper.write_model_magic_where', true);
|
||||
$this->write_model_external_builder_methods = $this->laravel['config']->get('ide-helper.write_model_external_builder_methods', true);
|
||||
$this->write_model_relation_count_properties =
|
||||
$this->laravel['config']->get('ide-helper.write_model_relation_count_properties', true);
|
||||
|
||||
$this->write = $this->write_mixin ? true : $this->write;
|
||||
//If filename is default and Write is not specified, ask what to do
|
||||
if (!$this->write && $filename === $this->filename && !$this->option('nowrite')) {
|
||||
if (
|
||||
@@ -128,7 +158,7 @@ class ModelsCommand extends Command
|
||||
|
||||
$content = $this->generateDocs($model, $ignore);
|
||||
|
||||
if (!$this->write) {
|
||||
if (!$this->write || $this->write_mixin) {
|
||||
$written = $this->files->put($filename, $content);
|
||||
if ($written !== false) {
|
||||
$this->info("Model information was written to $filename");
|
||||
@@ -146,9 +176,9 @@ class ModelsCommand extends Command
|
||||
*/
|
||||
protected function getArguments()
|
||||
{
|
||||
return array(
|
||||
array('model', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Which models to include', array()),
|
||||
);
|
||||
return [
|
||||
['model', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Which models to include', []],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -158,20 +188,23 @@ class ModelsCommand extends Command
|
||||
*/
|
||||
protected function getOptions()
|
||||
{
|
||||
return array(
|
||||
array('filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the helper file', $this->filename),
|
||||
array('dir', 'D', InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
|
||||
'The model dir, supports glob patterns', array()),
|
||||
array('write', 'W', InputOption::VALUE_NONE, 'Write to Model file'),
|
||||
array('nowrite', 'N', InputOption::VALUE_NONE, 'Don\'t write to Model file'),
|
||||
array('reset', 'R', InputOption::VALUE_NONE, 'Remove the original phpdocs instead of appending'),
|
||||
array('smart-reset', 'r', InputOption::VALUE_NONE, 'Refresh the properties/methods list, but keep the text'),
|
||||
array('phpstorm-noinspections', 'p', InputOption::VALUE_NONE,
|
||||
return [
|
||||
['filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the helper file', $this->filename],
|
||||
['dir', 'D', InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
|
||||
'The model dir, supports glob patterns', [], ],
|
||||
['write', 'W', InputOption::VALUE_NONE, 'Write to Model file'],
|
||||
['write-mixin', 'M', InputOption::VALUE_NONE,
|
||||
"Write models to {$this->filename} and adds @mixin to each model, avoiding IDE duplicate declaration warnings",
|
||||
],
|
||||
['nowrite', 'N', InputOption::VALUE_NONE, 'Don\'t write to Model file'],
|
||||
['reset', 'R', InputOption::VALUE_NONE, 'Remove the original phpdocs instead of appending'],
|
||||
['smart-reset', 'r', InputOption::VALUE_NONE, 'Refresh the properties/methods list, but keep the text'],
|
||||
['phpstorm-noinspections', 'p', InputOption::VALUE_NONE,
|
||||
'Add PhpFullyQualifiedNameUsageInspection and PhpUnnecessaryFullyQualifiedNameInspection PHPStorm ' .
|
||||
'noinspection tags'
|
||||
),
|
||||
array('ignore', 'I', InputOption::VALUE_OPTIONAL, 'Which models to ignore', ''),
|
||||
);
|
||||
'noinspection tags',
|
||||
],
|
||||
['ignore', 'I', InputOption::VALUE_OPTIONAL, 'Which models to ignore', ''],
|
||||
];
|
||||
}
|
||||
|
||||
protected function generateDocs($loadModels, $ignore = '')
|
||||
@@ -195,7 +228,7 @@ class ModelsCommand extends Command
|
||||
if (empty($loadModels)) {
|
||||
$models = $this->loadModels();
|
||||
} else {
|
||||
$models = array();
|
||||
$models = [];
|
||||
foreach ($loadModels as $model) {
|
||||
$models = array_merge($models, explode(',', $model));
|
||||
}
|
||||
@@ -203,7 +236,7 @@ class ModelsCommand extends Command
|
||||
|
||||
$ignore = array_merge(
|
||||
explode(',', $ignore),
|
||||
$this->laravel['config']->get('ide-helper.ignored_models', array())
|
||||
$this->laravel['config']->get('ide-helper.ignored_models', [])
|
||||
);
|
||||
|
||||
foreach ($models as $name) {
|
||||
@@ -213,8 +246,8 @@ class ModelsCommand extends Command
|
||||
}
|
||||
continue;
|
||||
}
|
||||
$this->properties = array();
|
||||
$this->methods = array();
|
||||
$this->properties = [];
|
||||
$this->methods = [];
|
||||
if (class_exists($name)) {
|
||||
try {
|
||||
// handle abstract classes, interfaces, ...
|
||||
@@ -224,9 +257,7 @@ class ModelsCommand extends Command
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
|
||||
$this->comment("Loading model '$name'");
|
||||
}
|
||||
$this->comment("Loading model '$name'", OutputInterface::VERBOSITY_VERBOSE);
|
||||
|
||||
if (!$reflectionClass->IsInstantiable()) {
|
||||
// ignore abstract class or interface
|
||||
@@ -249,8 +280,8 @@ class ModelsCommand extends Command
|
||||
$output .= $this->createPhpDocs($name);
|
||||
$ignore[] = $name;
|
||||
$this->nullableColumns = [];
|
||||
} catch (\Throwable $e) {
|
||||
$this->error("Exception: " . $e->getMessage() .
|
||||
} catch (Throwable $e) {
|
||||
$this->error('Exception: ' . $e->getMessage() .
|
||||
"\nCould not analyze class $name.\n\nTrace:\n" .
|
||||
$e->getTraceAsString());
|
||||
}
|
||||
@@ -270,11 +301,20 @@ class ModelsCommand extends Command
|
||||
|
||||
protected function loadModels()
|
||||
{
|
||||
$models = array();
|
||||
$models = [];
|
||||
foreach ($this->dirs as $dir) {
|
||||
$dir = base_path() . '/' . $dir;
|
||||
if (is_dir(base_path($dir))) {
|
||||
$dir = base_path($dir);
|
||||
}
|
||||
|
||||
$dirs = glob($dir, GLOB_ONLYDIR);
|
||||
foreach ($dirs as $dir) {
|
||||
|
||||
if (!is_dir($dir)) {
|
||||
$this->error("Cannot locate directory '{'$dir}'");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file_exists($dir)) {
|
||||
$classMap = ClassMapGenerator::createMap($dir);
|
||||
|
||||
@@ -332,35 +372,38 @@ class ModelsCommand extends Command
|
||||
$realType = '\Illuminate\Support\Collection';
|
||||
break;
|
||||
default:
|
||||
// In case of an optional custom cast parameter , only evaluate
|
||||
// the `$type` until the `:`
|
||||
$type = strtok($type, ':');
|
||||
$realType = class_exists($type) ? ('\\' . $type) : 'mixed';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isset($this->properties[$name])) {
|
||||
continue;
|
||||
} else {
|
||||
$realType = $this->checkForCustomLaravelCasts($realType);
|
||||
$realType = $this->getTypeOverride($realType);
|
||||
$this->properties[$name]['type'] = $this->getTypeInModel($model, $realType);
|
||||
}
|
||||
|
||||
if (isset($this->nullableColumns[$name])) {
|
||||
$this->properties[$name]['type'] .= '|null';
|
||||
}
|
||||
$realType = $this->checkForCustomLaravelCasts($realType);
|
||||
$realType = $this->getTypeOverride($realType);
|
||||
$this->properties[$name]['type'] = $this->getTypeInModel($model, $realType);
|
||||
|
||||
if (isset($this->nullableColumns[$name])) {
|
||||
$this->properties[$name]['type'] .= '|null';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the overide type for the give type.
|
||||
* Returns the override type for the give type.
|
||||
*
|
||||
* @param string $type
|
||||
* @return string|null
|
||||
*/
|
||||
protected function getTypeOverride($type)
|
||||
{
|
||||
$typeOverrides = $this->laravel['config']->get('ide-helper.type_overrides', array());
|
||||
$typeOverrides = $this->laravel['config']->get('ide-helper.type_overrides', []);
|
||||
|
||||
return isset($typeOverrides[$type]) ? $typeOverrides[$type] : $type;
|
||||
return $typeOverrides[$type] ?? $type;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -371,87 +414,93 @@ class ModelsCommand extends Command
|
||||
protected function getPropertiesFromTable($model)
|
||||
{
|
||||
$table = $model->getConnection()->getTablePrefix() . $model->getTable();
|
||||
$schema = $model->getConnection()->getDoctrineSchemaManager($table);
|
||||
$schema = $model->getConnection()->getDoctrineSchemaManager();
|
||||
$databasePlatform = $schema->getDatabasePlatform();
|
||||
$databasePlatform->registerDoctrineTypeMapping('enum', 'string');
|
||||
|
||||
$platformName = $databasePlatform->getName();
|
||||
$customTypes = $this->laravel['config']->get("ide-helper.custom_db_types.{$platformName}", array());
|
||||
$customTypes = $this->laravel['config']->get("ide-helper.custom_db_types.{$platformName}", []);
|
||||
foreach ($customTypes as $yourTypeName => $doctrineTypeName) {
|
||||
$databasePlatform->registerDoctrineTypeMapping($yourTypeName, $doctrineTypeName);
|
||||
}
|
||||
|
||||
$database = null;
|
||||
if (strpos($table, '.')) {
|
||||
list($database, $table) = explode('.', $table);
|
||||
[$database, $table] = explode('.', $table);
|
||||
}
|
||||
|
||||
$columns = $schema->listTableColumns($table, $database);
|
||||
|
||||
if ($columns) {
|
||||
foreach ($columns as $column) {
|
||||
$name = $column->getName();
|
||||
if (in_array($name, $model->getDates())) {
|
||||
$type = $this->dateClass;
|
||||
} else {
|
||||
$type = $column->getType()->getName();
|
||||
switch ($type) {
|
||||
case 'string':
|
||||
case 'text':
|
||||
case 'date':
|
||||
case 'time':
|
||||
case 'guid':
|
||||
case 'datetimetz':
|
||||
case 'datetime':
|
||||
case 'decimal':
|
||||
$type = 'string';
|
||||
break;
|
||||
case 'integer':
|
||||
case 'bigint':
|
||||
case 'smallint':
|
||||
$type = 'integer';
|
||||
break;
|
||||
case 'boolean':
|
||||
switch (config('database.default')) {
|
||||
case 'sqlite':
|
||||
case 'mysql':
|
||||
$type = 'integer';
|
||||
break;
|
||||
default:
|
||||
$type = 'boolean';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'float':
|
||||
$type = 'float';
|
||||
break;
|
||||
default:
|
||||
$type = 'mixed';
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$columns) {
|
||||
return;
|
||||
}
|
||||
|
||||
$comment = $column->getComment();
|
||||
if (!$column->getNotnull()) {
|
||||
$this->nullableColumns[$name] = true;
|
||||
foreach ($columns as $column) {
|
||||
$name = $column->getName();
|
||||
if (in_array($name, $model->getDates())) {
|
||||
$type = $this->dateClass;
|
||||
} else {
|
||||
$type = $column->getType()->getName();
|
||||
switch ($type) {
|
||||
case 'string':
|
||||
case 'text':
|
||||
case 'date':
|
||||
case 'time':
|
||||
case 'guid':
|
||||
case 'datetimetz':
|
||||
case 'datetime':
|
||||
case 'decimal':
|
||||
$type = 'string';
|
||||
break;
|
||||
case 'integer':
|
||||
case 'bigint':
|
||||
case 'smallint':
|
||||
$type = 'integer';
|
||||
break;
|
||||
case 'boolean':
|
||||
switch (config('database.default')) {
|
||||
case 'sqlite':
|
||||
case 'mysql':
|
||||
$type = 'integer';
|
||||
break;
|
||||
default:
|
||||
$type = 'boolean';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'float':
|
||||
$type = 'float';
|
||||
break;
|
||||
default:
|
||||
$type = 'mixed';
|
||||
break;
|
||||
}
|
||||
$this->setProperty(
|
||||
$name,
|
||||
$this->getTypeInModel($model, $type),
|
||||
true,
|
||||
true,
|
||||
$comment,
|
||||
!$column->getNotnull()
|
||||
}
|
||||
|
||||
$comment = $column->getComment();
|
||||
if (!$column->getNotnull()) {
|
||||
$this->nullableColumns[$name] = true;
|
||||
}
|
||||
$this->setProperty(
|
||||
$name,
|
||||
$this->getTypeInModel($model, $type),
|
||||
true,
|
||||
true,
|
||||
$comment,
|
||||
!$column->getNotnull()
|
||||
);
|
||||
if ($this->write_model_magic_where) {
|
||||
$builderClass = $this->write_model_external_builder_methods
|
||||
? get_class($model->newModelQuery())
|
||||
: '\Illuminate\Database\Eloquent\Builder';
|
||||
|
||||
$this->setMethod(
|
||||
Str::camel('where_' . $name),
|
||||
$this->getClassNameInDestinationFile($model, $builderClass)
|
||||
. '|'
|
||||
. $this->getClassNameInDestinationFile($model, get_class($model)),
|
||||
['$value']
|
||||
);
|
||||
if ($this->write_model_magic_where) {
|
||||
$this->setMethod(
|
||||
Str::camel("where_" . $name),
|
||||
$this->getClassNameInDestinationFile($model, \Illuminate\Database\Eloquent\Builder::class)
|
||||
. '|'
|
||||
. $this->getClassNameInDestinationFile($model, get_class($model)),
|
||||
array('$value')
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -500,7 +549,7 @@ class ModelsCommand extends Command
|
||||
array_shift($args);
|
||||
$builder = $this->getClassNameInDestinationFile(
|
||||
$reflection->getDeclaringClass(),
|
||||
\Illuminate\Database\Eloquent\Builder::class
|
||||
get_class($model->newModelQuery())
|
||||
);
|
||||
$modelName = $this->getClassNameInDestinationFile(
|
||||
$reflection->getDeclaringClass(),
|
||||
@@ -513,8 +562,12 @@ class ModelsCommand extends Command
|
||||
|
||||
$this->setMethod(
|
||||
$method,
|
||||
$builder . "|" . $this->getClassNameInDestinationFile($model, get_class($model))
|
||||
$builder . '|' . $this->getClassNameInDestinationFile($model, get_class($model))
|
||||
);
|
||||
|
||||
if ($this->write_model_external_builder_methods) {
|
||||
$this->writeModelExternalBuilderMethods($model);
|
||||
}
|
||||
} elseif (
|
||||
!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
||||
&& !Str::startsWith($method, 'get')
|
||||
@@ -544,19 +597,7 @@ class ModelsCommand extends Command
|
||||
$code = substr($code, $begin, strrpos($code, '}') - $begin + 1);
|
||||
|
||||
foreach (
|
||||
array(
|
||||
'hasMany' => '\Illuminate\Database\Eloquent\Relations\HasMany',
|
||||
'hasManyThrough' => '\Illuminate\Database\Eloquent\Relations\HasManyThrough',
|
||||
'hasOneThrough' => '\Illuminate\Database\Eloquent\Relations\HasOneThrough',
|
||||
'belongsToMany' => '\Illuminate\Database\Eloquent\Relations\BelongsToMany',
|
||||
'hasOne' => '\Illuminate\Database\Eloquent\Relations\HasOne',
|
||||
'belongsTo' => '\Illuminate\Database\Eloquent\Relations\BelongsTo',
|
||||
'morphOne' => '\Illuminate\Database\Eloquent\Relations\MorphOne',
|
||||
'morphTo' => '\Illuminate\Database\Eloquent\Relations\MorphTo',
|
||||
'morphMany' => '\Illuminate\Database\Eloquent\Relations\MorphMany',
|
||||
'morphToMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany',
|
||||
'morphedByMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany'
|
||||
) as $relation => $impl
|
||||
$this->getRelationTypes() as $relation => $impl
|
||||
) {
|
||||
$search = '$this->' . $relation . '(';
|
||||
if (stripos($code, $search) || ltrim($impl, '\\') === ltrim((string)$type, '\\')) {
|
||||
@@ -570,7 +611,13 @@ class ModelsCommand extends Command
|
||||
// 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();
|
||||
try {
|
||||
return $model->$method();
|
||||
} catch (Throwable $e) {
|
||||
$this->warn(sprintf('Error resolving relation model of %s:%s() : %s', get_class($model), $method, $e->getMessage()));
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
if ($relationObj instanceof Relation) {
|
||||
@@ -579,14 +626,6 @@ class ModelsCommand extends Command
|
||||
get_class($relationObj->getRelated())
|
||||
);
|
||||
|
||||
$relations = [
|
||||
'hasManyThrough',
|
||||
'belongsToMany',
|
||||
'hasMany',
|
||||
'morphMany',
|
||||
'morphToMany',
|
||||
'morphedByMany',
|
||||
];
|
||||
if (strpos(get_class($relationObj), 'Many') !== false) {
|
||||
//Collection or array of models (because Collection is Arrayable)
|
||||
$relatedClass = '\\' . get_class($relationObj->getRelated());
|
||||
@@ -609,7 +648,7 @@ class ModelsCommand extends Command
|
||||
false
|
||||
);
|
||||
}
|
||||
} elseif ($relation === "morphTo") {
|
||||
} elseif ($relation === 'morphTo') {
|
||||
// Model isn't specified because relation is polymorphic
|
||||
$this->setProperty(
|
||||
$method,
|
||||
@@ -676,7 +715,7 @@ class ModelsCommand extends Command
|
||||
protected function setProperty($name, $type = null, $read = null, $write = null, $comment = '', $nullable = false)
|
||||
{
|
||||
if (!isset($this->properties[$name])) {
|
||||
$this->properties[$name] = array();
|
||||
$this->properties[$name] = [];
|
||||
$this->properties[$name]['type'] = 'mixed';
|
||||
$this->properties[$name]['read'] = false;
|
||||
$this->properties[$name]['write'] = false;
|
||||
@@ -697,12 +736,12 @@ class ModelsCommand extends Command
|
||||
}
|
||||
}
|
||||
|
||||
protected function setMethod($name, $type = '', $arguments = array())
|
||||
protected function setMethod($name, $type = '', $arguments = [])
|
||||
{
|
||||
$methods = array_change_key_case($this->methods, CASE_LOWER);
|
||||
|
||||
if (!isset($methods[strtolower($name)])) {
|
||||
$this->methods[$name] = array();
|
||||
$this->methods[$name] = [];
|
||||
$this->methods[$name]['type'] = $type;
|
||||
$this->methods[$name]['arguments'] = $arguments;
|
||||
}
|
||||
@@ -740,13 +779,13 @@ class ModelsCommand extends Command
|
||||
$phpdoc->setText($class);
|
||||
}
|
||||
|
||||
$properties = array();
|
||||
$methods = array();
|
||||
$properties = [];
|
||||
$methods = [];
|
||||
foreach ($phpdoc->getTags() as $tag) {
|
||||
$name = $tag->getName();
|
||||
if ($name == "property" || $name == "property-read" || $name == "property-write") {
|
||||
if ($name == 'property' || $name == 'property-read' || $name == 'property-write') {
|
||||
$properties[] = $tag->getVariableName();
|
||||
} elseif ($name == "method") {
|
||||
} elseif ($name == 'method') {
|
||||
$methods[] = $tag->getMethodName();
|
||||
}
|
||||
}
|
||||
@@ -785,37 +824,54 @@ class ModelsCommand extends Command
|
||||
$phpdoc->appendTag($tag);
|
||||
}
|
||||
|
||||
if ($this->write && ! $phpdoc->getTagsByName('mixin')) {
|
||||
if ($this->write && !$phpdoc->getTagsByName('mixin')) {
|
||||
$eloquentClassNameInModel = $this->getClassNameInDestinationFile($reflection, 'Eloquent');
|
||||
$phpdoc->appendTag(Tag::createInstance("@mixin " . $eloquentClassNameInModel, $phpdoc));
|
||||
$phpdoc->appendTag(Tag::createInstance('@mixin ' . $eloquentClassNameInModel, $phpdoc));
|
||||
}
|
||||
if ($this->phpstorm_noinspections) {
|
||||
/**
|
||||
* Facades, Eloquent API
|
||||
* @see https://www.jetbrains.com/help/phpstorm/php-fully-qualified-name-usage.html
|
||||
*/
|
||||
$phpdoc->appendTag(Tag::createInstance("@noinspection PhpFullyQualifiedNameUsageInspection", $phpdoc));
|
||||
$phpdoc->appendTag(Tag::createInstance('@noinspection PhpFullyQualifiedNameUsageInspection', $phpdoc));
|
||||
/**
|
||||
* Relations, other models in the same namespace
|
||||
* @see https://www.jetbrains.com/help/phpstorm/php-unnecessary-fully-qualified-name.html
|
||||
*/
|
||||
$phpdoc->appendTag(
|
||||
Tag::createInstance("@noinspection PhpUnnecessaryFullyQualifiedNameInspection", $phpdoc)
|
||||
Tag::createInstance('@noinspection PhpUnnecessaryFullyQualifiedNameInspection', $phpdoc)
|
||||
);
|
||||
}
|
||||
|
||||
$serializer = new DocBlockSerializer();
|
||||
$serializer->getDocComment($phpdoc);
|
||||
$docComment = $serializer->getDocComment($phpdoc);
|
||||
|
||||
if ($this->write_mixin) {
|
||||
$phpdocMixin = new DocBlock($reflection, new Context($namespace));
|
||||
// remove all mixin tags prefixed with IdeHelper
|
||||
foreach ($phpdocMixin->getTagsByName('mixin') as $tag) {
|
||||
if (Str::startsWith($tag->getContent(), 'IdeHelper')) {
|
||||
$phpdocMixin->deleteTag($tag);
|
||||
}
|
||||
}
|
||||
|
||||
$mixinClassName = "IdeHelper{$classname}";
|
||||
$phpdocMixin->appendTag(Tag::createInstance("@mixin {$mixinClassName}", $phpdocMixin));
|
||||
$mixinDocComment = $serializer->getDocComment($phpdocMixin);
|
||||
// remove blank lines if there's no text
|
||||
if (!$phpdocMixin->getText()) {
|
||||
$mixinDocComment = preg_replace("/\s\*\s*\n/", '', $mixinDocComment);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->write) {
|
||||
$modelDocComment = $this->write_mixin ? $mixinDocComment : $docComment;
|
||||
$filename = $reflection->getFileName();
|
||||
$contents = $this->files->get($filename);
|
||||
if ($originalDoc) {
|
||||
$contents = str_replace($originalDoc, $docComment, $contents);
|
||||
$contents = str_replace($originalDoc, $modelDocComment, $contents);
|
||||
} else {
|
||||
$replace = "{$docComment}\n";
|
||||
$replace = "{$modelDocComment}\n";
|
||||
$pos = strpos($contents, "final class {$classname}") ?: strpos($contents, "class {$classname}");
|
||||
if ($pos !== false) {
|
||||
$contents = substr_replace($contents, $replace, $pos, 0);
|
||||
@@ -826,6 +882,7 @@ class ModelsCommand extends Command
|
||||
}
|
||||
}
|
||||
|
||||
$classname = $this->write_mixin ? $mixinClassName : $classname;
|
||||
$output = "namespace {$namespace}{\n{$docComment}\n\t{$keyword}class {$classname} extends \Eloquent ";
|
||||
|
||||
if ($interfaceNames) {
|
||||
@@ -841,17 +898,19 @@ class ModelsCommand extends Command
|
||||
*
|
||||
* @param $method
|
||||
* @return array
|
||||
* @throws \ReflectionException
|
||||
*/
|
||||
public function getParameters($method)
|
||||
{
|
||||
//Loop through the default values for paremeters, and make the correct output string
|
||||
$params = array();
|
||||
$paramsWithDefault = array();
|
||||
//Loop through the default values for parameters, and make the correct output string
|
||||
$paramsWithDefault = [];
|
||||
/** @var \ReflectionParameter $param */
|
||||
foreach ($method->getParameters() as $param) {
|
||||
$paramClass = $param->getClass();
|
||||
$paramStr = (!is_null($paramClass) ? '\\' . $paramClass->getName() . ' ' : '') . '$' . $param->getName();
|
||||
$params[] = $paramStr;
|
||||
$paramStr = '$' . $param->getName();
|
||||
if ($paramType = $this->getParamType($method, $param)) {
|
||||
$paramStr = $paramType . ' ' . $paramStr;
|
||||
}
|
||||
|
||||
if ($param->isOptional() && $param->isDefaultValueAvailable()) {
|
||||
$default = $param->getDefaultValue();
|
||||
if (is_bool($default)) {
|
||||
@@ -865,8 +924,10 @@ class ModelsCommand extends Command
|
||||
} else {
|
||||
$default = "'" . trim($default) . "'";
|
||||
}
|
||||
|
||||
$paramStr .= " = $default";
|
||||
}
|
||||
|
||||
$paramsWithDefault[] = $paramStr;
|
||||
}
|
||||
return $paramsWithDefault;
|
||||
@@ -892,6 +953,15 @@ class ModelsCommand extends Command
|
||||
return '\\' . get_class($model->newCollection());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the available relation types
|
||||
*/
|
||||
protected function getRelationTypes(): array
|
||||
{
|
||||
$configuredRelations = $this->laravel['config']->get('ide-helper.additional_relation_types', []);
|
||||
return array_merge(self::RELATION_TYPES, $configuredRelations);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
@@ -1025,20 +1095,19 @@ class ModelsCommand extends Command
|
||||
|
||||
$methodReflection = new \ReflectionMethod($type, 'get');
|
||||
|
||||
$type = $this->getReturnTypeFromReflection($methodReflection);
|
||||
$reflectionType = $this->getReturnTypeFromReflection($methodReflection);
|
||||
|
||||
if ($type === null) {
|
||||
$type = $this->getReturnTypeFromDocBlock($methodReflection);
|
||||
if ($reflectionType === null) {
|
||||
$reflectionType = $this->getReturnTypeFromDocBlock($methodReflection);
|
||||
}
|
||||
|
||||
return $type;
|
||||
if($reflectionType === 'static' || $reflectionType === '$this') {
|
||||
$reflectionType = $type;
|
||||
}
|
||||
|
||||
return $reflectionType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object|ReflectionClass $model
|
||||
* @param string $type
|
||||
* @return string
|
||||
*/
|
||||
protected function getTypeInModel(object $model, ?string $type): ?string
|
||||
{
|
||||
if ($type === null) {
|
||||
@@ -1052,11 +1121,6 @@ class ModelsCommand extends Command
|
||||
return $type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object|ReflectionClass $model
|
||||
* @param string $className
|
||||
* @return string
|
||||
*/
|
||||
protected function getClassNameInDestinationFile(object $model, string $className): string
|
||||
{
|
||||
$reflection = $model instanceof ReflectionClass
|
||||
@@ -1067,8 +1131,9 @@ class ModelsCommand extends Command
|
||||
$className = trim($className, '\\');
|
||||
$writingToExternalFile = !$this->write;
|
||||
$classIsNotInExternalFile = $reflection->getName() !== $className;
|
||||
$forceFQCN = $this->laravel['config']->get('ide-helper.force_fqn', false);
|
||||
|
||||
if ($writingToExternalFile && $classIsNotInExternalFile) {
|
||||
if (($writingToExternalFile && $classIsNotInExternalFile) || $forceFQCN) {
|
||||
return '\\' . $className;
|
||||
}
|
||||
|
||||
@@ -1087,4 +1152,113 @@ class ModelsCommand extends Command
|
||||
|
||||
return $namespaceAliases;
|
||||
}
|
||||
|
||||
protected function writeModelExternalBuilderMethods(Model $model): void
|
||||
{
|
||||
$fullBuilderClass = '\\' . get_class($model->newModelQuery());
|
||||
$newBuilderMethods = get_class_methods($fullBuilderClass);
|
||||
$originalBuilderMethods = get_class_methods('\Illuminate\Database\Eloquent\Builder');
|
||||
|
||||
// diff the methods between the new builder and original one
|
||||
// and create helpers for the ones that are new
|
||||
$newMethodsFromNewBuilder = array_diff($newBuilderMethods, $originalBuilderMethods);
|
||||
|
||||
if (!$newMethodsFromNewBuilder) {
|
||||
return;
|
||||
}
|
||||
|
||||
// after we have retrieved the builder's methods
|
||||
// get the class of the builder based on the FQCN option
|
||||
$builderClassBasedOnFQCNOption = $this->getClassNameInDestinationFile($model, get_class($model->newModelQuery()));
|
||||
|
||||
foreach ($newMethodsFromNewBuilder as $builderMethod) {
|
||||
$reflection = new \ReflectionMethod($fullBuilderClass, $builderMethod);
|
||||
$args = $this->getParameters($reflection);
|
||||
|
||||
$this->setMethod(
|
||||
$builderMethod,
|
||||
$builderClassBasedOnFQCNOption . '|' . $this->getClassNameInDestinationFile($model, get_class($model)),
|
||||
$args
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getParamType(\ReflectionMethod $method, \ReflectionParameter $parameter): ?string
|
||||
{
|
||||
if ($paramType = $parameter->getType()) {
|
||||
$parameterName = $paramType->getName();
|
||||
|
||||
if (!$paramType->isBuiltin()) {
|
||||
$parameterName = '\\' . $parameterName;
|
||||
}
|
||||
|
||||
if ($paramType->allowsNull()) {
|
||||
return '?' . $parameterName;
|
||||
}
|
||||
|
||||
return $parameterName;
|
||||
}
|
||||
|
||||
$docComment = $method->getDocComment();
|
||||
|
||||
if (!$docComment) {
|
||||
return null;
|
||||
}
|
||||
|
||||
preg_match(
|
||||
'/@param ((?:(?:[\w?|\\\\<>])+(?:\[])?)+)/',
|
||||
$docComment ?? '',
|
||||
$matches
|
||||
);
|
||||
$type = $matches[1] ?? null;
|
||||
|
||||
if (strpos($type, '|') !== false) {
|
||||
$types = explode('|', $type);
|
||||
|
||||
// if we have more than 2 types
|
||||
// we return null as we cannot use unions in php yet
|
||||
if (count($types) > 2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$hasNull = false;
|
||||
|
||||
foreach ($types as $currentType) {
|
||||
if ($currentType === 'null') {
|
||||
$hasNull = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
// if we didn't find null assign the current type to the type we want
|
||||
$type = $currentType;
|
||||
}
|
||||
|
||||
// if we haven't found null type set
|
||||
// we return null as we cannot use unions with different types yet
|
||||
if (!$hasNull) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$type = '?' . $type;
|
||||
}
|
||||
|
||||
// convert to proper type hint types in php
|
||||
$type = str_replace(['boolean', 'integer'], ['bool', 'int'], $type);
|
||||
|
||||
$allowedTypes = [
|
||||
'int',
|
||||
'bool',
|
||||
'string',
|
||||
'float',
|
||||
];
|
||||
|
||||
// we replace the ? with an empty string so we can check the actual type
|
||||
if (!in_array(str_replace('?', '', $type), $allowedTypes)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// if we have a match on index 1
|
||||
// then we have found the type of the variable if not we return null
|
||||
return $type;
|
||||
}
|
||||
}
|
||||
|
||||
+24
-20
@@ -8,12 +8,12 @@
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Barryvdh\Reflection\DocBlock;
|
||||
use Barryvdh\Reflection\DocBlock\Context;
|
||||
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
||||
use Barryvdh\Reflection\DocBlock\Tag;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
|
||||
class Eloquent
|
||||
{
|
||||
@@ -85,25 +85,29 @@ class Eloquent
|
||||
}
|
||||
|
||||
$filename = $reflection->getFileName();
|
||||
if ($filename) {
|
||||
$contents = $files->get($filename);
|
||||
if ($contents) {
|
||||
$count = 0;
|
||||
$contents = str_replace($originalDoc, $docComment, $contents, $count);
|
||||
if ($count > 0) {
|
||||
if ($files->put($filename, $contents)) {
|
||||
$command->info('Wrote expected docblock to ' . $filename);
|
||||
} else {
|
||||
$command->error('File write failed to ' . $filename);
|
||||
}
|
||||
} else {
|
||||
$command->error('Content did not change ' . $contents);
|
||||
}
|
||||
} else {
|
||||
$command->error('No file contents found ' . $filename);
|
||||
}
|
||||
} else {
|
||||
if (!$filename) {
|
||||
$command->error('Filename not found ' . $class);
|
||||
return;
|
||||
}
|
||||
|
||||
$contents = $files->get($filename);
|
||||
if (!$contents) {
|
||||
$command->error('No file contents found ' . $filename);
|
||||
return;
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
$contents = str_replace($originalDoc, $docComment, $contents, $count);
|
||||
if ($count <= 0) {
|
||||
$command->error('Content did not change ' . $contents);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$files->put($filename, $contents)) {
|
||||
$command->error('File write failed to ' . $filename);
|
||||
return;
|
||||
}
|
||||
|
||||
$command->info('Wrote expected docblock to ' . $filename);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-8
@@ -8,23 +8,29 @@ use ReflectionClass;
|
||||
|
||||
class Factories
|
||||
{
|
||||
|
||||
public static function all()
|
||||
{
|
||||
$factories = [];
|
||||
|
||||
$factory = app(Factory::class);
|
||||
if (static::isLaravelSevenOrLower()) {
|
||||
$factory = app(Factory::class);
|
||||
|
||||
$definitions = (new ReflectionClass(Factory::class))->getProperty('definitions');
|
||||
$definitions->setAccessible(true);
|
||||
$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) {
|
||||
foreach ($definitions->getValue($factory) as $factory_target => $config) {
|
||||
try {
|
||||
$factories[] = new ReflectionClass($factory_target);
|
||||
} catch (Exception $exception) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $factories;
|
||||
}
|
||||
|
||||
protected static function isLaravelSevenOrLower()
|
||||
{
|
||||
return class_exists('Illuminate\Database\Eloquent\Factory');
|
||||
}
|
||||
}
|
||||
|
||||
+73
-54
@@ -11,9 +11,10 @@
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Traits\Macroable;
|
||||
use ReflectionClass;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
@@ -28,9 +29,9 @@ class Generator
|
||||
/** @var \Symfony\Component\Console\Output\OutputInterface */
|
||||
protected $output;
|
||||
|
||||
protected $extra = array();
|
||||
protected $magic = array();
|
||||
protected $interfaces = array();
|
||||
protected $extra = [];
|
||||
protected $magic = [];
|
||||
protected $interfaces = [];
|
||||
protected $helpers;
|
||||
|
||||
/**
|
||||
@@ -40,8 +41,10 @@ class Generator
|
||||
* @param string $helpers
|
||||
*/
|
||||
public function __construct(
|
||||
/*ConfigRepository */ $config,
|
||||
/* Illuminate\View\Factory */ $view,
|
||||
/*ConfigRepository */
|
||||
$config,
|
||||
/* Illuminate\View\Factory */
|
||||
$view,
|
||||
OutputInterface $output = null,
|
||||
$helpers = ''
|
||||
) {
|
||||
@@ -64,21 +67,9 @@ class Generator
|
||||
/**
|
||||
* Generate the helper file contents;
|
||||
*
|
||||
* @param string $format The format to generate the helper in (php/json)
|
||||
* @return string;
|
||||
*/
|
||||
public function generate($format = 'php')
|
||||
{
|
||||
// Check if the generator for this format exists
|
||||
$method = 'generate' . ucfirst($format) . 'Helper';
|
||||
if (method_exists($this, $method)) {
|
||||
return $this->$method();
|
||||
}
|
||||
|
||||
return $this->generatePhpHelper();
|
||||
}
|
||||
|
||||
public function generatePhpHelper()
|
||||
public function generate()
|
||||
{
|
||||
$app = app();
|
||||
return $this->view->make('helper')
|
||||
@@ -91,33 +82,6 @@ class Generator
|
||||
->render();
|
||||
}
|
||||
|
||||
public function generateJsonHelper()
|
||||
{
|
||||
$classes = array();
|
||||
foreach ($this->getValidAliases() as $aliases) {
|
||||
foreach ($aliases as $alias) {
|
||||
$functions = array();
|
||||
foreach ($alias->getMethods() as $method) {
|
||||
$functions[$method->getName()] = '(' . $method->getParamsWithDefault() . ')';
|
||||
}
|
||||
$classes[$alias->getAlias()] = array(
|
||||
'functions' => $functions,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$flags = JSON_FORCE_OBJECT;
|
||||
if (defined('JSON_PRETTY_PRINT')) {
|
||||
$flags |= JSON_PRETTY_PRINT;
|
||||
}
|
||||
|
||||
return json_encode(array(
|
||||
'php' => array(
|
||||
'classes' => $classes,
|
||||
),
|
||||
), $flags);
|
||||
}
|
||||
|
||||
protected function detectDrivers()
|
||||
{
|
||||
$defaultUserModel = config('auth.providers.users.model', config('auth.model', 'App\User'));
|
||||
@@ -129,7 +93,7 @@ class Generator
|
||||
&& app()->bound('auth')
|
||||
) {
|
||||
$class = get_class(\Auth::guard());
|
||||
$this->extra['Auth'] = array($class);
|
||||
$this->extra['Auth'] = [$class];
|
||||
$this->interfaces['\Illuminate\Auth\UserProviderInterface'] = $class;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -138,7 +102,7 @@ class Generator
|
||||
try {
|
||||
if (class_exists('DB') && is_a('DB', '\Illuminate\Support\Facades\DB', true)) {
|
||||
$class = get_class(\DB::connection());
|
||||
$this->extra['DB'] = array($class);
|
||||
$this->extra['DB'] = [$class];
|
||||
$this->interfaces['\Illuminate\Database\ConnectionInterface'] = $class;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -148,7 +112,7 @@ class Generator
|
||||
if (class_exists('Cache') && is_a('Cache', '\Illuminate\Support\Facades\Cache', true)) {
|
||||
$driver = get_class(\Cache::driver());
|
||||
$store = get_class(\Cache::getStore());
|
||||
$this->extra['Cache'] = array($driver, $store);
|
||||
$this->extra['Cache'] = [$driver, $store];
|
||||
$this->interfaces['\Illuminate\Cache\StoreInterface'] = $store;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -157,7 +121,7 @@ class Generator
|
||||
try {
|
||||
if (class_exists('Queue') && is_a('Queue', '\Illuminate\Support\Facades\Queue', true)) {
|
||||
$class = get_class(\Queue::connection());
|
||||
$this->extra['Queue'] = array($class);
|
||||
$this->extra['Queue'] = [$class];
|
||||
$this->interfaces['\Illuminate\Queue\QueueInterface'] = $class;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -166,7 +130,7 @@ class Generator
|
||||
try {
|
||||
if (class_exists('SSH') && is_a('SSH', '\Illuminate\Support\Facades\SSH', true)) {
|
||||
$class = get_class(\SSH::connection());
|
||||
$this->extra['SSH'] = array($class);
|
||||
$this->extra['SSH'] = [$class];
|
||||
$this->interfaces['\Illuminate\Remote\ConnectionInterface'] = $class;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -175,7 +139,7 @@ class Generator
|
||||
try {
|
||||
if (class_exists('Storage') && is_a('Storage', '\Illuminate\Support\Facades\Storage', true)) {
|
||||
$class = get_class(\Storage::disk());
|
||||
$this->extra['Storage'] = array($class);
|
||||
$this->extra['Storage'] = [$class];
|
||||
$this->interfaces['\Illuminate\Contracts\Filesystem\Filesystem'] = $class;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
@@ -198,7 +162,7 @@ class Generator
|
||||
continue;
|
||||
}
|
||||
|
||||
$magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : array();
|
||||
$magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : [];
|
||||
$alias = new Alias($this->config, $name, $facade, $magicMethods, $this->interfaces);
|
||||
if ($alias->isValid()) {
|
||||
//Add extra methods, from other classes (magic static calls)
|
||||
@@ -220,7 +184,11 @@ class Generator
|
||||
*/
|
||||
protected function getAliasesByExtendsNamespace()
|
||||
{
|
||||
return $this->getValidAliases()->groupBy(function (Alias $alias) {
|
||||
$aliases = $this->getValidAliases();
|
||||
|
||||
$this->addMacroableClasses($aliases);
|
||||
|
||||
return $aliases->groupBy(function (Alias $alias) {
|
||||
return $alias->getExtendsNamespace();
|
||||
});
|
||||
}
|
||||
@@ -291,4 +259,55 @@ class Generator
|
||||
echo $string . "\r\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add all macroable classes which are not already loaded as an alias and have defined macros.
|
||||
*
|
||||
* @param Collection $aliases
|
||||
*/
|
||||
protected function addMacroableClasses(Collection $aliases)
|
||||
{
|
||||
$macroable = $this->getMacroableClasses($aliases);
|
||||
|
||||
foreach ($macroable as $class) {
|
||||
$reflection = new ReflectionClass($class);
|
||||
|
||||
if (!$reflection->getStaticProperties()['macros']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$aliases[] = new Alias($this->config, $class, $class, [], $this->interfaces);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all loaded macroable classes which are not loaded as an alias.
|
||||
*
|
||||
* @param Collection $aliases
|
||||
* @return Collection
|
||||
*/
|
||||
protected function getMacroableClasses(Collection $aliases)
|
||||
{
|
||||
return (new Collection(get_declared_classes()))
|
||||
->filter(function ($class) {
|
||||
$reflection = new ReflectionClass($class);
|
||||
|
||||
// Filter out internal classes and class aliases
|
||||
return !$reflection->isInternal() && $reflection->getName() === $class;
|
||||
})
|
||||
->filter(function ($class) {
|
||||
$traits = class_uses($class);
|
||||
|
||||
// Filter only classes with the macroable trait
|
||||
return isset($traits[Macroable::class]);
|
||||
})
|
||||
->filter(function ($class) use ($aliases) {
|
||||
$class = Str::start($class, '\\');
|
||||
|
||||
// Filter out aliases
|
||||
return !$aliases->first(function (Alias $alias) use ($class) {
|
||||
return $alias->getExtends() === $class;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
class Helpers
|
||||
{
|
||||
public static function isLaravel(): bool
|
||||
{
|
||||
return class_exists('Illuminate\Foundation\Application');
|
||||
}
|
||||
}
|
||||
@@ -15,22 +15,16 @@ use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Illuminate\Contracts\Support\DeferrableProvider;
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\View\Engines\EngineResolver;
|
||||
use Illuminate\View\Engines\PhpEngine;
|
||||
use Illuminate\View\Factory;
|
||||
use Illuminate\View\FileViewFinder;
|
||||
|
||||
class IdeHelperServiceProvider extends ServiceProvider
|
||||
class IdeHelperServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
{
|
||||
|
||||
/**
|
||||
* Indicates if loading of the provider is deferred.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $defer = true;
|
||||
|
||||
/**
|
||||
* Bootstrap the application events.
|
||||
*
|
||||
@@ -86,7 +80,7 @@ class IdeHelperServiceProvider extends ServiceProvider
|
||||
|
||||
$this->app->singleton(
|
||||
'command.ide-helper.eloquent',
|
||||
function ($app) use ($localViewFactory) {
|
||||
function ($app) {
|
||||
return new EloquentCommand($app['files']);
|
||||
}
|
||||
);
|
||||
@@ -106,7 +100,7 @@ class IdeHelperServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function provides()
|
||||
{
|
||||
return array('command.ide-helper.generate', 'command.ide-helper.models');
|
||||
return ['command.ide-helper.generate', 'command.ide-helper.models'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,7 +110,11 @@ class IdeHelperServiceProvider extends ServiceProvider
|
||||
{
|
||||
$resolver = new EngineResolver();
|
||||
$resolver->register('php', function () {
|
||||
return new PhpEngine();
|
||||
if (Helpers::isLaravel() && (int) Application::VERSION < 8) {
|
||||
return new PhpEngine();
|
||||
}
|
||||
|
||||
return new PhpEngine($this->app['files']);
|
||||
});
|
||||
$finder = new FileViewFinder($this->app['files'], [__DIR__ . '/../resources/views']);
|
||||
$factory = new Factory($resolver, $finder, $this->app['events']);
|
||||
|
||||
+42
-2
@@ -4,6 +4,7 @@ namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
use Barryvdh\Reflection\DocBlock;
|
||||
use Barryvdh\Reflection\DocBlock\Tag;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class Macro extends Method
|
||||
{
|
||||
@@ -21,7 +22,7 @@ class Macro extends Method
|
||||
$alias,
|
||||
$class,
|
||||
$methodName = null,
|
||||
$interfaces = array()
|
||||
$interfaces = []
|
||||
) {
|
||||
parent::__construct($method, $alias, $class, $methodName, $interfaces);
|
||||
}
|
||||
@@ -31,7 +32,46 @@ class Macro extends Method
|
||||
*/
|
||||
protected function initPhpDoc($method)
|
||||
{
|
||||
$this->phpdoc = new DocBlock($method);
|
||||
$this->phpdoc = new DocBlock('/** */');
|
||||
|
||||
$this->addLocationToPhpDoc();
|
||||
|
||||
// Add macro parameters
|
||||
foreach ($method->getParameters() as $parameter) {
|
||||
$type = $parameter->hasType() ? $parameter->getType()->getName() : 'mixed';
|
||||
$type .= $parameter->hasType() && $parameter->getType()->allowsNull() ? '|null' : '';
|
||||
|
||||
$name = $parameter->isVariadic() ? '...' : '';
|
||||
$name .= '$' . $parameter->getName();
|
||||
|
||||
$this->phpdoc->appendTag(Tag::createInstance("@param {$type} {$name}"));
|
||||
}
|
||||
|
||||
// Add macro return type
|
||||
if ($method->hasReturnType()) {
|
||||
$type = $method->getReturnType()->getName();
|
||||
$type .= $method->getReturnType()->allowsNull() ? '|null' : '';
|
||||
|
||||
$this->phpdoc->appendTag(Tag::createInstance("@return {$type}"));
|
||||
}
|
||||
}
|
||||
|
||||
protected function addLocationToPhpDoc()
|
||||
{
|
||||
$enclosingClass = $this->method->getClosureScopeClass();
|
||||
|
||||
/** @var \ReflectionMethod $enclosingMethod */
|
||||
$enclosingMethod = Collection::make($enclosingClass->getMethods())
|
||||
->first(function (\ReflectionMethod $method) {
|
||||
return $method->getStartLine() <= $this->method->getStartLine()
|
||||
&& $method->getEndLine() >= $this->method->getEndLine();
|
||||
});
|
||||
|
||||
if ($enclosingMethod) {
|
||||
$this->phpdoc->appendTag(Tag::createInstance(
|
||||
'@see \\' . $enclosingClass->getName() . '::' . $enclosingMethod->getName() . '()'
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+39
-37
@@ -13,10 +13,10 @@ namespace Barryvdh\LaravelIdeHelper;
|
||||
|
||||
use Barryvdh\Reflection\DocBlock;
|
||||
use Barryvdh\Reflection\DocBlock\Context;
|
||||
use Barryvdh\Reflection\DocBlock\Tag;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\ReturnTag;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\ParamTag;
|
||||
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
||||
use Barryvdh\Reflection\DocBlock\Tag;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\ParamTag;
|
||||
use Barryvdh\Reflection\DocBlock\Tag\ReturnTag;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
@@ -32,9 +32,9 @@ class Method
|
||||
protected $declaringClassName;
|
||||
protected $name;
|
||||
protected $namespace;
|
||||
protected $params = array();
|
||||
protected $params_with_default = array();
|
||||
protected $interfaces = array();
|
||||
protected $params = [];
|
||||
protected $params_with_default = [];
|
||||
protected $interfaces = [];
|
||||
protected $real_name;
|
||||
protected $return = null;
|
||||
protected $root;
|
||||
@@ -46,7 +46,7 @@ class Method
|
||||
* @param string|null $methodName
|
||||
* @param array $interfaces
|
||||
*/
|
||||
public function __construct($method, $alias, $class, $methodName = null, $interfaces = array())
|
||||
public function __construct($method, $alias, $class, $methodName = null, $interfaces = [])
|
||||
{
|
||||
$this->method = $method;
|
||||
$this->interfaces = $interfaces;
|
||||
@@ -119,7 +119,7 @@ class Method
|
||||
*/
|
||||
public function isInstanceCall()
|
||||
{
|
||||
return ! ($this->method->isClosure() || $this->method->isStatic());
|
||||
return !($this->method->isClosure() || $this->method->isStatic());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -251,35 +251,37 @@ class Method
|
||||
*/
|
||||
protected function normalizeReturn(DocBlock $phpdoc)
|
||||
{
|
||||
//Get the return type and adjust them for beter autocomplete
|
||||
//Get the return type and adjust them for better autocomplete
|
||||
$returnTags = $phpdoc->getTagsByName('return');
|
||||
if ($returnTags) {
|
||||
/** @var ReturnTag $tag */
|
||||
$tag = reset($returnTags);
|
||||
// Get the expanded type
|
||||
$returnValue = $tag->getType();
|
||||
|
||||
// Replace the interfaces
|
||||
foreach ($this->interfaces as $interface => $real) {
|
||||
$returnValue = str_replace($interface, $real, $returnValue);
|
||||
}
|
||||
|
||||
// Set the changed content
|
||||
$tag->setContent($returnValue . ' ' . $tag->getDescription());
|
||||
$this->return = $returnValue;
|
||||
|
||||
if ($tag->getType() === '$this') {
|
||||
Str::contains($this->root, Builder::class)
|
||||
? $tag->setType($this->root . '|static')
|
||||
: $tag->setType($this->root);
|
||||
}
|
||||
} else {
|
||||
if (count($returnTags) === 0) {
|
||||
$this->return = null;
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var ReturnTag $tag */
|
||||
$tag = reset($returnTags);
|
||||
// Get the expanded type
|
||||
$returnValue = $tag->getType();
|
||||
|
||||
// Replace the interfaces
|
||||
foreach ($this->interfaces as $interface => $real) {
|
||||
$returnValue = str_replace($interface, $real, $returnValue);
|
||||
}
|
||||
|
||||
// Set the changed content
|
||||
$tag->setContent($returnValue . ' ' . $tag->getDescription());
|
||||
$this->return = $returnValue;
|
||||
|
||||
if ($tag->getType() === '$this') {
|
||||
Str::contains($this->root, Builder::class)
|
||||
? $tag->setType($this->root . '|static')
|
||||
: $tag->setType($this->root);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert keywwords that are incorrect.
|
||||
* Convert keywords that are incorrect.
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
@@ -300,7 +302,7 @@ class Method
|
||||
*/
|
||||
public function shouldReturn()
|
||||
{
|
||||
if ($this->return !== "void" && $this->method->name !== "__construct") {
|
||||
if ($this->return !== 'void' && $this->method->name !== '__construct') {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -311,13 +313,13 @@ class Method
|
||||
* Get the parameters and format them correctly
|
||||
*
|
||||
* @param \ReflectionMethod $method
|
||||
* @return array
|
||||
* @return void
|
||||
*/
|
||||
public function getParameters($method)
|
||||
{
|
||||
//Loop through the default values for paremeters, and make the correct output string
|
||||
$params = array();
|
||||
$paramsWithDefault = array();
|
||||
//Loop through the default values for parameters, and make the correct output string
|
||||
$params = [];
|
||||
$paramsWithDefault = [];
|
||||
foreach ($method->getParameters() as $param) {
|
||||
$paramStr = $param->isVariadic() ? '...$' . $param->getName() : '$' . $param->getName();
|
||||
$params[] = $paramStr;
|
||||
@@ -366,9 +368,9 @@ class Method
|
||||
if (strpos($phpdoc->getText(), '{@inheritdoc}') !== false) {
|
||||
//Not at the end yet, try another parent/interface..
|
||||
return $this->getInheritDoc($method);
|
||||
} else {
|
||||
return $phpdoc;
|
||||
}
|
||||
|
||||
return $phpdoc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\MetaCommand;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery\MockInterface;
|
||||
|
||||
class MetaCommandTest extends TestCase
|
||||
{
|
||||
public function testCommand(): void
|
||||
{
|
||||
$this->mockFilesystem();
|
||||
|
||||
/** @var Filesystem|MockInterface $mockFileSystem */
|
||||
$mockFileSystem = $this->app->make(Filesystem::class);
|
||||
$this->instance('files', $mockFileSystem);
|
||||
|
||||
$mockFileSystem
|
||||
->shouldReceive('getRequire')
|
||||
->andReturnUsing(function ($__path, $__data) {
|
||||
return (static function () use ($__path, $__data) {
|
||||
extract($__data, EXTR_SKIP);
|
||||
|
||||
return require $__path;
|
||||
})();
|
||||
});
|
||||
|
||||
$this->artisan('ide-helper:meta');
|
||||
|
||||
// We're not testing the whole file, just some basic structure elements
|
||||
self::assertStringContainsString("namespace PHPSTORM_META {\n", $this->mockFilesystemOutput);
|
||||
self::assertStringContainsString("PhpStorm Meta file, to provide autocomplete information for PhpStorm\n", $this->mockFilesystemOutput);
|
||||
self::assertStringContainsString('override(', $this->mockFilesystemOutput);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get package providers.
|
||||
*
|
||||
* @param \Illuminate\Foundation\Application $app
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [IdeHelperServiceProvider::class];
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,9 @@ declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\SnapshotPhpDriver;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
||||
use Illuminate\Foundation\Application;
|
||||
|
||||
abstract class AbstractModelsCommand extends TestCase
|
||||
{
|
||||
@@ -13,14 +14,21 @@ abstract class AbstractModelsCommand extends TestCase
|
||||
{
|
||||
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');
|
||||
$this->mockFilesystem();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get package providers.
|
||||
*
|
||||
* @param \Illuminate\Foundation\Application $app
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [IdeHelperServiceProvider::class];
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
@@ -35,5 +43,18 @@ abstract class AbstractModelsCommand extends TestCase
|
||||
'database' => ':memory:',
|
||||
'prefix' => '',
|
||||
]);
|
||||
|
||||
// Load the Models from the Test dir
|
||||
$config->set('ide-helper.model_locations', [
|
||||
dirname((new \ReflectionClass(static::class))->getFileName()) . '/Models',
|
||||
]);
|
||||
|
||||
// Don't override integer -> int for tests
|
||||
$config->set('ide-helper.type_overrides', []);
|
||||
}
|
||||
|
||||
protected function assertMatchesMockedSnapshot()
|
||||
{
|
||||
$this->assertMatchesSnapshot($this->mockFilesystemOutput, new SnapshotPhpDriver());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirectory\Services\Post\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Post extends Model
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirectory;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
final class Test extends AbstractModelsCommand
|
||||
{
|
||||
/** @var string */
|
||||
private $cwd;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->cwd = getcwd();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
chdir($this->cwd);
|
||||
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
chdir(__DIR__);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--dir' => ['Services/*/Models'],
|
||||
'--write' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirectory\Services\Post\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AllowGlobDirectory\Services\Post\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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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|Post newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class Post extends Model
|
||||
{
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection\Collections;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
||||
class SimpleCollection extends Collection
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -6,44 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection\Collections\SimpleCollection;
|
||||
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/CustomCollection/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, [
|
||||
@@ -51,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,8 @@ 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
|
||||
{
|
||||
@@ -28,38 +26,8 @@ class Test extends AbstractModelsCommand
|
||||
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, [
|
||||
@@ -67,7 +35,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Builders;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class PostExternalQueryBuilder extends Builder
|
||||
{
|
||||
public function isActive(): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isStatus(string $status): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Post extends Model
|
||||
{
|
||||
public function newEloquentBuilder($query): PostExternalQueryBuilder
|
||||
{
|
||||
return new PostExternalQueryBuilder($query);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
parent::getEnvironmentSetUp($app);
|
||||
|
||||
$app['config']->set('ide-helper.write_model_external_builder_methods', false);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--nowrite' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Model information was written to _ide_helper_models.php', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
+169
@@ -0,0 +1,169 @@
|
||||
<?php
|
||||
|
||||
// @formatter:off
|
||||
/**
|
||||
* A helper file for your Eloquent Models
|
||||
* Copy the phpDocs from this file to the correct Model,
|
||||
* And remove them from this file, to prevent double declarations.
|
||||
*
|
||||
* @author Barry vd. Heuvel <[email protected]>
|
||||
*/
|
||||
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Models{
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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 \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post newModelQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post newQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DoesNotGeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
|
||||
*/
|
||||
class Post extends \Eloquent {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
|
||||
class Dynamic extends Model
|
||||
{
|
||||
/** @var \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\OtherModels\Account */
|
||||
protected $account;
|
||||
|
||||
// Regular relations
|
||||
public function regularHasMany(): HasMany
|
||||
{
|
||||
return $this->hasMany(Dynamic::class);
|
||||
}
|
||||
|
||||
// Dynamic relations
|
||||
public function dynamicHasMany(): HasMany
|
||||
{
|
||||
return $this->hasMany(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
|
||||
public function dynamicHasOne(): HasOne
|
||||
{
|
||||
return $this->hasOne(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
|
||||
public function dynamicBelongsTo(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\OtherModels;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Account extends Model
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write' => true,
|
||||
]);
|
||||
|
||||
if (PHP_VERSION_ID >= 80000) {
|
||||
$errors = <<<TXT
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicBelongsTo() : Attempt to read property "created_at" on null
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicHasMany() : Attempt to read property "created_at" on null
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicHasOne() : Attempt to read property "created_at" on null
|
||||
TXT;
|
||||
} else {
|
||||
$errors = <<<TXT
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicBelongsTo() : Trying to get property 'created_at' of non-object
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicHasMany() : Trying to get property 'created_at' of non-object
|
||||
Error resolving relation model of Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic:dynamicHasOne() : Trying to get property 'created_at' of non-object
|
||||
TXT;
|
||||
}
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertStringContainsString($errors, $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\Models\Dynamic
|
||||
*
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|Dynamic[] $regularHasMany
|
||||
* @property-read int|null $regular_has_many_count
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Dynamic newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Dynamic newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Dynamic query()
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class Dynamic extends Model
|
||||
{
|
||||
/** @var \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\DynamicRelations\OtherModels\Account */
|
||||
protected $account;
|
||||
|
||||
// Regular relations
|
||||
public function regularHasMany(): HasMany
|
||||
{
|
||||
return $this->hasMany(Dynamic::class);
|
||||
}
|
||||
|
||||
// Dynamic relations
|
||||
public function dynamicHasMany(): HasMany
|
||||
{
|
||||
return $this->hasMany(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
|
||||
public function dynamicHasOne(): HasOne
|
||||
{
|
||||
return $this->hasOne(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
|
||||
public function dynamicBelongsTo(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Dynamic::class)->where('date', '>=', $this->account->created_at);
|
||||
}
|
||||
}
|
||||
@@ -6,43 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
|
||||
|
||||
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, [
|
||||
@@ -50,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
@@ -15,36 +13,11 @@ class Test extends AbstractModelsCommand
|
||||
{
|
||||
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/GenerateBasicPhpdocCamel/Models',
|
||||
],
|
||||
// Activate the camel_case mode
|
||||
'model_camel_case_properties' => true,
|
||||
]);
|
||||
$app['config']->set('ide-helper.model_camel_case_properties', true);
|
||||
}
|
||||
|
||||
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, [
|
||||
@@ -52,7 +25,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,43 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GenerateBasicPhp
|
||||
|
||||
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/GenerateBasicPhpdocFinal/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, [
|
||||
@@ -50,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class PostExternalQueryBuilder extends Builder
|
||||
{
|
||||
public function isActive(): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isStatus(string $status): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isLoadingWith(?string $with): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withTheNumber($number): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withTheNumberDifferently($number): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withBool($booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withBoolDifferently($booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withBoolTypeHinted(bool $booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|string $someone
|
||||
* @return $this
|
||||
*/
|
||||
public function withSomeone($someone): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $option
|
||||
* @return $this
|
||||
*/
|
||||
public function withMixedOption($option): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withTestCommand(ModelsCommand $testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withNullTestCommand(?ModelsCommand $testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withNullAndAssignmentTestCommand(?ModelsCommand $testCommand = null): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ModelsCommand $testCommand
|
||||
* @return $this
|
||||
*/
|
||||
public function withNullTestCommandInDocBlock($testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Post extends Model
|
||||
{
|
||||
public function newEloquentBuilder($query): PostExternalQueryBuilder
|
||||
{
|
||||
return new PostExternalQueryBuilder($query);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--nowrite' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Model information was written to _ide_helper_models.php', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
|
||||
// @formatter:off
|
||||
/**
|
||||
* A helper file for your Eloquent Models
|
||||
* Copy the phpDocs from this file to the correct Model,
|
||||
* And remove them from this file, to prevent double declarations.
|
||||
*
|
||||
* @author Barry vd. Heuvel <[email protected]>
|
||||
*/
|
||||
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Models{
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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 \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post isActive()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post isLoadingWith(?string $with)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post isStatus(string $status)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post newModelQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post newQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post query()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBinaryNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereBooleanNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereCharNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereCharNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereCreatedAt($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDateNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDateNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDatetimeNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDecimalNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereDoubleNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereEnumNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereEnumNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereFloatNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereFloatNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereId($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereIpaddressNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereJsonNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereJsonNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereJsonbNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereLongTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMacaddressNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereMediumTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereStringNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereStringNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimeNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimeNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimestampNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTimetzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUpdatedAt($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUuidNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereUuidNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereYearNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post whereYearNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withBool(?bool $booleanVar)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withBoolDifferently(?bool $booleanVar)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withBoolTypeHinted(bool $booleanVar)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withMixedOption($option)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withNullAndAssignmentTestCommand(?\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand = null)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withNullTestCommand(?\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withNullTestCommandInDocBlock($testCommand)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withSomeone($someone)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withTestCommand(\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withTheNumber(?int $number)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilder\Builders\PostExternalQueryBuilder|Post withTheNumberDifferently(?int $number)
|
||||
*/
|
||||
class Post extends \Eloquent {}
|
||||
}
|
||||
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Builders;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class PostExternalQueryBuilder extends Builder
|
||||
{
|
||||
public function isActive(): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isStatus(string $status): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isLoadingWith(?string $with): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withTheNumber($number): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withTheNumberDifferently($number): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withBool($booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|null $number
|
||||
* @return $this
|
||||
*/
|
||||
public function withBoolDifferently($booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withBoolTypeHinted(bool $booleanVar): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|string $someone
|
||||
* @return $this
|
||||
*/
|
||||
public function withSomeone($someone): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $option
|
||||
* @return $this
|
||||
*/
|
||||
public function withMixedOption($option): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withTestCommand(ModelsCommand $testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withNullTestCommand(?ModelsCommand $testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withNullAndAssignmentTestCommand(?ModelsCommand $testCommand = null): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ModelsCommand $testCommand
|
||||
* @return $this
|
||||
*/
|
||||
public function withNullTestCommandInDocBlock($testCommand): self
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Builders\PostExternalQueryBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Post extends Model
|
||||
{
|
||||
public function newEloquentBuilder($query): PostExternalQueryBuilder
|
||||
{
|
||||
return new PostExternalQueryBuilder($query);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\Builders\PostExternalQueryBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithExternalEloquentBuilderWithFqn\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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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 PostExternalQueryBuilder|Post isActive()
|
||||
* @method static PostExternalQueryBuilder|Post isLoadingWith(?string $with)
|
||||
* @method static PostExternalQueryBuilder|Post isStatus(string $status)
|
||||
* @method static PostExternalQueryBuilder|Post newModelQuery()
|
||||
* @method static PostExternalQueryBuilder|Post newQuery()
|
||||
* @method static PostExternalQueryBuilder|Post query()
|
||||
* @method static PostExternalQueryBuilder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereBigIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereBinaryNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereBinaryNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereBooleanNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereBooleanNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereCharNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereCharNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereCreatedAt($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDateNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDateNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDatetimeNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDatetimeNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDatetimetzNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDecimalNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDecimalNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDoubleNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereDoubleNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereEnumNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereEnumNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereFloatNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereFloatNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereId($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereIpaddressNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereIpaddressNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereJsonNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereJsonNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereJsonbNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereJsonbNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereLongTextNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereLongTextNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMacaddressNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMacaddressNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMediumIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMediumTextNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereMediumTextNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereSmallIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereStringNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereStringNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTextNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTextNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimeNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimeNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimestampNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimestampNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimestamptzNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimetzNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTimetzNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereTinyIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUpdatedAt($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUuidNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereUuidNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereYearNotNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post whereYearNullable($value)
|
||||
* @method static PostExternalQueryBuilder|Post withBool(?bool $booleanVar)
|
||||
* @method static PostExternalQueryBuilder|Post withBoolDifferently(?bool $booleanVar)
|
||||
* @method static PostExternalQueryBuilder|Post withBoolTypeHinted(bool $booleanVar)
|
||||
* @method static PostExternalQueryBuilder|Post withMixedOption($option)
|
||||
* @method static PostExternalQueryBuilder|Post withNullAndAssignmentTestCommand(?\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand = null)
|
||||
* @method static PostExternalQueryBuilder|Post withNullTestCommand(?\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand)
|
||||
* @method static PostExternalQueryBuilder|Post withNullTestCommandInDocBlock($testCommand)
|
||||
* @method static PostExternalQueryBuilder|Post withSomeone($someone)
|
||||
* @method static PostExternalQueryBuilder|Post withTestCommand(\Barryvdh\LaravelIdeHelper\Console\ModelsCommand $testCommand)
|
||||
* @method static PostExternalQueryBuilder|Post withTheNumber(?int $number)
|
||||
* @method static PostExternalQueryBuilder|Post withTheNumberDifferently(?int $number)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class Post extends Model
|
||||
{
|
||||
public function newEloquentBuilder($query): PostExternalQueryBuilder
|
||||
{
|
||||
return new PostExternalQueryBuilder($query);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class Post extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
public function posts(): HasMany
|
||||
{
|
||||
return $this->hasMany(Post::class);
|
||||
}
|
||||
|
||||
public function scopeNull($query, string $unusedParam)
|
||||
{
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
parent::getEnvironmentSetUp($app);
|
||||
|
||||
$app['config']->set('ide-helper.force_fqn', true);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post[] $posts
|
||||
* @property-read int|null $posts_count
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post null(string $unusedParam)
|
||||
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post onlyTrashed()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBinaryNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBinaryNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBooleanNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereBooleanNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereCharNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereCharNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDateNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDateNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDatetimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDatetimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDatetimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDoubleNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereDoubleNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereEnumNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereEnumNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereFloatNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereFloatNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereIpaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereIpaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereJsonNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereJsonNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereJsonbNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereJsonbNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereLongTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereLongTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMacaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMacaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMediumTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereMediumTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereStringNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereStringNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimestampNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimestampNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimestamptzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUuidNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereUuidNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereYearNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post whereYearNullable($value)
|
||||
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post withTrashed()
|
||||
* @method static \Illuminate\Database\Query\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithForcedFqn\Models\Post withoutTrashed()
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class Post extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
public function posts(): HasMany
|
||||
{
|
||||
return $this->hasMany(Post::class);
|
||||
}
|
||||
|
||||
public function scopeNull($query, string $unusedParam)
|
||||
{
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
@@ -6,5 +6,4 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
|
||||
final class CastType
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -6,13 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqn\Casts\CastType;
|
||||
use Eloquent;
|
||||
use Illuminate\Database\Eloquent\{
|
||||
Builder as EloquentBuilder,
|
||||
Collection,
|
||||
SoftDeletes
|
||||
};
|
||||
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
@@ -20,6 +18,18 @@ class Post extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
/**
|
||||
* Special hack to avoid code style fixer removing unused imports
|
||||
* which play a role when generating the snapshot
|
||||
*/
|
||||
private $hack = [
|
||||
Carbon::class,
|
||||
Collection::class,
|
||||
Eloquent::class,
|
||||
EloquentBuilder::class,
|
||||
QueryBuilder::class,
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'char_not_nullable' => CastType::class,
|
||||
];
|
||||
|
||||
@@ -6,47 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqn\Models\Post;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
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/GeneratePhpdocWithFqn/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, [
|
||||
@@ -54,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,13 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqn\Casts\CastType;
|
||||
use Eloquent;
|
||||
use Illuminate\Database\Eloquent\{
|
||||
Builder as EloquentBuilder,
|
||||
Collection,
|
||||
SoftDeletes
|
||||
};
|
||||
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Query\Builder as QueryBuilder;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
@@ -96,7 +94,7 @@ use Illuminate\Support\Carbon;
|
||||
* @property-read int|null $posts_count
|
||||
* @method static EloquentBuilder|Post newModelQuery()
|
||||
* @method static EloquentBuilder|Post newQuery()
|
||||
* @method static EloquentBuilder|Post null($unusedParam)
|
||||
* @method static EloquentBuilder|Post null(string $unusedParam)
|
||||
* @method static QueryBuilder|Post onlyTrashed()
|
||||
* @method static EloquentBuilder|Post query()
|
||||
* @method static EloquentBuilder|Post whereBigIntegerNotNullable($value)
|
||||
@@ -180,6 +178,18 @@ class Post extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
/**
|
||||
* Special hack to avoid code style fixer removing unused imports
|
||||
* which play a role when generating the snapshot
|
||||
*/
|
||||
private $hack = [
|
||||
Carbon::class,
|
||||
Collection::class,
|
||||
Eloquent::class,
|
||||
EloquentBuilder::class,
|
||||
QueryBuilder::class,
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'char_not_nullable' => CastType::class,
|
||||
];
|
||||
|
||||
-1
@@ -8,5 +8,4 @@ use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class EMaterialQueryBuilder extends Builder
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -6,43 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqn\Models\Post;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
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/GeneratePhpdocWithFqnInExternalFile/Models',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$actualContent = null;
|
||||
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||
$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, [
|
||||
@@ -50,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Model information was written to _ide_helper_models.php', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
+73
-73
@@ -90,79 +90,79 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWi
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post newModelQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post newQuery()
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBinaryNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereBooleanNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereCharNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereCharNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereCreatedAt($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDateNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDateNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDatetimeNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDecimalNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereDoubleNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereEnumNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereEnumNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereFloatNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereFloatNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereId($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereIpaddressNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereJsonNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereJsonNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereJsonbNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereLongTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMacaddressNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereMediumTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereStringNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereStringNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTextNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTextNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimeNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimeNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimestampNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTimetzNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUpdatedAt($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUuidNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereUuidNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereYearNotNullable($value)
|
||||
* @method static \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithFqnInExternalFile\Builders\EMaterialQueryBuilder|Post whereYearNullable($value)
|
||||
*/
|
||||
class Post extends \Eloquent {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property $someProp
|
||||
* @method someMethod(string $method)
|
||||
*/
|
||||
class Post extends Model
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
public function test(): void
|
||||
{
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write-mixin' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property $someProp
|
||||
* @method someMethod(string $method)
|
||||
* @mixin IdeHelperPost
|
||||
*/
|
||||
class Post extends Model
|
||||
{
|
||||
}
|
||||
<?php
|
||||
|
||||
// @formatter:off
|
||||
/**
|
||||
* A helper file for your Eloquent Models
|
||||
* Copy the phpDocs from this file to the correct Model,
|
||||
* And remove them from this file, to prevent double declarations.
|
||||
*
|
||||
* @author Barry vd. Heuvel <[email protected]>
|
||||
*/
|
||||
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models{
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\GeneratePhpdocWithMixin\Models\Post
|
||||
*
|
||||
* @property $someProp
|
||||
* @method someMethod(string $method)
|
||||
* @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 string|null $decimal_nullable
|
||||
* @property string $decimal_not_nullable
|
||||
* @property string|null $unsigned_decimal_nullable
|
||||
* @property string $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|Post newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBinaryNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereBooleanNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCharNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDateNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDatetimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereDoubleNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereEnumNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereFloatNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereIpaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereJsonbNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereLongTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMacaddressNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereMediumTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereStringNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTextNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimeNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestampNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimestamptzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTimetzNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedBigIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedDecimalNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedMediumIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedSmallIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUnsignedTinyIntegerNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUpdatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereUuidNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNotNullable($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Post whereYearNullable($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class IdeHelperPost extends \Eloquent {}
|
||||
}
|
||||
|
||||
@@ -6,43 +6,11 @@ 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, [
|
||||
@@ -50,7 +18,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models;
|
||||
|
||||
use DateTime;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Ignored extends Model
|
||||
|
||||
@@ -7,8 +7,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored;
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\Ignored;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
@@ -16,38 +14,13 @@ class Test extends AbstractModelsCommand
|
||||
{
|
||||
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/Ignored/Models',
|
||||
],
|
||||
'ignored_models' => [
|
||||
Ignored::class
|
||||
]
|
||||
$app['config']->set('ide-helper.ignored_models', [
|
||||
Ignored::class,
|
||||
]);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$actualContent = null;
|
||||
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||
$mockFilesystem
|
||||
->shouldReceive('get')
|
||||
->andReturn(file_get_contents(__DIR__ . '/Models/Ignored.php'))
|
||||
->andReturn(file_get_contents(__DIR__ . '/Models/NotIgnored.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, [
|
||||
@@ -55,7 +28,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,40 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Interfaces;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
final 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/Interfaces/Models',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$actualContent = null;
|
||||
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||
|
||||
$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, [
|
||||
@@ -47,7 +18,7 @@ final class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Model information was written to _ide_helper_models.php', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
class CastedProperty
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
class CustomCasterWithParam implements CastsAttributes
|
||||
{
|
||||
public function __construct(string $param)
|
||||
{
|
||||
}
|
||||
|
||||
public function get($model, string $key, $value, array $attributes): CastedProperty
|
||||
{
|
||||
return new CastedProperty();
|
||||
}
|
||||
|
||||
public function set($model, string $key, $value, array $attributes)
|
||||
{
|
||||
// TODO: Implement set() method.
|
||||
}
|
||||
}
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
class ExtendedSelfCastingCasterWithStaticDocblockReturn extends SelfCastingCasterWithStaticDocblockReturn
|
||||
{
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
class ExtendedSelfCastingCasterWithThisDocblockReturn extends SelfCastingCasterWithStaticDocblockReturn
|
||||
{
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
class SelfCastingCasterWithStaticDocblockReturn implements CastsAttributes
|
||||
{
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
public function get($model, string $key, $value, array $attributes)
|
||||
{
|
||||
return new static();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function set($model, string $key, $value, array $attributes)
|
||||
{
|
||||
// TODO: Implement set() method.
|
||||
}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts;
|
||||
|
||||
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||||
|
||||
class SelfCastingCasterWithThisDocblockReturn implements CastsAttributes
|
||||
{
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function get($model, string $key, $value, array $attributes)
|
||||
{
|
||||
return new static();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function set($model, string $key, $value, array $attributes)
|
||||
{
|
||||
// TODO: Implement set() method.
|
||||
}
|
||||
}
|
||||
@@ -8,9 +8,14 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Cas
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithDocblockReturnFqn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithNullablePrimitiveReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithoutReturnType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithParam;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\SelfCastingCasterWithStaticDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\SelfCastingCasterWithThisDocblockReturn;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CustomCast extends Model
|
||||
@@ -23,5 +28,11 @@ class CustomCast extends Model
|
||||
'casted_property_with_return_primitive_docblock' => CustomCasterWithPrimitiveDocblockReturn::class,
|
||||
'casted_property_with_return_nullable_primitive' => CustomCasterWithNullablePrimitiveReturn::class,
|
||||
'casted_property_without_return' => CustomCasterWithoutReturnType::class,
|
||||
'casted_property_with_param' => CustomCasterWithParam::class . ':param',
|
||||
'casted_property_with_static_return_docblock' => SelfCastingCasterWithStaticDocblockReturn::class,
|
||||
'casted_property_with_this_return_docblock' => SelfCastingCasterWithThisDocblockReturn::class,
|
||||
'extended_casted_property_with_static_return_docblock' => ExtendedSelfCastingCasterWithStaticDocblockReturn::class,
|
||||
'extended_casted_property_with_this_return_docblock' => ExtendedSelfCastingCasterWithThisDocblockReturn::class,
|
||||
'casted_property_with_static_return_docblock_and_param' => SelfCastingCasterWithStaticDocblockReturn::class . ':param',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -6,13 +6,10 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCas
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Illuminate\Foundation\Application;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
@@ -22,38 +19,8 @@ class Test extends AbstractModelsCommand
|
||||
}
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
public function test(): void
|
||||
{
|
||||
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/LaravelCustomCasts/Models',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_it_parses_casted_properties_correctly(): void
|
||||
{
|
||||
$actualContent = null;
|
||||
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||
$mockFilesystem
|
||||
->shouldReceive('get')
|
||||
->andReturn(file_get_contents(__DIR__ . '/Models/CustomCast.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, [
|
||||
@@ -61,7 +28,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
+23
@@ -8,9 +8,14 @@ use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Cas
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithDocblockReturnFqn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithNullablePrimitiveReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithoutReturnType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithParam;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithPrimitiveReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CustomCasterWithReturnType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithStaticDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\ExtendedSelfCastingCasterWithThisDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\SelfCastingCasterWithStaticDocblockReturn;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\SelfCastingCasterWithThisDocblockReturn;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
@@ -23,16 +28,28 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* @property array|null $casted_property_with_return_primitive_docblock
|
||||
* @property array|null $casted_property_with_return_nullable_primitive
|
||||
* @property $casted_property_without_return
|
||||
* @property \Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\LaravelCustomCasts\Casts\CastedProperty $casted_property_with_param
|
||||
* @property SelfCastingCasterWithStaticDocblockReturn $casted_property_with_static_return_docblock
|
||||
* @property SelfCastingCasterWithThisDocblockReturn $casted_property_with_this_return_docblock
|
||||
* @property ExtendedSelfCastingCasterWithStaticDocblockReturn $extended_casted_property_with_static_return_docblock
|
||||
* @property ExtendedSelfCastingCasterWithThisDocblockReturn $extended_casted_property_with_this_return_docblock
|
||||
* @property SelfCastingCasterWithStaticDocblockReturn $casted_property_with_static_return_docblock_and_param
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithParam($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnDocblock($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnDocblockFqn($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnNullablePrimitive($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnPrimitive($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnPrimitiveDocblock($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithReturnType($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithStaticReturnDocblock($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithStaticReturnDocblockAndParam($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithThisReturnDocblock($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereCastedPropertyWithoutReturn($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereExtendedCastedPropertyWithStaticReturnDocblock($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|CustomCast whereExtendedCastedPropertyWithThisReturnDocblock($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class CustomCast extends Model
|
||||
@@ -45,5 +62,11 @@ class CustomCast extends Model
|
||||
'casted_property_with_return_primitive_docblock' => CustomCasterWithPrimitiveDocblockReturn::class,
|
||||
'casted_property_with_return_nullable_primitive' => CustomCasterWithNullablePrimitiveReturn::class,
|
||||
'casted_property_without_return' => CustomCasterWithoutReturnType::class,
|
||||
'casted_property_with_param' => CustomCasterWithParam::class . ':param',
|
||||
'casted_property_with_static_return_docblock' => SelfCastingCasterWithStaticDocblockReturn::class,
|
||||
'casted_property_with_this_return_docblock' => SelfCastingCasterWithThisDocblockReturn::class,
|
||||
'extended_casted_property_with_static_return_docblock' => ExtendedSelfCastingCasterWithStaticDocblockReturn::class,
|
||||
'extended_casted_property_with_this_return_docblock' => ExtendedSelfCastingCasterWithThisDocblockReturn::class,
|
||||
'casted_property_with_static_return_docblock_and_param' => SelfCastingCasterWithStaticDocblockReturn::class . ':param',
|
||||
];
|
||||
}
|
||||
@@ -6,8 +6,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\MagicWhere;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
@@ -15,35 +13,11 @@ class Test extends AbstractModelsCommand
|
||||
{
|
||||
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/MagicWhere/Models',
|
||||
],
|
||||
'write_model_magic_where' => false
|
||||
]);
|
||||
$app['config']->set('ide-helper.write_model_magic_where', false);
|
||||
}
|
||||
|
||||
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, [
|
||||
@@ -51,8 +25,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,45 +6,11 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\PHPStormNoInspec
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
use function file_get_contents;
|
||||
|
||||
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/PHPStormNoInspection/Models',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function testNoinspectionNotPresent(): 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, [
|
||||
@@ -52,29 +18,12 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
|
||||
public function testNoinspectionPresent(): 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, [
|
||||
@@ -83,7 +32,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,6 @@ namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\RelationCountPro
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\CustomCollection\Models\Simple;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
@@ -17,35 +13,11 @@ class Test extends AbstractModelsCommand
|
||||
{
|
||||
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/RelationCountProperties/Models',
|
||||
],
|
||||
'write_model_relation_count_properties' => false
|
||||
]);
|
||||
$app['config']->set('ide-helper.write_model_relation_count_properties', false);
|
||||
}
|
||||
|
||||
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, [
|
||||
@@ -53,8 +25,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Models;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\ModelsOtherNamespace\AnotherModel;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits\HasTestRelations;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
@@ -17,6 +18,8 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
|
||||
class Simple extends Model
|
||||
{
|
||||
use HasTestRelations;
|
||||
|
||||
// Regular relations
|
||||
public function relationHasMany(): HasMany
|
||||
{
|
||||
@@ -84,4 +87,14 @@ class Simple extends Model
|
||||
{
|
||||
return $this->belongsTo(AnotherModel::class, __FUNCTION__);
|
||||
}
|
||||
|
||||
public function relationSampleToManyRelationType()
|
||||
{
|
||||
return $this->testToOneRelation(Simple::class);
|
||||
}
|
||||
|
||||
public function relationSampleRelationType()
|
||||
{
|
||||
return $this->testToManyRelation(Simple::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,43 +6,24 @@ 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;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
protected function getEnvironmentSetUp($app)
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::getEnvironmentSetUp($app);
|
||||
parent::setUp();
|
||||
|
||||
$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',
|
||||
],
|
||||
Config::set('ide-helper.additional_relation_types', [
|
||||
'testToOneRelation' => SampleToOneRelationType::class,
|
||||
'testToManyRelation' => SampleToManyRelationType::class,
|
||||
]);
|
||||
}
|
||||
|
||||
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, [
|
||||
@@ -50,7 +31,7 @@ class Test extends AbstractModelsCommand
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
$this->assertMatchesPhpSnapshot($actualContent);
|
||||
$this->assertStringContainsString('Written new phpDocBlock to', $tester->getDisplay());
|
||||
$this->assertMatchesMockedSnapshot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Traits;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToManyRelationType;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types\SampleToOneRelationType;
|
||||
|
||||
trait HasTestRelations
|
||||
{
|
||||
public function testToOneRelation($related)
|
||||
{
|
||||
$instance = $this->newRelatedInstance($related);
|
||||
return new SampleToOneRelationType($instance->newQuery(), $this);
|
||||
}
|
||||
|
||||
public function testToManyRelation($related)
|
||||
{
|
||||
$instance = $this->newRelatedInstance($related);
|
||||
return new SampleToManyRelationType($instance->newQuery(), $this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Relations\Types;
|
||||
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
|
||||
class SampleToManyRelationType extends Relation
|
||||
{
|
||||
public function addConstraints()
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function addEagerConstraints(array $models)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function initRelation(array $models, $relation)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function match(array $models, Collection $results, $relation)
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
|
||||
public function getResults()
|
||||
{
|
||||
// Fake
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user