Fixed: run initialize members as command
This commit is contained in:
parent
ae922bbee1
commit
ecffc258df
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Console;
|
namespace App\Console;
|
||||||
|
|
||||||
use App\Initialize\Actions\InitializeAction;
|
use App\Initialize\Actions\InitializeAction;
|
||||||
|
use App\Initialize\InitializeMembers;
|
||||||
use App\Letter\Actions\LetterSendAction;
|
use App\Letter\Actions\LetterSendAction;
|
||||||
use Illuminate\Console\Scheduling\Schedule;
|
use Illuminate\Console\Scheduling\Schedule;
|
||||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||||
|
@ -18,6 +19,7 @@ class Kernel extends ConsoleKernel
|
||||||
protected $commands = [
|
protected $commands = [
|
||||||
LetterSendAction::class,
|
LetterSendAction::class,
|
||||||
InitializeAction::class,
|
InitializeAction::class,
|
||||||
|
InitializeMembers::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,24 +5,24 @@ namespace App\Initialize;
|
||||||
use App\Actions\PullCoursesAction;
|
use App\Actions\PullCoursesAction;
|
||||||
use App\Actions\PullMemberAction;
|
use App\Actions\PullMemberAction;
|
||||||
use App\Actions\PullMembershipsAction;
|
use App\Actions\PullMembershipsAction;
|
||||||
|
use App\Setting\NamiSettings;
|
||||||
use DB;
|
use DB;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Lorisleiva\Actions\Concerns\AsAction;
|
||||||
use Zoomyboy\LaravelNami\Api;
|
use Zoomyboy\LaravelNami\Api;
|
||||||
use Zoomyboy\LaravelNami\Exceptions\Skippable;
|
use Zoomyboy\LaravelNami\Exceptions\Skippable;
|
||||||
|
|
||||||
class InitializeMembers
|
class InitializeMembers
|
||||||
{
|
{
|
||||||
private Api $api;
|
use AsAction;
|
||||||
|
|
||||||
public function __construct(Api $api)
|
public $commandSignature = 'member:pull';
|
||||||
{
|
|
||||||
$this->api = $api;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function handle(): void
|
public function handle(Api $api): void
|
||||||
{
|
{
|
||||||
$allMembers = collect([]);
|
$allMembers = collect([]);
|
||||||
|
|
||||||
$this->api->search([])->each(function ($member) {
|
$api->search([])->each(function ($member) {
|
||||||
try {
|
try {
|
||||||
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
$localMember = app(PullMemberAction::class)->handle($member->groupId, $member->id);
|
||||||
} catch (Skippable $e) {
|
} catch (Skippable $e) {
|
||||||
|
@ -41,4 +41,11 @@ class InitializeMembers
|
||||||
DB::table('memberships')->delete();
|
DB::table('memberships')->delete();
|
||||||
DB::table('members')->delete();
|
DB::table('members')->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function asCommand(Command $command): int
|
||||||
|
{
|
||||||
|
$this->handle(app(NamiSettings::class)->login());
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ use App\Initialize\InitializeMembers;
|
||||||
use App\Member\Member;
|
use App\Member\Member;
|
||||||
use App\Setting\NamiSettings;
|
use App\Setting\NamiSettings;
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
||||||
use Zoomyboy\LaravelNami\Exceptions\MemberDataCorruptedException;
|
use Zoomyboy\LaravelNami\Exceptions\MemberDataCorruptedException;
|
||||||
|
@ -48,4 +49,19 @@ class InitializeMembersTest extends TestCase
|
||||||
|
|
||||||
app(InitializeMembers::class)->handle($api);
|
app(InitializeMembers::class)->handle($api);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFetchesMembersViaCommandLine(): void
|
||||||
|
{
|
||||||
|
$this->loginNami();
|
||||||
|
$api = app(NamiSettings::class)->login();
|
||||||
|
|
||||||
|
app(SearchFake::class)->fetches(1, 0, [
|
||||||
|
MemberEntry::factory()->toMember(['groupId' => 100, 'id' => 20]),
|
||||||
|
]);
|
||||||
|
PullMemberAction::shouldRun()->once()->with(100, 20);
|
||||||
|
PullMembershipsAction::shouldRun()->once();
|
||||||
|
PullCoursesAction::shouldRun()->once();
|
||||||
|
|
||||||
|
Artisan::call('member:pull');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue