SetExceptionStatusTest.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. namespace Tests\Services\LogisticSFService;
  3. use App\OrderPackage;
  4. use App\Services\LogisticSFService;
  5. use Tests\TestCase;
  6. class SetExceptionStatusTest extends TestCase
  7. {
  8. /**
  9. * @var LogisticSFService $service
  10. */
  11. private $service;
  12. protected function setUp(): void
  13. {
  14. parent::setUp(); // TODO: Change the autogenerated stub
  15. $this->service = app('LogisticSFService');
  16. }
  17. public function test_单号异常()
  18. {
  19. OrderPackage::query()->where('logistic_number', 'SF1332897469263_1')->delete();
  20. $data = [
  21. "logistic_number" => "SF1332897469263_1",
  22. "status" => "已签收",
  23. "received_at" => "2021-09-09 12:11:03",
  24. "transfer_status" => [
  25. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  26. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  27. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  28. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  29. ],
  30. ];
  31. factory(OrderPackage::class)->create([
  32. 'status' => "生成订单",
  33. 'exception_status' => "单号异常",
  34. 'logistic_number' => 'SF1332897469263_1',
  35. ]);
  36. $response = $this->service->setExceptionStatus($data);
  37. OrderPackage::query()->where('logistic_number', 'SF1332897469263_1')->delete();
  38. $this->assertEquals($data, $response);
  39. }
  40. public function test_延迟发货_16()
  41. {
  42. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  43. $data = [
  44. "logistic_number" => "SF1332897469263",
  45. "status" => "已签收",
  46. "received_at" => "2021-09-09 12:11:03",
  47. "transfer_status" => [],
  48. ];
  49. factory(OrderPackage::class)->create([
  50. 'status' => "生成订单",
  51. 'logistic_number' => 'SF1332897469263',
  52. 'transfer_status' => null,
  53. 'sent_at' => null,
  54. 'created_at' => now()->subDays(3),
  55. ]);
  56. $response = $this->service->setExceptionStatus($data);
  57. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  58. $this->assertEquals('延迟发货', $response['exception_status']);
  59. }
  60. public function test_疑似库内丢件()
  61. {
  62. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  63. $data = [
  64. "logistic_number" => "SF1332897469263",
  65. "status" => "已签收",
  66. "received_at" => "2021-09-09 12:11:03",
  67. "transfer_status" => [],
  68. ];
  69. factory(OrderPackage::class)->create([
  70. 'status' => "生成订单",
  71. 'logistic_number' => 'SF1332897469263',
  72. 'transfer_status' => null,
  73. 'sent_at' => now()->subDays(3),
  74. 'created_at' => now()->subDays(3),
  75. 'weighed_at' => null,
  76. ]);
  77. $response = $this->service->setExceptionStatus($data);
  78. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  79. $this->assertEquals('疑似库内丢件', $response['exception_status']);
  80. }
  81. public function test_揽件异常()
  82. {
  83. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  84. $data = [
  85. "logistic_number" => "SF1332897469263",
  86. "status" => "已签收",
  87. "received_at" => "2021-09-09 12:11:03",
  88. "transfer_status" => [],
  89. ];
  90. factory(OrderPackage::class)->create([
  91. 'status' => "生成订单",
  92. 'logistic_number' => 'SF1332897469263',
  93. 'transfer_status' => null,
  94. 'sent_at' => now()->subDays(3),
  95. 'created_at' => now()->subDays(3),
  96. 'weighed_at' => now()->subDays(2),
  97. ]);
  98. $response = $this->service->setExceptionStatus($data);
  99. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  100. $this->assertEquals('揽件异常', $response['exception_status']);
  101. }
  102. public function test_在途异常大于3上海()
  103. {
  104. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  105. $data = [
  106. "logistic_number" => "SF1332897469263",
  107. "status" => "在途",
  108. "received_at" => null,
  109. "transfer_status" => [
  110. ["accept_time" => "2021-09-06 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  111. ["accept_time" => "2021-09-07 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  112. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  113. ["accept_time" => now()->subHours(25)->toDateTimeString(), "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  114. //最近一条是在24h前
  115. ],
  116. ];
  117. $order = factory(\App\Order::class)->create([
  118. 'province' =>'上海'
  119. ]);
  120. factory(OrderPackage::class)->create([
  121. 'status' => "生成订单",
  122. 'logistic_number' => 'SF1332897469263',
  123. 'transfer_status' => OrderPackage::switchStatus('在途'),
  124. 'sent_at' => now()->subDays(3),
  125. 'created_at' => now()->subDays(3),
  126. 'weighed_at' => now()->subDays(2),
  127. 'order_id' =>$order->id,
  128. ]);
  129. $response = $this->service->setExceptionStatus($data);
  130. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  131. $this->assertEquals('在途异常', $response['exception_status']);
  132. }
  133. public function test_在途异常小于3上海()
  134. {
  135. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  136. $data = [
  137. "logistic_number" => "SF1332897469263",
  138. "status" => "在途",
  139. "received_at" => null,
  140. "transfer_status" => [
  141. ["accept_time" => "2021-09-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  142. ["accept_time" => now()->subHours(25)->toDateTimeString(), "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  143. //最近一条是在24h前
  144. ],
  145. ];
  146. $order = factory(\App\Order::class)->create([
  147. 'province' =>'上海'
  148. ]);
  149. factory(OrderPackage::class)->create([
  150. 'status' => "生成订单",
  151. 'logistic_number' => 'SF1332897469263',
  152. 'transfer_status' => OrderPackage::switchStatus('在途'),
  153. 'sent_at' => now()->subDays(3),
  154. 'created_at' => now()->subDays(3),
  155. 'weighed_at' => now()->subDays(2),
  156. 'order_id' =>$order->id,
  157. ]);
  158. $response = $this->service->setExceptionStatus($data);
  159. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  160. $this->assertEquals('在途异常', $response['exception_status']);
  161. }
  162. public function test_在途异常大于3黑龙江()
  163. {
  164. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  165. $data = [
  166. "logistic_number" => "SF1332897469263",
  167. "status" => "在途",
  168. "received_at" => null,
  169. "transfer_status" => [
  170. ["accept_time" => "2021-08-06 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  171. ["accept_time" => "2021-08-07 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  172. ["accept_time" => "2021-08-08 19:25:42", "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  173. ["accept_time" => now()->subHours(73)->toDateTimeString(), "accept_address" => "上海市", "remark" => "顺丰速运 已收取快件",],
  174. //最近一条是在24h前
  175. ],
  176. ];
  177. $order = factory(\App\Order::class)->create([
  178. 'province' =>'黑龙江省'
  179. ]);
  180. factory(OrderPackage::class)->create([
  181. 'status' => OrderPackage::switchStatus('在途'),
  182. 'logistic_number' => 'SF1332897469263',
  183. 'transfer_status' => [],
  184. 'sent_at' => now()->subDays(3),
  185. 'created_at' => now()->subDays(3),
  186. 'weighed_at' => now()->subDays(2),
  187. 'order_id' =>$order->id,
  188. ]);
  189. $response = $this->service->setExceptionStatus($data);
  190. OrderPackage::query()->where('logistic_number', 'SF1332897469263')->delete();
  191. $this->assertEquals('在途异常', $response['exception_status']);
  192. }
  193. }