Skip to content

Commit

Permalink
Fix after bulk method calls (#476)
Browse files Browse the repository at this point in the history
* fix after bulk method calls

* fix number of calls

* revert returns
  • Loading branch information
daniel-banciulea authored Jul 14, 2022
1 parent 5a9b405 commit f849a30
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/Http/Controllers/RepositoryDestroyBulkController.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public function __invoke(RepositoryDestroyBulkRequest $request)
});
});

$request->repository()::deletedBulk($collection, $request);

return ok();
}
}
3 changes: 3 additions & 0 deletions src/Http/Controllers/RepositoryUpdateBulkController.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ public function __invoke(RepositoryUpdateBulkRequest $request)
});
});

$request->repository()::savedBulk($collection, $request);
$request->repository()::updatedBulk($collection, $request);

return $this->response()
->success();
}
Expand Down
17 changes: 12 additions & 5 deletions src/Repositories/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,7 @@ public function storeBulk(RepositoryStoreBulkRequest $request)
});
});

static::savedBulk($entities, $request);
static::storedBulk($entities, $request);

return $this->response()
Expand Down Expand Up @@ -806,8 +807,6 @@ public function updateBulk(RestifyRequest $request, $repositoryId, int $row)
->authorizedUpdateBulk($request)
->each(fn (Field $field) => $field->actionHandler->handle($request, $this->resource, $row));

static::updatedBulk($this->resource, $request);

return response()->json();
}

Expand All @@ -823,8 +822,6 @@ public function deleteBulk(RestifyRequest $request, $repositoryId, int $row)
return $this->resource->delete();
});

static::deleted($status, $request);

return ok(code: 204);
}

Expand Down Expand Up @@ -993,7 +990,17 @@ public static function storedBulk(Collection $repositories, $request)
//
}

public static function updatedBulk($model, $request)
public static function updatedBulk(Collection $repositories, $request)
{
//
}

public static function savedBulk(Collection $repositories, $request)
{
//
}

public static function deletedBulk(Collection $repositories, $request)
{
//
}
Expand Down
129 changes: 129 additions & 0 deletions tests/Unit/RepositoryAfterBulkTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
<?php

namespace Binaryk\LaravelRestify\Tests\Unit;

use Binaryk\LaravelRestify\Restify;
use Binaryk\LaravelRestify\Tests\Fixtures\User\User;
use Binaryk\LaravelRestify\Tests\Fixtures\User\UserRepository;
use Binaryk\LaravelRestify\Tests\IntegrationTest;
use Illuminate\Support\Collection;

class RepositoryAfterBulkTest extends IntegrationTest
{
protected function setUp(): void
{
parent::setUp();

Restify::repositories([
WithAfterBulkOverrides::class,
]);
}

public function test_it_calls_the_overriden_stored_bulk_method(): void
{
$user = User::factory()->make();

$this->postJson(WithAfterBulkOverrides::uriKey().'/bulk', [
[
'name' => $user->name,
'email' => '[email protected]',
'password' => $user->password,
]
])->assertSuccessful();

$this->assertEquals('[email protected]', $user->first()->email);
}

public function test_it_calls_the_overriden_updated_bulk_method(): void
{
$user = User::factory()->create();

$this->postJson(WithAfterBulkOverrides::uriKey().'/bulk/update', [
[
'id' => $user->id,
'email' => '[email protected]',
]
])->assertSuccessful();

$this->assertEquals('[email protected]', $user->fresh()->email);
}

public function test_it_calls_the_overriden_saved_bulk_method_for_create(): void
{
$user = User::factory()->make();

$this->postJson(WithAfterBulkOverrides::uriKey().'/bulk', [
[
'name' => $user->name,
'email' => '[email protected]',
'password' => $user->password,
]
])->assertSuccessful();

$this->assertEquals('John Saved', $user->first()->name);
}

public function test_it_calls_the_overriden_saved_bulk_method_for_update(): void
{
$user = User::factory()->create();

$this->postJson(WithAfterBulkOverrides::uriKey().'/bulk/update', [
[
'id' => $user->id,
'email' => '[email protected]',
]
])->assertSuccessful();

$this->assertEquals('John Saved', $user->fresh()->name);
}

public function test_it_calls_the_overriden_deleted_bulk_method(): void
{
$user = User::factory()->create();

$this->deleteJson(WithAfterBulkOverrides::uriKey().'/bulk/delete', [
$user->id,
])->assertSuccessful();

$this->assertDatabaseHas(User::class, [
'email' => '[email protected]',
]);
}
}

class WithAfterBulkOverrides extends UserRepository
{
public static function storedBulk(Collection $repositories, $request)
{
$user = User::find($repositories->first()['id']);

$user->update([
'email' => '[email protected]',
]);
}

public static function updatedBulk(Collection $repositories, $request)
{
$user = User::find($repositories->first()['id']);

$user->update([
'email' => '[email protected]',
]);
}

public static function savedBulk(Collection $repositories, $request)
{
$user = User::find($repositories->first()['id']);

$user->update([
'name' => 'John Saved',
]);
}

public static function deletedBulk(Collection $repositories, $request)
{
User::factory()->create([
'email' => '[email protected]',
]);
}
}

0 comments on commit f849a30

Please sign in to comment.