Skip to content

Commit

Permalink
EntityTest completed;
Browse files Browse the repository at this point in the history
  • Loading branch information
hans-thomas committed May 1, 2023
1 parent 80939e2 commit 478468e
Show file tree
Hide file tree
Showing 2 changed files with 273 additions and 43 deletions.
78 changes: 35 additions & 43 deletions src/Commands/Entity.php
Original file line number Diff line number Diff line change
@@ -1,57 +1,49 @@
<?php

namespace Hans\Valravn\Commands;
namespace Hans\Valravn\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Throwable;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Throwable;

class Entity extends Command {
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'valravn:entity {name} {--namespace=} {--v=v1}';
class Entity extends Command {
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'valravn:entity {namespace} {name} {--v=1}';

/**
* The console command description.
*
* @var string
*/
protected $description = 'creates an entity includes controllers, requests, resources, model and migration, seeder and factory and more.';
/**
* The console command description.
*
* @var string
*/
protected $description = 'creates an entity includes controllers, requests, resources, model and migration, seeder and factory and more.';

/**
* Execute the console command.
*
* @return void
* @throws Throwable
*/
public function handle() {
$name = $this->argument( 'name' );
$namespace = $this->option( 'namespace' );
$version = $this->option( 'v' );
/**
* Execute the console command.
*
* @return void
* @throws Throwable
*/
public function handle() {
$name = $this->argument( 'name' );
$namespace = $this->argument( 'namespace' );
$version = 'V' . filter_var( $this->option( 'v' ), FILTER_SANITIZE_NUMBER_INT );

if ( ! $namespace ) {
$this->error( 'namespace is required!' );
Artisan::call( "valravn:exception $namespace $name" );

return;
}
Artisan::call( "valravn:model $namespace $name --seeder --factory --migration" );

Artisan::call( "valravn:exception $name --namespace $namespace" );
Artisan::call( "valravn:controllers $namespace $name --v $version --requests --resources" );

Artisan::call( "valravn:model $name --namespace $namespace -sfm" );
Artisan::call( "valravn:policy $namespace $name" );

Artisan::call( "valravn:migration $name --namespace $namespace" );
Artisan::call( "valravn:repository $namespace $name" );

Artisan::call( "valravn:controllers $name --namespace $namespace --v $version --requests --resources" );
Artisan::call( "valravn:service $namespace $name --relations --actions" );

Artisan::call( "valravn:policy $name --namespace $namespace" );
}

Artisan::call( "valravn:repository $name --namespace $namespace" );

Artisan::call( "valravn:service $name --namespace $namespace --relations" );

}

}
}
238 changes: 238 additions & 0 deletions tests/Feature/Commands/EntityTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
<?php

namespace Hans\Tests\Valravn\Feature\Commands;

use Hans\Tests\Valravn\TestCase;
use Illuminate\Support\Facades\File;

