Compare commits

..

No commits in common. "593386b16bba3ecc7a045ed47a6752c66a266d5b" and "8abe2174306c7440e4659823df8f1a9947d7291b" have entirely different histories.

5 changed files with 33 additions and 21 deletions

View File

@ -18,6 +18,7 @@ use Illuminate\Http\RedirectResponse;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Lorisleiva\Actions\ActionRequest; use Lorisleiva\Actions\ActionRequest;
use Lorisleiva\Actions\Concerns\AsAction; use Lorisleiva\Actions\Concerns\AsAction;
use Zoomyboy\LaravelNami\Api;
use Zoomyboy\LaravelNami\Nami; use Zoomyboy\LaravelNami\Nami;
class InitializeAction class InitializeAction
@ -42,12 +43,12 @@ class InitializeAction
InitializeMembers::class, InitializeMembers::class,
]; ];
public function handle(): void private Api $api;
{
$api = app(NamiSettings::class)->login();
public function handle(int $mglnr, string $password, int $groupId): void
{
foreach ($this->initializers as $initializer) { foreach ($this->initializers as $initializer) {
app($initializer)->handle($api); app($initializer)->handle($this->api);
} }
} }
@ -73,32 +74,38 @@ class InitializeAction
]; ];
} }
public function asController(ActionRequest $request): RedirectResponse public function asController(ActionRequest $request, NamiSettings $settings): RedirectResponse
{ {
$api = Nami::freshLogin($request->input('mglnr'), $request->input('password')); $this->api = Nami::login($request->input('mglnr'), $request->input('password'));
if (!$api->hasGroup($request->input('group_id'))) { if (!$this->api->hasGroup($request->input('group_id'))) {
throw ValidationException::withMessages(['nami' => 'Gruppierung nicht gefunden.']); throw ValidationException::withMessages(['nami' => 'Gruppierung nicht gefunden.']);
} }
$this->setApi((int) $request->input('mglnr'), $request->input('password'), (int) $request->input('group_id')); $settings->mglnr = $request->input('mglnr');
self::dispatch(); $settings->password = $request->input('password');
$settings->default_group_id = $request->input('group_id');
$settings->save();
$this->handle(
(int) $request->input('mglnr', 0),
(string) $request->input('password', ''),
(int) $request->input('group_id', 0)
);
return redirect()->route('home')->success('Initialisierung beauftragt. Wir benachrichtigen dich per Mail wenn alles fertig ist.'); return redirect()->route('home')->success('Initialisierung beauftragt. Wir benachrichtigen dich per Mail wenn alles fertig ist.');
} }
public function asCommand(Command $command): void public function asCommand(Command $command, NamiSettings $settings): void
{ {
$this->setApi((int) $command->option('mglnr'), $command->option('password'), (int) $command->option('group')); $mglnr = (int) $command->option('mglnr');
self::dispatch(); $password = $command->option('password');
} $group = (int) $command->option('group');
$this->api = Nami::login($mglnr, $password);
private function setApi(int $mglnr, string $password, int $groupId): void
{
$settings = app(NamiSettings::class);
$settings->mglnr = $mglnr; $settings->mglnr = $mglnr;
$settings->password = $password; $settings->password = $password;
$settings->default_group_id = $groupId; $settings->default_group_id = $group;
$settings->save(); $settings->save();
$this->handle((int) $mglnr, (string) $password, (int) $group);
} }
} }

2
composer.lock generated
View File

@ -9247,7 +9247,7 @@
"dist": { "dist": {
"type": "path", "type": "path",
"url": "./packages/tex", "url": "./packages/tex",
"reference": "48251272de62e3fea044a7ad31e1a411c15eb4c6" "reference": "6f162102ef7ceca41822d18c3e694abd926f550b"
}, },
"type": "library", "type": "library",
"extra": { "extra": {

@ -1 +1 @@
Subproject commit 75983ebb4bad205629b57e18915b2f15fa38e835 Subproject commit a41b190cc2509ee940967b6c108a557b0a9c5def

View File

@ -564,6 +564,11 @@ parameters:
count: 1 count: 1
path: tests/Feature/Initialize/InitializeActionTest.php path: tests/Feature/Initialize/InitializeActionTest.php
-
message: "#^Call to an undefined method Mockery\\\\ExpectationInterface\\|Mockery\\\\HigherOrderMessage\\:\\:with\\(\\)\\.$#"
count: 1
path: tests/Feature/Initialize/InitializeActionTest.php
- -
message: "#^Call to an undefined method Mockery\\\\ExpectationInterface\\|Mockery\\\\HigherOrderMessage\\:\\:once\\(\\)\\.$#" message: "#^Call to an undefined method Mockery\\\\ExpectationInterface\\|Mockery\\\\HigherOrderMessage\\:\\:once\\(\\)\\.$#"
count: 2 count: 2

View File

@ -26,7 +26,7 @@ class InitializeActionTest extends TestCase
public function testItSetsSettingsBeforeRunningInitializer(): void public function testItSetsSettingsBeforeRunningInitializer(): void
{ {
$this->withoutExceptionHandling()->login(); $this->withoutExceptionHandling()->login();
InitializeAction::partialMock()->shouldReceive('handle')->andReturn(true); InitializeAction::partialMock()->shouldReceive('handle')->with(12345, 'secret', 185)->once()->andReturn(true);
Auth::success(12345, 'secret'); Auth::success(12345, 'secret');
app(GroupFake::class)->fetches(null, [185 => ['name' => 'testgroup']]); app(GroupFake::class)->fetches(null, [185 => ['name' => 'testgroup']]);