Skip member when member data is corrupted
This commit is contained in:
parent
35a707dd66
commit
7448a09e5b
|
@ -19,7 +19,7 @@ class PullMemberAction
|
||||||
{
|
{
|
||||||
use AsAction;
|
use AsAction;
|
||||||
|
|
||||||
public function handle(int $groupId, int $memberId): ?Member
|
public function handle(int $groupId, int $memberId): Member
|
||||||
{
|
{
|
||||||
$member = $this->api()->member($groupId, $memberId);
|
$member = $this->api()->member($groupId, $memberId);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ use App\Actions\PullMemberAction;
|
||||||
use App\Actions\PullMembershipsAction;
|
use App\Actions\PullMembershipsAction;
|
||||||
use DB;
|
use DB;
|
||||||
use Zoomyboy\LaravelNami\Api;
|
use Zoomyboy\LaravelNami\Api;
|
||||||
|
use Zoomyboy\LaravelNami\Exceptions\Skippable;
|
||||||
|
|
||||||
class InitializeMembers
|
class InitializeMembers
|
||||||
{
|
{
|
||||||
|
@ -22,7 +23,12 @@ class InitializeMembers
|
||||||
$allMembers = collect([]);
|
$allMembers = collect([]);
|
||||||
|
|
||||||
$this->api->search([])->each(function ($member) {
|
$this->api->search([])->each(function ($member) {
|
||||||
|
try {
|
||||||
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
||||||
|
} catch (Skippable $e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
app(PullMembershipsAction::class)->handle($localMember);
|
app(PullMembershipsAction::class)->handle($localMember);
|
||||||
app(PullCoursesAction::class)->handle($localMember);
|
app(PullCoursesAction::class)->handle($localMember);
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,6 +11,7 @@ use App\Setting\NamiSettings;
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
||||||
|
use Zoomyboy\LaravelNami\Exceptions\MemberDataCorruptedException;
|
||||||
use Zoomyboy\LaravelNami\Fakes\SearchFake;
|
use Zoomyboy\LaravelNami\Fakes\SearchFake;
|
||||||
|
|
||||||
class InitializeMembersTest extends TestCase
|
class InitializeMembersTest extends TestCase
|
||||||
|
@ -31,4 +32,20 @@ class InitializeMembersTest extends TestCase
|
||||||
|
|
||||||
app(InitializeMembers::class)->handle($api);
|
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