Skip member when member data is corrupted
This commit is contained in:
parent
35a707dd66
commit
7448a09e5b
|
@ -19,7 +19,7 @@ class PullMemberAction
|
|||
{
|
||||
use AsAction;
|
||||
|
||||
public function handle(int $groupId, int $memberId): ?Member
|
||||
public function handle(int $groupId, int $memberId): Member
|
||||
{
|
||||
$member = $this->api()->member($groupId, $memberId);
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ use App\Actions\PullMemberAction;
|
|||
use App\Actions\PullMembershipsAction;
|
||||
use DB;
|
||||
use Zoomyboy\LaravelNami\Api;
|
||||
use Zoomyboy\LaravelNami\Exceptions\Skippable;
|
||||
|
||||
class InitializeMembers
|
||||
{
|
||||
|
@ -22,7 +23,12 @@ class InitializeMembers
|
|||
$allMembers = collect([]);
|
||||
|
||||
$this->api->search([])->each(function ($member) {
|
||||
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
||||
try {
|
||||
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
||||
} catch (Skippable $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
app(PullMembershipsAction::class)->handle($localMember);
|
||||
app(PullCoursesAction::class)->handle($localMember);
|
||||
});
|
||||
|
|
|
@ -11,6 +11,7 @@ use App\Setting\NamiSettings;
|
|||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Tests\TestCase;
|
||||
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
||||
use Zoomyboy\LaravelNami\Exceptions\MemberDataCorruptedException;
|
||||
use Zoomyboy\LaravelNami\Fakes\SearchFake;
|
||||
|
||||
class InitializeMembersTest extends TestCase
|
||||
|
@ -31,4 +32,20 @@ class InitializeMembersTest extends TestCase
|
|||
|
||||
app(InitializeMembers::class)->handle($api);
|
||||
}
|
||||
|
||||
public function testFetchesMembersWhenJoinedAtDateIsNull(): void
|
||||
{
|
||||
$this->loginNami();
|
||||
$api = app(NamiSettings::class)->login();
|
||||
app(SearchFake::class)->fetches(1, 0, [
|
||||
MemberEntry::factory()->toMember(['groupId' => 100, 'id' => 20]),
|
||||
MemberEntry::factory()->toMember(['groupId' => 100, 'id' => 21]),
|
||||
]);
|
||||
PullMemberAction::shouldRun()->once()->with(100, 20)->andThrow(MemberDataCorruptedException::class, []);
|
||||
PullMemberAction::shouldRun()->once()->with(100, 21);
|
||||
PullMembershipsAction::shouldRun()->once();
|
||||
PullCoursesAction::shouldRun()->once();
|
||||
|
||||
app(InitializeMembers::class)->handle($api);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue