You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.1KB

  1. <?php
  2. namespace Tests\Feature\Http;
  3. use App\Codes\HTTPResultCode;
  4. use App\Logics\QRService\CreateLogic;
  5. use App\Models\HtpmsCustomer\Deposit\Deposit;
  6. use App\Models\HtpmsCustomer\Mst\Shop;
  7. use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting;
  8. use App\Models\HtpmsCustomer\QRService\AcquisitionTicket;
  9. use App\Models\HtpmsCustomer\QRService\AcquisitionTicketToken;
  10. use App\Models\HtpmsCustomer\QRService\ServiceParkingGroup;
  11. use App\Models\HtpmsCustomer\QRService\ServiceParkingGroupRelation;
  12. use App\Util\DateUtil;
  13. use Tests\TestCase;
  14. /**
  15. * @group IF24-02
  16. */
  17. class IF24_02Test extends TestCase
  18. {
  19. protected function tearDown(): void
  20. {
  21. parent::tearDown();
  22. }
  23. protected function setUp(): void
  24. {
  25. parent::setUp();
  26. Shop::truncate();
  27. Deposit::truncate();
  28. AcquisitionAvailableSetting::truncate();
  29. AcquisitionTicket::truncate();
  30. ServiceParkingGroup::truncate();
  31. ServiceParkingGroupRelation::truncate();
  32. AcquisitionTicketToken::truncate();
  33. }
  34. /**
  35. * A basic feature test example.
  36. */
  37. public function test_IF21_01(): void
  38. {
  39. // 店舗作成
  40. $shop = new Shop();
  41. $shop->name = "test shop";
  42. $shop->under_amount_when_auth = 0;
  43. $shop->qr_service_expire_min = 100;
  44. $shop->save();
  45. // デポジット作成
  46. $deposit = new Deposit();
  47. $deposit->shop_id = $shop->id;
  48. $deposit->deposit = 1000;
  49. $deposit->save();
  50. // QRサービス券駐車場グループ作成
  51. $group = new ServiceParkingGroup();
  52. $group->name = "GROUP";
  53. $group->save();
  54. // QRサービス券駐車場グループ紐づけ作成
  55. $groupRelation = new ServiceParkingGroupRelation();
  56. $groupRelation->qr_service_parking_group_id = $group->id;
  57. $groupRelation->parking_management_code = "58993";
  58. $groupRelation->save();
  59. // 設定作成
  60. $setting = new AcquisitionAvailableSetting();
  61. $setting->shop_id = $shop->id;
  62. $setting->shop_no = 55;
  63. $setting->qr_service_parking_group_id = $group->id;
  64. $setting->discount_ticket_code = 10;
  65. $setting->save();
  66. // サービス券取得用トークン作成
  67. $token = CreateLogic::getToken($shop->id);
  68. // サービス券作成
  69. $res = $this->post('/api/qr-service/get-ticket', [
  70. 'token' => $token->token
  71. ]);
  72. $this->assertEquals(HTTPResultCode::SECCESS->value, $res->json("result"));
  73. // print_r($res->json());
  74. // 作成済みのサービス券取得
  75. $ticketId = $res->json("data.ticket_id");
  76. $qr = $res->json("data.data");
  77. $res = $this->post('/api/qr-service/get-ticket', [
  78. 'token' => $token->token,
  79. 'ticket_id' => $ticketId,
  80. ]);
  81. $this->assertEquals(HTTPResultCode::SECCESS->value, $res->json("result"));
  82. $this->assertEquals($ticketId, $res->json("data.ticket_id"));
  83. $this->assertEquals($qr, $res->json("data.data"));
  84. $data = AcquisitionTicket::firstOrFail();
  85. $res = $this->post('/Adjust/CheckQRDiscountTicket', [
  86. "Header" => [
  87. "CustomerCode" => "9990",
  88. "ParkingManagementCode" => "58993",
  89. "AdjusterSerialNo" => 1,
  90. "SendDatetime" => DateUtil::now()->format('YmdHis'),
  91. "ResultCode" => "100",
  92. "InterfaceID" => "IF24-01",
  93. ],
  94. "Body" => [
  95. "QRCodeType" => 4,
  96. "PublishingTerminalCode" => "01",
  97. "PublishingDate" => DateUtil::now()->format('Ymd'),
  98. "PublishingNo" => $data->publishing_no,
  99. "ShopNo" => $setting->shop_no,
  100. "DiscountTicketCode" => $setting->discount_ticket_code,
  101. "AdjustDatetime" => DateUtil::now()->format('YmdHi'),
  102. "DiscountAmount" => 100,
  103. ]
  104. ]);
  105. // print_r($res->json());
  106. // print_r(AcquisitionTicket::all()->toArray());
  107. $this->assertEquals("100", $res->json("Header.ResultCode"));
  108. }
  109. }