Pull membeer before pushing

This commit is contained in:
philipp lang 2022-02-11 01:23:31 +01:00
parent 326761e88d
commit b833537f32
3 changed files with 13 additions and 4 deletions

View File

@ -125,8 +125,12 @@ class Api {
public function putMember(array $attributes) { public function putMember(array $attributes) {
$member = Member::fromAttributes($attributes); $member = Member::fromAttributes($attributes);
$existing = $this->member($member->group_id, $member->id);
if (data_get($attributes, 'id')) { if (data_get($attributes, 'id')) {
$response = $this->http()->put(self::$url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$member->group_id.'/'.$member->id, $member->toNami()); $response = $this->http()->put(
self::$url.'/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/'.$member->group_id.'/'.$member->id,
array_merge($existing, $member->toNami())
);
if (data_get($response->json(), 'success') !== true) { if (data_get($response->json(), 'success') !== true) {
$this->exception('Update failed', $member->toNami(), $response->json()); $this->exception('Update failed', $member->toNami(), $response->json());
} }

View File

@ -67,6 +67,11 @@ class FakeBackend {
return $this->fakeMembers([$data]); return $this->fakeMembers([$data]);
} }
public function singleMemberUrl(int $gruppierungId, int $memberId): string
{
return "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$gruppierungId}/{$memberId}";
}
/** /**
* @param array<int, array<string, mixed>> $data * @param array<int, array<string, mixed>> $data
*/ */
@ -74,7 +79,7 @@ class FakeBackend {
{ {
Http::fake(function($request) use ($data) { Http::fake(function($request) use ($data) {
foreach ($data as $member) { foreach ($data as $member) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$member['gruppierungId']}/{$member['id']}") { if ($request->url() === $this->singleMemberUrl($member['gruppierungId'], $member['id']) && $request->method() === 'GET') {
$content = [ $content = [
'success' => true, 'success' => true,
'data' => $member, 'data' => $member,

View File

@ -58,7 +58,7 @@ class PushMemberTest extends TestCase
$this->assertEquals(16, $res['id']); $this->assertEquals(16, $res['id']);
Http::assertSent(function($request) use ($check) { Http::assertSent(function($request) use ($check) {
if ($request->url() != 'https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/103/16') { if ($request->url() != 'https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/103/16' || $request->method() !== 'PUT') {
return false; return false;
} }
@ -71,7 +71,7 @@ class PushMemberTest extends TestCase
return $request->method() === 'PUT'; return $request->method() === 'PUT';
}); });
Http::assertSentCount(1); Http::assertSentCount(2);
} }
} }