Add membership member test
This commit is contained in:
parent
33ab14f51e
commit
534ce18491
|
@ -3,6 +3,7 @@
|
||||||
namespace Zoomyboy\LaravelNami\Fakes;
|
namespace Zoomyboy\LaravelNami\Fakes;
|
||||||
|
|
||||||
use GuzzleHttp\Promise\PromiseInterface;
|
use GuzzleHttp\Promise\PromiseInterface;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
abstract class Fake {
|
abstract class Fake {
|
||||||
|
@ -15,6 +16,22 @@ abstract class Fake {
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function collection(Collection $collection): PromiseInterface
|
||||||
|
{
|
||||||
|
return Http::response(json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'data' => $collection->toArray(),
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function data(array $data): PromiseInterface
|
||||||
|
{
|
||||||
|
return Http::response(json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'data' => $data,
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
|
||||||
public function htmlResponse(): PromiseInterface
|
public function htmlResponse(): PromiseInterface
|
||||||
{
|
{
|
||||||
return Http::response('<html></html>');
|
return Http::response('<html></html>');
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Zoomyboy\LaravelNami\Fakes;
|
||||||
|
|
||||||
|
use Illuminate\Http\Client\Response;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
|
class MembershipFake extends Fake {
|
||||||
|
|
||||||
|
public function fetches(int $memberId, array $membershipIds): self
|
||||||
|
{
|
||||||
|
Http::fake(function($request) use ($memberId, $membershipIds) {
|
||||||
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/flist';
|
||||||
|
if ($request->url() === $url && $request->method() === 'GET') {
|
||||||
|
return $this->collection(collect($membershipIds)->map(fn ($membershipId) => ['id' => $membershipId]));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetchFails(int $memberId, string $error): self
|
||||||
|
{
|
||||||
|
Http::fake(function($request) use ($memberId, $error) {
|
||||||
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/flist';
|
||||||
|
if ($request->url() === $url && $request->method() === 'GET') {
|
||||||
|
return $this->errorResponse($error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function shows(int $memberId, array $data): self
|
||||||
|
{
|
||||||
|
Http::fake(function($request) use ($memberId, $data) {
|
||||||
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/'.$data['id'];
|
||||||
|
if ($request->url() === $url && $request->method() === 'GET') {
|
||||||
|
return $this->data(array_merge([
|
||||||
|
"id" => 68,
|
||||||
|
"gruppierung" => "Diözesanleitung Köln 100000",
|
||||||
|
"gruppierungId" => 103,
|
||||||
|
"taetigkeit" => "ReferentIn",
|
||||||
|
"taetigkeitId" => 33,
|
||||||
|
"untergliederung" => "Pfadfinder",
|
||||||
|
"untergliederungId" => 55,
|
||||||
|
"aktivVon" => "2017-02-11 00:00:00",
|
||||||
|
"aktivBis" => "2017-03-11 00:00:00"
|
||||||
|
], $data));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Zoomyboy\LaravelNami\Tests\Unit;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Zoomyboy\LaravelNami\Fakes\MembershipFake;
|
||||||
|
use Zoomyboy\LaravelNami\Member;
|
||||||
|
use Zoomyboy\LaravelNami\Nami;
|
||||||
|
use Zoomyboy\LaravelNami\Tests\TestCase;
|
||||||
|
|
||||||
|
class MemberTest extends TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
public function test_get_memberships_of_a_member(): void
|
||||||
|
{
|
||||||
|
app(MembershipFake::class)
|
||||||
|
->fetches(16, [68, 69])
|
||||||
|
->shows(16, [
|
||||||
|
"id" => 68,
|
||||||
|
]);
|
||||||
|
$this->login();
|
||||||
|
$member = new Member(['id' => 16]);
|
||||||
|
|
||||||
|
$membership = $member->memberships()->first();
|
||||||
|
|
||||||
|
$this->assertEquals(68, $membership->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testWith ["Access denied - no right for requested operation", "Sicherheitsverletzung: Zugriff auf Rechte Recht (n:2001002 o:2) fehlgeschlagen"]
|
||||||
|
*/
|
||||||
|
public function test_it_gets_no_memberships_with_no_rights(string $error): void
|
||||||
|
{
|
||||||
|
app(MembershipFake::class)->fetchFails(16, $error);
|
||||||
|
$this->login();
|
||||||
|
$member = new Member(['id' => 16]);
|
||||||
|
|
||||||
|
$memberships = $member->memberships();
|
||||||
|
|
||||||
|
$this->assertSame([], $member->memberships()->toArray());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue