Add callable for fakes
This commit is contained in:
parent
f905c316ee
commit
7189511a55
|
@ -56,4 +56,29 @@ abstract class Fake
|
||||||
{
|
{
|
||||||
return Http::response('<html></html>');
|
return Http::response('<html></html>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function assertBodyMatches(string $is, array|callable $should): bool
|
||||||
|
{
|
||||||
|
$requestBody = json_decode($is, true);
|
||||||
|
|
||||||
|
if (!is_array($requestBody)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_callable($should)) {
|
||||||
|
return $should($requestBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($should as $key => $value) {
|
||||||
|
if (!array_key_exists($key, $requestBody)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($requestBody[$key] !== $value) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,9 +121,9 @@ class MemberFake extends Fake
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|int|bool|null> $body
|
* @param array<string, string|int|bool|null>|callable $body
|
||||||
*/
|
*/
|
||||||
public function assertStored(int $groupId, array $body): void
|
public function assertStored(int $groupId, array|callable $body): void
|
||||||
{
|
{
|
||||||
Http::assertSent(function ($request) use ($groupId, $body) {
|
Http::assertSent(function ($request) use ($groupId, $body) {
|
||||||
$url = "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$groupId}";
|
$url = "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$groupId}";
|
||||||
|
@ -132,26 +132,14 @@ class MemberFake extends Fake
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$requestBody = json_decode($request->body(), true);
|
return $this->assertBodyMatches($request->body(), $body);
|
||||||
|
|
||||||
foreach ($body as $key => $value) {
|
|
||||||
if (!array_key_exists($key, $requestBody)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($requestBody[$key] !== $value) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, string|int|bool|null> $body
|
* @param array<string, string|int|bool|null>|callable $body
|
||||||
*/
|
*/
|
||||||
public function assertUpdated(int $groupId, int $memberId, array $body): void
|
public function assertUpdated(int $groupId, int $memberId, array|callable $body): void
|
||||||
{
|
{
|
||||||
Http::assertSent(function ($request) use ($groupId, $memberId, $body) {
|
Http::assertSent(function ($request) use ($groupId, $memberId, $body) {
|
||||||
$url = "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$groupId}/{$memberId}";
|
$url = "https://nami.dpsg.de/ica/rest/nami/mitglied/filtered-for-navigation/gruppierung/gruppierung/{$groupId}/{$memberId}";
|
||||||
|
@ -160,19 +148,7 @@ class MemberFake extends Fake
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$requestBody = json_decode($request->body(), true);
|
return $this->assertBodyMatches($request->body(), $body);
|
||||||
|
|
||||||
foreach ($body as $key => $value) {
|
|
||||||
if (!array_key_exists($key, $requestBody)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($requestBody[$key] !== $value) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ class MembershipFake extends Fake
|
||||||
public function fetches(int $memberId, array $membershipIds): self
|
public function fetches(int $memberId, array $membershipIds): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId, $membershipIds) {
|
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';
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/flist';
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->collection(collect($membershipIds)->map(function ($membership) {
|
return $this->collection(collect($membershipIds)->map(function ($membership) {
|
||||||
return [
|
return [
|
||||||
|
@ -36,7 +36,7 @@ class MembershipFake extends Fake
|
||||||
public function failsFetching(int $memberId, string $error = 'Error'): self
|
public function failsFetching(int $memberId, string $error = 'Error'): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId, $error) {
|
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';
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/flist';
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->errorResponse($error);
|
return $this->errorResponse($error);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ class MembershipFake extends Fake
|
||||||
public function failsFetchingWithHtml(int $memberId): self
|
public function failsFetchingWithHtml(int $memberId): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId) {
|
Http::fake(function ($request) use ($memberId) {
|
||||||
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/flist';
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/flist';
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->htmlResponse();
|
return $this->htmlResponse();
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ class MembershipFake extends Fake
|
||||||
public function shows(int $memberId, array $data): self
|
public function shows(int $memberId, array $data): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId, $data) {
|
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'];
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/' . $data['id'];
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->dataResponse(array_merge([
|
return $this->dataResponse(array_merge([
|
||||||
'id' => 68,
|
'id' => 68,
|
||||||
|
@ -85,7 +85,7 @@ class MembershipFake extends Fake
|
||||||
public function failsShowing(int $memberId, int $membershipId, ?string $error = 'Error'): self
|
public function failsShowing(int $memberId, int $membershipId, ?string $error = 'Error'): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId, $membershipId, $error) {
|
Http::fake(function ($request) use ($memberId, $membershipId, $error) {
|
||||||
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/'.$membershipId;
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/' . $membershipId;
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->errorResponse($error);
|
return $this->errorResponse($error);
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ class MembershipFake extends Fake
|
||||||
public function failsShowingWithHtml(int $memberId, int $membershipId): self
|
public function failsShowingWithHtml(int $memberId, int $membershipId): self
|
||||||
{
|
{
|
||||||
Http::fake(function ($request) use ($memberId, $membershipId) {
|
Http::fake(function ($request) use ($memberId, $membershipId) {
|
||||||
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/'.$membershipId;
|
$url = 'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/' . $memberId . '/' . $membershipId;
|
||||||
if ($request->url() === $url && 'GET' === $request->method()) {
|
if ($request->url() === $url && 'GET' === $request->method()) {
|
||||||
return $this->htmlResponse();
|
return $this->htmlResponse();
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ class MembershipFake extends Fake
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function assertCreated(int $memberId, array $payload): void
|
public function assertCreated(int $memberId, array|callable $payload): void
|
||||||
{
|
{
|
||||||
$url = "https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/{$memberId}";
|
$url = "https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/{$memberId}";
|
||||||
|
|
||||||
|
@ -189,39 +189,9 @@ class MembershipFake extends Fake
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$requestBody = json_decode($request->body(), true);
|
return $this->assertBodyMatches($request->body(), $payload);
|
||||||
|
|
||||||
foreach ($payload as $key => $value) {
|
|
||||||
if (!array_key_exists($key, $requestBody)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($requestBody[$key] !== $value) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function assertUpdated(int $memberId, array $payload): void
|
public function assertUpdated(int $memberId, array $payload): void
|
||||||
{
|
{
|
||||||
$url = "https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/{$memberId}/{$payload['id']}";
|
|
||||||
Http::assertSent(function ($request) use ($url, $payload) {
|
|
||||||
if ($request->url() !== $url || 'PUT' !== $request->method()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data_get($request, 'id') !== $payload['id']) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data_get($request, 'aktivBis') !== data_get($payload, 'aktivBis')) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue