Skip to content

Commit

Permalink
Laravel 11 support and improvement (#4)
Browse files Browse the repository at this point in the history
* attempt to upgrade

* move migration folder

* fix test and documenting generic type

* update github action

* bot: cs fix

---------

Co-authored-by: muhajirinlpu <[email protected]>
  • Loading branch information
muhajirinlpu and muhajirinlpu authored Mar 19, 2024
1 parent 1c749dc commit 16625b6
Show file tree
Hide file tree
Showing 21 changed files with 137 additions and 52 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v1.3.0
uses: dependabot/fetch-metadata@v1.6.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
php-lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
Expand All @@ -21,7 +21,7 @@ jobs:
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --ignore-platform-reqs
- name: Run Laravel Pint for CS Fixer
run: ./vendor/bin/pint --config pint.json
- uses: stefanzweifel/git-auto-commit-action@v4
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_user_name: 'dicibibot'
commit_user_email: '[email protected]'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ jobs:
fail-fast: true
matrix:
os: [ubuntu-latest]
php: [8.1]
php: [8.2, 8.3]
stability: [prefer-lowest, prefer-stable]

name: P${{ matrix.php }} - ${{ matrix.stability }} - ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/update-changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: main

Expand All @@ -21,7 +21,7 @@ jobs:
release-notes: ${{ github.event.release.body }}

- name: Commit updated CHANGELOG
uses: stefanzweifel/git-auto-commit-action@v4
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: main
commit_message: Update CHANGELOG
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/vendor
composer.lock
.idea
.phpunit.result.cache
.phpunit.result.cache
.phpunit.cache/
build/
12 changes: 6 additions & 6 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@
],
"require": {
"php": "^8.1",
"illuminate/support": "^8.0|^9.0|^10.0",
"illuminate/console": "^8.0|^9.0|^10.0",
"illuminate/database": "^8.0|^9.0|^10.0",
"illuminate/support": "^8.0|^9.0|^10.0|^11.0",
"illuminate/console": "^8.0|^9.0|^10.0|^11.0",
"illuminate/database": "^8.0|^9.0|^10.0|^11.0",
"league/csv": "^9.8.0"
},
"require-dev": {
"roave/security-advisories": "dev-latest",
"orchestra/testbench": "^8.0",
"orchestra/testbench": "^9.0",
"laravel/pint": "^1.1",
"pestphp/pest": "^1.22"
"pestphp/pest": "^2.34"
},
"autoload": {
"psr-4": {
Expand All @@ -48,7 +48,7 @@
}
},
"scripts": {
"test": "vendor/bin/phpunit",
"test": "vendor/bin/pest",
"post-autoload-dump": [
"@php ./vendor/bin/testbench package:discover --ansi"
]
Expand Down
23 changes: 9 additions & 14 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
bootstrap="vendor/autoload.php"
beStrictAboutTestsThatDoNotTestAnything="false"
colors="true"
verbose="true"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="vendor/autoload.php"
beStrictAboutTestsThatDoNotTestAnything="false" colors="true"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" cacheDirectory=".phpunit.cache">
<coverage>
<include>
<directory suffix=".php">src/</directory>
</include>
<report>
<html outputDirectory="build/coverage"/>
<text outputFile="build/coverage.txt"/>
Expand All @@ -20,8 +14,9 @@
<directory>tests</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_KEY" value="Ouye09O4W6HntsJNuQrJ9AuQTpsyeVuhiohAa4owQQQ"/>
<env name="DB_CONNECTION" value="testing"/>
</php>
</phpunit>
<source>
<include>
<directory>src/</directory>
</include>
</source>
</phpunit>
16 changes: 16 additions & 0 deletions src/Concerns/HasIndonesiaRegionData.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,41 @@

use Dicibi\IndoRegion\Enums\Feature;
use Dicibi\IndoRegion\IndoRegion;
use Dicibi\IndoRegion\Models\District;
use Dicibi\IndoRegion\Models\Province;
use Dicibi\IndoRegion\Models\Regency;
use Dicibi\IndoRegion\Models\Village;
use Illuminate\Database\Eloquent\Relations;

trait HasIndonesiaRegionData
{
/**
* @return Relations\BelongsTo<Province, self>
*/
public function province(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.province'), IndoRegion::getForeignKeyId(Feature::Province));
}

/**
* @return Relations\BelongsTo<Regency, self>
*/
public function regency(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.regency'), IndoRegion::getForeignKeyId(Feature::Regency));
}

/**
* @return Relations\BelongsTo<District, self>
*/
public function district(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.district'), IndoRegion::getForeignKeyId(Feature::District));
}

/**
* @return Relations\BelongsTo<Village, self>
*/
public function village(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.village'), IndoRegion::getForeignKeyId(Feature::Village));
Expand Down
13 changes: 13 additions & 0 deletions src/Contracts/IndoRegionResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,28 @@
use Dicibi\IndoRegion\Models\District;
use Dicibi\IndoRegion\Models\Province;
use Dicibi\IndoRegion\Models\Regency;
use Dicibi\IndoRegion\Models\Village;
use Illuminate\Contracts\Pagination\CursorPaginator;

interface IndoRegionResolver
{
/**
* @return CursorPaginator<int, Province>
*/
public function getProvinces(?string $searchQuery = null): CursorPaginator;

/**
* @return CursorPaginator<int, Regency>
*/
public function getRegencies(Province $province, ?string $searchQuery = null): CursorPaginator;

/**
* @return CursorPaginator<int, District>
*/
public function getDistricts(Regency $regency, ?string $searchQuery = null): CursorPaginator;

/**
* @return CursorPaginator<int, Village>
*/
public function getVillages(District $district, ?string $searchQuery = null): CursorPaginator;
}
2 changes: 0 additions & 2 deletions src/IndoRegionServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ public function boot(): void
$this->publishes([
__DIR__.'/../config' => $this->app->basePath('config'),
], 'indoregion-config');
}

if ($this->app->runningInConsole()) {
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
}
}
Expand Down
18 changes: 13 additions & 5 deletions src/Models/District.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
/**
* District Model.
*
* @property int $id
* @property string $name
* @property Regency $regency
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\Village> $villages
* @property int|string $idn_regency_id
* @property int $id
* @property string $name
* @property Regency $regency
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\Village> $villages
* @property int|string $idn_regency_id
*/
class District extends Model
{
Expand All @@ -41,11 +41,19 @@ public function getTable(): string
return IndoRegion::getTable(Feature::District);
}

/**
* Get the regency that owns the district.
*
* @return Relations\BelongsTo<Regency, self>
*/
public function regency(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.regency'), IndoRegion::getForeignKeyId(Feature::Regency));
}

/**
* @return Relations\HasMany<Village>
*/
public function villages(): Relations\HasMany
{
return $this->hasMany(config('indoregion.models.village'), IndoRegion::getForeignKeyId(Feature::District));
Expand Down
16 changes: 12 additions & 4 deletions src/Models/Province.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
/**
* Province Model.
*
* @property string $name
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\Regency> $regencies
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $districts
* @property int $id
* @property string $name
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\Regency> $regencies
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $districts
* @property int $id
*/
class Province extends Model
{
Expand All @@ -31,11 +31,19 @@ public function getTable(): string
return IndoRegion::getTable(Feature::Province);
}

/**
* Get all the regencies for the Province
*
* @return Relations\HasMany<Regency>
*/
public function regencies(): Relations\HasMany
{
return $this->hasMany(config('indoregion.models.regency'), IndoRegion::getForeignKeyId(Feature::Province));
}

/**
* @return Relations\HasManyThrough<District>
*/
public function districts(): Relations\HasManyThrough
{
return $this->hasManyThrough(
Expand Down
25 changes: 19 additions & 6 deletions src/Models/Regency.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
/**
* Regency Model.
*
* @property string $name
* @property \Dicibi\IndoRegion\Models\Province $province
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $districts
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $villages
* @property int|string $idn_province_id
* @property int $id
* @property string $name
* @property \Dicibi\IndoRegion\Models\Province $province
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $districts
* @property \Illuminate\Database\Eloquent\Collection<int, \Dicibi\IndoRegion\Models\District> $villages
* @property int|string $idn_province_id
* @property int $id
*/
class Regency extends Model
{
Expand All @@ -42,16 +42,29 @@ public function getTable(): string
return IndoRegion::getTable(Feature::Regency);
}

/**
* Get the province that owns the regency.
*
* @return Relations\BelongsTo<Province, self>
*/
public function province(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.province'), IndoRegion::getForeignKeyId(Feature::Province));
}

/**
* Get all the districts for the Regency
*
* @return Relations\HasMany<District>
*/
public function districts(): Relations\HasMany
{
return $this->hasMany(config('indoregion.models.district'), IndoRegion::getForeignKeyId(Feature::Regency));
}

/**
* @return Relations\HasManyThrough<Village>
*/
public function villages(): Relations\HasManyThrough
{
return $this->hasManyThrough(
Expand Down
13 changes: 9 additions & 4 deletions src/Models/Village.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
/**
* Village Model.
*
* @property string $name
* @property \Dicibi\IndoRegion\Models\District $district
* @property int|string $idn_district_id
* @property int $id
* @property string $name
* @property \Dicibi\IndoRegion\Models\District $district
* @property int|string $idn_district_id
* @property int $id
*/
class Village extends Model
{
Expand All @@ -40,6 +40,11 @@ public function getTable(): string
return IndoRegion::getTable(Feature::Village);
}

/**
* Get the district that owns the village.
*
* @return Relations\BelongsTo<District, self>
*/
public function district(): Relations\BelongsTo
{
return $this->belongsTo(config('indoregion.models.district'), IndoRegion::getForeignKeyId(Feature::District));
Expand Down
Loading

0 comments on commit 16625b6

Please sign in to comment.