Fixed: Dont assign local subactivities when pulling

This commit is contained in:
philipp lang 2023-02-15 01:35:41 +01:00
parent ffd67feb6a
commit 73fb79cd1a
3 changed files with 41 additions and 4 deletions

View File

@ -57,7 +57,7 @@ class InsertMembershipsAction
}
if (null !== $membership->subactivity) {
$subactivity = Subactivity::where('name', $membership->subactivity)->first();
$subactivity = Subactivity::remote()->where('name', $membership->subactivity)->first();
if (!$subactivity) {
return null;

View File

@ -25,4 +25,14 @@ trait HasNamiField
{
return $query->whereNull('nami_id');
}
/**
* @param Builder<self> $query
*
* @return Builder<self>
*/
public static function scopeRemote(Builder $query): Builder
{
return $query->whereNotNull('nami_id');
}
}

View File

@ -112,11 +112,8 @@ class PullMembershipsActionTest extends TestCase
]);
app(MembershipFake::class)->shows(1001, [
'id' => 1077,
'gruppierung' => 'Gruppe',
'gruppierungId' => 1005,
'taetigkeit' => 'ReferentIn',
'taetigkeitId' => 33,
'untergliederung' => 'Pfadfinder',
'untergliederungId' => 55,
'aktivVon' => '2021-08-22 00:00:00',
'aktivBis' => '',
@ -141,6 +138,36 @@ class PullMembershipsActionTest extends TestCase
]);
}
public function testIgnoreLocalSubactivities(): void
{
$member = Member::factory()->defaults()->for(Group::factory()->inNami(90))->inNami(1001)->create();
$group = Group::factory()->inNami(1005)->name('Gruppe')->create();
$activity = Activity::factory()->name('ReferentIn')->inNami(33)->create();
$subactivity = Subactivity::factory()->name('sub')->create();
$actualSubactivity = Subactivity::factory()->name('sub')->inNami(55)->create();
app(MembershipFake::class)->fetches(1001, [
[
'id' => 1077,
'entries_taetigkeit' => 'ReferentIn (33)',
'entries_gruppierung' => 'Gruppe',
'entries_untergliederung' => 'sub',
],
])->shows(1001, [
'id' => 1077,
'gruppierungId' => 1005,
'taetigkeitId' => 33,
'untergliederungId' => 55,
]);
app(ActivityFake::class)->fetches(1005, [['descriptor' => 'ReferentIn2', 'id' => 33]]);
app(SubactivityFake::class)->fetches(33, [['descriptor' => 'Pfadfinder2', 'id' => 55]]);
app(PullMembershipsAction::class)->handle($member);
$this->assertDatabaseHas('memberships', [
'subactivity_id' => $actualSubactivity->id,
]);
}
public function testUpdateExistingMembership(): void
{
$member = Member::factory()