class EntityTest extends TestCase {

/**
* @test
*
* @return void
*/
public function entity(): void {
$exception = app_path( "Exceptions/Blog/Post/PostException.php" );
$errorCode = app_path( "Exceptions/Blog/Post/PostErrorCode.php" );

$model = app_path( "Models/Blog/Post.php" );
$factory = base_path( "database/factories/Blog/PostFactory.php" );
$seeder = base_path( "database/seeders/Blog/PostSeeder.php" );
$datePrefix = now()->format( 'Y_m_d_His' );
$migration = base_path( "database/migrations/Blog/{$datePrefix}_create_posts_table.php" );

$crud = app_path( "Http/Controllers/V1/Blog/Post/PostCrudController.php" );
$relations = app_path( "Http/Controllers/V1/Blog/Post/PostRelationsController.php" );
$actions = app_path( "Http/Controllers/V1/Blog/Post/PostActionsController.php" );
$store = app_path( "Http/Requests/V1/Blog/Post/PostStoreRequest.php" );
$update = app_path( "Http/Requests/V1/Blog/Post/PostUpdateRequest.php" );
$resource = app_path( "Http/Resources/V1/Blog/Post/PostResource.php" );
$collection = app_path( "Http/Resources/V1/Blog/Post/PostCollection.php" );

$policy = app_path( "Policies/Blog/PostPolicy.php" );

$contract = app_path( "Repositories/Contracts/Blog/IPostRepository.php" );
$repository = app_path( "Repositories/Blog/PostRepository.php" );

$crudService = app_path( "Services/Blog/Post/PostCrudService.php" );
$relationsService = app_path( "Services/Blog/Post/PostRelationsService.php" );
$actionsService = app_path( "Services/Blog/Post/PostActionsService.php" );

File::delete( [
$exception,
$errorCode,

$model,
$factory,
$seeder,
$migration,

$crud,
$relations,
$actions,
$store,
$update,
$resource,
$collection,

$policy,

$contract,
$repository,

$crudService,
$relationsService,
$actionsService,
] );

self::assertFileDoesNotExist( $exception );
self::assertFileDoesNotExist( $errorCode );

self::assertFileDoesNotExist( $model );
self::assertFileDoesNotExist( $factory );
self::assertFileDoesNotExist( $seeder );
self::assertFileDoesNotExist( $migration );

self::assertFileDoesNotExist( $crud );
self::assertFileDoesNotExist( $relations );
self::assertFileDoesNotExist( $actions );
self::assertFileDoesNotExist( $store );
self::assertFileDoesNotExist( $update );
self::assertFileDoesNotExist( $resource );
self::assertFileDoesNotExist( $collection );

self::assertFileDoesNotExist( $policy );

self::assertFileDoesNotExist( $contract );
self::assertFileDoesNotExist( $repository );

self::assertFileDoesNotExist( $crudService );
self::assertFileDoesNotExist( $relationsService );
self::assertFileDoesNotExist( $actionsService );

$command = $this->artisan( "valravn:entity blog posts" );
$command->execute();

self::assertFileExists( $exception );
self::assertFileExists( $errorCode );

self::assertFileExists( $model );
self::assertFileExists( $factory );
self::assertFileExists( $seeder );
self::assertFileExists( $migration );

self::assertFileExists( $crud );
self::assertFileExists( $relations );
self::assertFileExists( $actions );
self::assertFileExists( $store );
self::assertFileExists( $update );
self::assertFileExists( $resource );
self::assertFileExists( $collection );

self::assertFileExists( $policy );

self::assertFileExists( $contract );
self::assertFileExists( $repository );

self::assertFileExists( $crudService );
self::assertFileExists( $relationsService );
self::assertFileExists( $actionsService );
}

/**
* @test
*
* @return void
*/
public function version(): void {
$exception = app_path( "Exceptions/Blog/Post/PostException.php" );
$errorCode = app_path( "Exceptions/Blog/Post/PostErrorCode.php" );

$model = app_path( "Models/Blog/Post.php" );
$factory = base_path( "database/factories/Blog/PostFactory.php" );
$seeder = base_path( "database/seeders/Blog/PostSeeder.php" );
$datePrefix = now()->format( 'Y_m_d_His' );
$migration = base_path( "database/migrations/Blog/{$datePrefix}_create_posts_table.php" );

$crud = app_path( "Http/Controllers/V2/Blog/Post/PostCrudController.php" );
$relations = app_path( "Http/Controllers/V2/Blog/Post/PostRelationsController.php" );
$actions = app_path( "Http/Controllers/V2/Blog/Post/PostActionsController.php" );
$store = app_path( "Http/Requests/V2/Blog/Post/PostStoreRequest.php" );
$update = app_path( "Http/Requests/V2/Blog/Post/PostUpdateRequest.php" );
$resource = app_path( "Http/Resources/V2/Blog/Post/PostResource.php" );
$collection = app_path( "Http/Resources/V2/Blog/Post/PostCollection.php" );

$policy = app_path( "Policies/Blog/PostPolicy.php" );

$contract = app_path( "Repositories/Contracts/Blog/IPostRepository.php" );
$repository = app_path( "Repositories/Blog/PostRepository.php" );

$crudService = app_path( "Services/Blog/Post/PostCrudService.php" );
$relationsService = app_path( "Services/Blog/Post/PostRelationsService.php" );
$actionsService = app_path( "Services/Blog/Post/PostActionsService.php" );

File::delete( [
$exception,
$errorCode,

$model,
$factory,
$seeder,
$migration,

$crud,
$relations,
$actions,
$store,
$update,
$resource,
$collection,

$policy,

$contract,
$repository,

$crudService,
$relationsService,
$actionsService,
] );

self::assertFileDoesNotExist( $exception );
self::assertFileDoesNotExist( $errorCode );

self::assertFileDoesNotExist( $model );
self::assertFileDoesNotExist( $factory );
self::assertFileDoesNotExist( $seeder );
self::assertFileDoesNotExist( $migration );

self::assertFileDoesNotExist( $crud );
self::assertFileDoesNotExist( $relations );
self::assertFileDoesNotExist( $actions );
self::assertFileDoesNotExist( $store );
self::assertFileDoesNotExist( $update );
self::assertFileDoesNotExist( $resource );
self::assertFileDoesNotExist( $collection );

self::assertFileDoesNotExist( $policy );

self::assertFileDoesNotExist( $contract );
self::assertFileDoesNotExist( $repository );

self::assertFileDoesNotExist( $crudService );
self::assertFileDoesNotExist( $relationsService );
self::assertFileDoesNotExist( $actionsService );

$command = $this->artisan( "valravn:entity blog posts --v 2" );
$command->execute();

self::assertFileExists( $exception );
self::assertFileExists( $errorCode );

self::assertFileExists( $model );
self::assertFileExists( $factory );
self::assertFileExists( $seeder );
self::assertFileExists( $migration );

self::assertFileExists( $crud );
self::assertFileExists( $relations );
self::assertFileExists( $actions );
self::assertFileExists( $store );
self::assertFileExists( $update );
self::assertFileExists( $resource );
self::assertFileExists( $collection );

self::assertFileExists( $policy );

self::assertFileExists( $contract );
self::assertFileExists( $repository );

self::assertFileExists( $crudService );
self::assertFileExists( $relationsService );
self::assertFileExists( $actionsService );

}


}

0 comments on commit 478468e

Please sign in to comment.