Compare commits

..

18 Commits

Author SHA1 Message Date
philipp lang eaa6482b83 Lint
continuous-integration/drone/push Build is failing Details
2025-07-09 01:10:04 +02:00
philipp lang ea4d770f6d Fix tests 2025-07-09 01:10:04 +02:00
philipp lang b34328c699 Fix tests 2025-07-09 01:10:04 +02:00
philipp lang bb9b35174c Add Contribution Generation for Forms 2025-07-09 01:10:04 +02:00
philipp lang ee9ce464ca Add Country field to forms 2025-07-09 01:10:04 +02:00
philipp lang fea184893c Add special-types to form 2025-07-09 01:10:04 +02:00
philipp lang 4fb8a2c626 Add contribution-documents dataset 2025-07-09 01:10:04 +02:00
philipp lang c025e5e454 Add zip and location to default model 2025-07-09 01:10:04 +02:00
philipp lang 94efb99ea4 Add frontend for form zip and location 2025-07-09 01:10:04 +02:00
philipp lang a3bdf5d9ee Add backend for zip and location form 2025-07-09 01:10:04 +02:00
philipp lang e86073d438 Lint 2025-07-09 01:10:04 +02:00
philipp lang 36145a3c83 Lint 2025-07-09 01:10:04 +02:00
philipp lang e37f01c977 Lint 2025-07-09 01:10:04 +02:00
philipp lang 4dce426e4f Fix: Compile contribution documents without gender 2025-07-09 01:10:04 +02:00
philipp lang f0fbce8e0c Add Special types requirement to contribution documents 2025-07-09 01:10:04 +02:00
philipp lang 49f645ac3f Mod Contribtion validation 2025-07-09 01:10:03 +02:00
philipp lang 6e2f1456aa Lint 2025-07-09 01:08:54 +02:00
philipp lang 67fe88c9b4 nami mglnr should be a string (Fix #4)
continuous-integration/drone/push Build is passing Details
2025-07-09 00:58:39 +02:00
9 changed files with 94 additions and 11 deletions

View File

@ -65,4 +65,4 @@ class ContributionFactory
public function validateType(HasContributionData $request): void {
Validator::make(['type' => $request->type()], $this->typeRule())->validate();
}
}

View File

