FakeClient.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace Facade\FlareClient\Tests\Mocks;
  3. use Facade\FlareClient\Http\Client;
  4. use Facade\FlareClient\Http\Response;
  5. use Facade\FlareClient\Tests\TestClasses\Assert;
  6. use Illuminate\Support\Arr;
  7. class FakeClient extends Client
  8. {
  9. protected $requests = [];
  10. public function __construct($apiToken = null, $apiSecret = null)
  11. {
  12. parent::__construct($apiToken ?? uniqid(), $apiSecret ?? uniqid());
  13. }
  14. public function makeCurlRequest(string $httpVerb, string $fullUrl, array $headers = [], array $arguments = []): Response
  15. {
  16. $this->requests[] = compact('httpVerb', 'fullUrl', 'headers', 'arguments');
  17. return new Response([], 'my response', '');
  18. }
  19. public function assertRequestsSent(int $expectedCount)
  20. {
  21. Assert::assertCount($expectedCount, $this->requests);
  22. }
  23. public function assertLastRequestHas($key, $expectedContent = null)
  24. {
  25. Assert::assertGreaterThan(0, count($this->requests), 'There were no requests sent');
  26. $lastPayload = Arr::last($this->requests)['arguments'];
  27. Assert::assertTrue(Arr::has($lastPayload, $key), 'The last payload doesnt have the expected key. '.print_r($lastPayload, true));
  28. if ($expectedContent === null) {
  29. return;
  30. }
  31. $actualContent = Arr::get($lastPayload, $key);
  32. Assert::assertEquals($expectedContent, $actualContent);
  33. }
  34. public function assertLastRequestContains($key, $expectedContent = null)
  35. {
  36. Assert::assertGreaterThan(0, count($this->requests), 'There were no requests sent');
  37. $lastPayload = Arr::last($this->requests)['arguments'];
  38. Assert::assertTrue(Arr::has($lastPayload, $key), 'The last payload doesnt have the expected key. '.print_r($lastPayload, true));
  39. if ($expectedContent === null) {
  40. return;
  41. }
  42. $actualContent = Arr::get($lastPayload, $key);
  43. Assert::assertArraySubset($expectedContent, $actualContent);
  44. }
  45. public function getLastPayload(): ?array
  46. {
  47. return Arr::last($this->requests)['arguments'];
  48. }
  49. }