ResponseHelperTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Utils;
  4. use PHPUnit\Framework\MockObject\Exception;
  5. use PHPUnit\Framework\TestCase;
  6. use GuzzleHttp\Psr7\HttpFactory;
  7. use Slim\Http\Factory\DecoratedResponseFactory;
  8. use Psr\Http\Message\ServerRequestInterface;
  9. class ResponseHelperTest extends TestCase
  10. {
  11. /**
  12. * @covers App\Utils\ResponseHelper::success
  13. */
  14. public function testSuccess()
  15. {
  16. $guzzleFactory = new HttpFactory();
  17. $responseFactory = new DecoratedResponseFactory($guzzleFactory, $guzzleFactory);
  18. $response = $responseFactory->createResponse();
  19. $msg = 'Success message';
  20. $result = ResponseHelper::success($response, $msg);
  21. $this->assertEquals(200, $result->getStatusCode());
  22. $this->assertEquals('{"ret":1,"msg":"Success message"}', (string) $result->getBody());
  23. }
  24. /**
  25. * @covers App\Utils\ResponseHelper::successWithData
  26. */
  27. public function testSuccessWithData()
  28. {
  29. $guzzleFactory = new HttpFactory();
  30. $responseFactory = new DecoratedResponseFactory($guzzleFactory, $guzzleFactory);
  31. $response = $responseFactory->createResponse();
  32. $msg = 'Success message';
  33. $data = ['foo' => 'bar'];
  34. $result = ResponseHelper::successWithData($response, $msg, $data);
  35. $this->assertEquals(200, $result->getStatusCode());
  36. $this->assertEquals('{"ret":1,"msg":"Success message","data":{"foo":"bar"}}', (string) $result->getBody());
  37. }
  38. /**
  39. * @covers App\Utils\ResponseHelper::error
  40. */
  41. public function testError()
  42. {
  43. $guzzleFactory = new HttpFactory();
  44. $responseFactory = new DecoratedResponseFactory($guzzleFactory, $guzzleFactory);
  45. $response = $responseFactory->createResponse();
  46. $msg = 'Error message';
  47. $result = ResponseHelper::error($response, $msg);
  48. $this->assertEquals(200, $result->getStatusCode());
  49. $this->assertEquals('{"ret":0,"msg":"Error message"}', (string) $result->getBody());
  50. }
  51. /**
  52. * @covers App\Utils\ResponseHelper::errorWithData
  53. */
  54. public function testErrorWithData()
  55. {
  56. $guzzleFactory = new HttpFactory();
  57. $responseFactory = new DecoratedResponseFactory($guzzleFactory, $guzzleFactory);
  58. $response = $responseFactory->createResponse();
  59. $msg = 'Error message';
  60. $data = ['foo' => 'bar'];
  61. $result = ResponseHelper::errorWithData($response, $msg, $data);
  62. $this->assertEquals(200, $result->getStatusCode());
  63. $this->assertEquals('{"ret":0,"msg":"Error message","data":{"foo":"bar"}}', (string) $result->getBody());
  64. }
  65. /**
  66. * @covers App\Utils\ResponseHelper::successWithDataEtag
  67. * @throws Exception
  68. */
  69. public function testSuccessWithDataEtag()
  70. {
  71. $request = $this->createMock(ServerRequestInterface::class);
  72. $request->method('getHeaderLine')->willReturn('');
  73. $guzzleFactory = new HttpFactory();
  74. $responseFactory = new DecoratedResponseFactory($guzzleFactory, $guzzleFactory);
  75. $response = $responseFactory->createResponse();
  76. $data = ['foo' => 'bar'];
  77. $result = ResponseHelper::successWithDataEtag($request, $response, $data);
  78. $this->assertEquals(200, $result->getStatusCode());
  79. $this->assertEquals('{"ret":1,"data":{"foo":"bar"}}', (string) $result->getBody());
  80. $this->assertEquals('W/"e929f5f04818d7ec"', $result->getHeaderLine('ETag'));
  81. }
  82. }