@ -71,7 +71,7 @@ class InitializeAction
public function asController(ActionRequest $request, NamiSettings $settings): RedirectResponse
{
$settings->mglnr = (int) $request->input('mglnr');
$settings->mglnr = $request->input('mglnr');
$settings->password = $request->input('password');
$settings->default_group_id = (int) $request->input('group_id');
$settings->search_params = $request->input('params');

View File

@ -21,7 +21,7 @@ class NamiGetSearchLayerAction
*/
public function handle(array $input): Collection
{
return Nami::login((int) $input['mglnr'], $input['password'])->searchLayerOptions(
return Nami::login($input['mglnr'], $input['password'])->searchLayerOptions(
SearchLayer::from($input['layer'] ?: 0),
$input['parent'] ?: null
);

View File

@ -16,7 +16,7 @@ class NamiLoginCheckAction
*/
public function handle(array $input): void
{
Nami::freshLogin((int) $input['mglnr'], $input['password']);
Nami::freshLogin($input['mglnr'], $input['password']);
}
/**

View File

@ -4,7 +4,6 @@ namespace App\Setting;
use App\Group;
use App\Initialize\Actions\NamiLoginCheckAction;
use App\Nami\Actions\SettingSaveAction;
use App\Setting\Contracts\Storeable;
use Lorisleiva\Actions\ActionRequest;
use Zoomyboy\LaravelNami\Api;
@ -12,7 +11,7 @@ use Zoomyboy\LaravelNami\Nami;
class NamiSettings extends LocalSettings implements Storeable
{
public int $mglnr;
public string $mglnr;
public string $password;

@ -1 +1 @@
Subproject commit 35bed01848492471d6e4141f303f74ab19d1fc09
Subproject commit 47f01b3c3c98821603f3612511d713cf51a6a14c

View File

@ -15,7 +15,7 @@ class PsPendingBlockTest extends TestCase
public function testItRendersContent(): void
{
$this->withoutExceptionHandling()->withNamiSettings(12345, 'password', 101);
$this->withoutExceptionHandling()->withNamiSettings('12345', 'password', 101);
$group = Group::factory()->inNami(101)->create();
$noPsAtAll = Member::factory()
@ -72,7 +72,7 @@ class PsPendingBlockTest extends TestCase
public function testItExcludesForeignGroups(): void
{
$this->withoutExceptionHandling()->withNamiSettings(12345, 'password', 101);
$this->withoutExceptionHandling()->withNamiSettings('12345', 'password', 101);
Group::factory()->inNami(101)->create();
$otherGroup = Group::factory()->inNami(55)->create();

View File

@ -0,0 +1,84 @@
<?php
namespace Tests\Feature\Nami;
use App\Invoice\InvoiceSettings;
use App\Setting\NamiSettings;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
use Zoomyboy\LaravelNami\Authentication\Auth;
use Zoomyboy\LaravelNami\Nami;
uses(DatabaseTransactions::class);
it('testItDisplaysView', function () {
$this->withoutExceptionHandling()->login()->loginNami();
$this->get(route('setting.view', ['settingGroup' => 'nami']))
->assertOk()
->assertComponent('setting/Nami');
});
it('testDisplaySettings', function () {
$this->withoutExceptionHandling()->login()->loginNami();
app(NamiSettings::class)->fill([
'mglnr' => '0111',
'password' => 'secret',
'default_group_id' => '12345',
'search_params' => [],
])->save();
$this->get(route('setting.data', ['settingGroup' => 'nami']))
->assertOk()
->assertComponent('setting/Nami')
->assertInertiaPath('data.mglnr', '0111')
->assertInertiaPath('data.password', '')
->assertInertiaPath('data.default_group_id', 12345);
});
it('testItCanChangeSettings', function () {
$this->login()->loginNami();
Auth::success(90100, 'secret');
$response = $this->from('/setting/nami')->post('/setting/nami', [
'mglnr' => 90100,
'password' => 'secret',
'default_group_id' => '12345',
'search_params' => [],
]);
$response->assertRedirect('/setting/nami');
$settings = app(NamiSettings::class);
$this->assertEquals(90100, $settings->mglnr);
$this->assertEquals('secret', $settings->password);
$this->assertEquals('12345', $settings->default_group_id);
});
it('validates settings', function () {
$this->login()->loginNami();
$this->from('/setting/nami')->post('/setting/nami', [
'mglnr' => 90100,
'password' => 'fdsfsdfdsf',
'default_group_id' => '12345',
'search_params' => [],
])->assertSessionHasErrors(['nami' => 'NaMi Login fehlgeschlagen.']);
});
it('can set mglnr to a string', function () {
$this->login()->loginNami();
Auth::success('090100', 'secret');
$response = $this->from('/setting/nami')->post('/setting/nami', [
'mglnr' => '090100',
'password' => 'secret',
'default_group_id' => '12345',
'search_params' => [],
]);
$response->assertRedirect('/setting/nami');
$settings = app(NamiSettings::class);
$this->assertSame('090100', $settings->mglnr);
$this->assertEquals('secret', $settings->password);
$this->assertEquals('12345', $settings->default_group_id);
});

View File

@ -37,7 +37,7 @@ class TestCase extends BaseTestCase
$this->initInertiaTestcase();
}
public function loginNami(int $mglnr = 12345, string $password = 'password', int|Group $groupId = 55): static
public function loginNami(string $mglnr = '12345', string $password = 'password', int|Group $groupId = 55): static
{
Auth::success($mglnr, $password);
$group = is_int($groupId)
@ -49,7 +49,7 @@ class TestCase extends BaseTestCase
return $this;
}
public function withNamiSettings(int $mglnr = 12345, string $password = 'password', int $groupId = 55): self
public function withNamiSettings(string $mglnr = '12345', string $password = 'password', int $groupId = 55): self
{
NamiSettings::fake([
'mglnr' => $mglnr,