MarkBinProcessedTest.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace Tests\Services\ForeignHaiRoboticsService;
  3. use App\Batch;
  4. use App\MaterialBox;
  5. use App\Order;
  6. use App\OrderCommodity;
  7. use App\Services\BatchService;
  8. use App\Services\ForeignHaiRoboticsService;
  9. use App\Services\StationService;
  10. use App\Services\StationTaskBatchService;
  11. use App\Station;
  12. use App\StationRuleBatch;
  13. use App\StationTask;
  14. use App\StationTaskBatch;
  15. use App\StationTaskCommodity;
  16. use App\StationTaskMaterialBox;
  17. use Tests\TestCase;
  18. use App\Traits\TestMockSubServices;
  19. class MarkBinProcessedTest extends TestCase
  20. {
  21. use TestMockSubServices;
  22. /** @var ForeignHaiRoboticsService $service */
  23. public $service;
  24. private $data;
  25. private $batchAmount = 1;
  26. private $orderAmount = 2;
  27. private $orderCommodityAmount = 4;
  28. function setUp(): void
  29. {
  30. parent::setUp();
  31. $this->service = $this->subMock([
  32. 'class' => ForeignHaiRoboticsService::class,
  33. // 'methods' => [
  34. // 'putBinToStore' => true,
  35. // ],
  36. 'subServices' => [
  37. [
  38. 'serviceName' => 'stationService',
  39. 'class' => StationService::class,
  40. 'methods' => [
  41. 'broadcastBinMonitor' => true,
  42. ],
  43. ],
  44. ]
  45. ]);
  46. $this->data['batches']
  47. = factory(Batch::class, $this->batchAmount)
  48. ->create();
  49. $this->data['station_task_batches']
  50. = factory(StationTaskBatch::class)
  51. ->createMany($this->makeArray($this->batchAmount, [
  52. 'batch_id' => function () {
  53. return $this->getTargetFieldCirculately($this->data['batches']);
  54. }
  55. ]));
  56. $this->data['orders'] =
  57. factory(Order::class)
  58. ->createMany($this->makeArray($this->orderAmount, [
  59. 'batch_id' => function () {
  60. return $this->getTargetFieldCirculately($this->data['batches']);
  61. }
  62. ]));
  63. $this->data['orderCommodities'] =
  64. factory(OrderCommodity::class)
  65. ->createMany($this->makeArray($this->orderCommodityAmount, [
  66. 'order_id' => function () {
  67. return $this->getTargetFieldCirculately($this->data['orders']);
  68. }
  69. ]));
  70. $this->data['station_rule_batches']
  71. = factory(StationRuleBatch::class)
  72. ->createMany($this->makeArray($this->batchAmount, [
  73. 'owner_id' => function () {
  74. return $this->getTargetFieldCirculately($this->data['batches'], '', 'owner_id');
  75. }
  76. ]));
  77. $this->data['material_boxes']
  78. = factory(MaterialBox::class)
  79. ->createMany($this->makeArray($this->orderCommodityAmount, [
  80. 'code' => function () {
  81. return $this->getTargetFieldCirculately($this->data['orderCommodities'], MaterialBox::class, 'location');
  82. }
  83. ]));
  84. $this->data['station_task_material_boxes']
  85. = factory(StationTaskMaterialBox::class)
  86. ->createMany($this->makeArray($this->orderCommodityAmount, [
  87. 'status' => '处理中',
  88. 'material_box_id' => function () {
  89. return $this->getTargetFieldCirculately($this->data['material_boxes']);
  90. },
  91. 'station_task_batch_id' => function () {
  92. return $this->getTargetFieldCirculately($this->data['station_task_batches']);
  93. }
  94. ]));
  95. $this->data['stationTaskCommodities'] =
  96. factory(StationTaskCommodity::class)
  97. ->createMany($this->makeArray($this->orderCommodityAmount, [
  98. 'status' => '处理中',
  99. 'material_box_id' => function () {
  100. return $this->getTargetFieldCirculately($this->data['material_boxes']);
  101. },
  102. 'station_task_batch_id' => function () {
  103. return $this->getTargetFieldCirculately($this->data['station_task_batches'],StationTaskCommodity::class);
  104. }
  105. ]));
  106. }
  107. public function testReturned()
  108. {
  109. foreach ($this->data['material_boxes'] as $box) {
  110. $this->service->markBinProcessed(
  111. '',
  112. $box['code'],
  113. true,
  114. '',
  115. '',
  116. true);
  117. }
  118. $this->assertArrayHasKey(
  119. '完成',
  120. array_flip(array_unique(data_get(
  121. StationTaskMaterialBox::query()->whereIn('id', data_get($this->data['station_task_material_boxes'], '*.id'))->get(),
  122. '*.status')))
  123. );
  124. // $this->assertEquals(
  125. // ['完成'],
  126. // array_unique(data_get(
  127. // StationTaskCommodity::query()->whereIn('id', data_get($this->data['stationTaskCommodities'], '*.id'))->get()
  128. // , '*.status'))
  129. // );
  130. }
  131. function tearDown(): void
  132. {
  133. MaterialBox::query()
  134. ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.materialBoxes.*.id') ?? [])
  135. ->delete();
  136. // StationTaskMaterialBox::query()
  137. // ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTaskMaterialBoxes.*.id') ?? [])
  138. // ->delete();
  139. StationTaskMaterialBox::query()
  140. ->whereIn('material_box_id', data_get($this->data['batches'], '*.stationTaskBatch.materialBoxes.*.id') ?? [])
  141. ->delete();
  142. StationTaskCommodity::query()
  143. ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTaskCommodities.*.id') ?? [])
  144. ->delete();
  145. StationTaskBatch::query()
  146. ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.id') ?? [])
  147. ->delete();
  148. StationTask::query()
  149. ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTask.id') ?? [])
  150. ->delete();
  151. StationRuleBatch::query()
  152. ->whereIn('id', data_get($this->data['station_rule_batches'], '*.id') ?? [])
  153. ->delete();
  154. OrderCommodity::query()
  155. ->whereIn('id', data_get($this->data['orderCommodities'], '*.id') ?? [])
  156. ->delete();
  157. Order::query()
  158. ->whereIn('id', data_get($this->data['orders'], '*.id') ?? [])
  159. ->delete();
  160. Batch::query()
  161. ->whereIn('id', data_get($this->data['batches'], '*.id') ?? [])
  162. ->delete();
  163. parent::tearDown();
  164. }
  165. }