CreateStationTask.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace Tests\Services\CacheShelfService;
  3. use App\MaterialBox;
  4. use App\Services\CacheShelfService;
  5. use App\Services\ForeignHaiRoboticsService;
  6. use App\Services\StationTaskMaterialBoxService;
  7. use App\Services\StationTaskService;
  8. use App\Station;
  9. use App\StationTask;
  10. use App\StationTaskMaterialBox;
  11. use App\Traits\TestMockSubServices;
  12. use Tests\TestCase;
  13. class CreateStationTask extends TestCase
  14. {
  15. use TestMockSubServices;
  16. /** @var CacheShelfService $service */
  17. protected $service;
  18. /** @var StationTaskService $stationTaskService */
  19. protected $stationTaskService;
  20. protected $data = [];
  21. /**
  22. * createStationTask
  23. * 注册站任务
  24. * 注册站料箱任务
  25. * 注册站任务子任务
  26. */
  27. protected function setUp(): void
  28. {
  29. parent::setUp();
  30. $this->service = $this->subMock([
  31. 'class' => CacheShelfService::class,
  32. 'methods' => [
  33. '_stationCacheLightOn' => new MaterialBox(['code' => 200])
  34. ],
  35. 'subService' => [[
  36. 'serviceName' => 'foreignHaiRoboticsService',
  37. 'class' => ForeignHaiRoboticsService::class,
  38. 'methods' => [
  39. 'controlHaiRobot' => true
  40. ]
  41. ], [
  42. 'serviceName' => 'stationTaskService',
  43. 'class' => StationTaskService::class
  44. ], [
  45. 'serviceName' => 'stationTaskMaterialBoxService',
  46. 'class' => StationTaskMaterialBoxService::class,
  47. ]
  48. ]
  49. ]);
  50. $this->stationTaskService = $this->subMock([
  51. 'class' => StationTaskService::class,
  52. ]);
  53. $this->data['parentStation'] = factory(Station::class)->create();
  54. $this->data['station'] = factory(Station::class)->create(['parent_id' => $this->data['parentStation']['id']]);
  55. $this->data['materialBox'] = factory(MaterialBox::class)->create();
  56. }
  57. public function testCreatStationTask()
  58. {
  59. $data = $this->service->createStationTask($this->data['station']['code'], $this->data['materialBox']['code']);
  60. $this->assertTrue($data['success']);
  61. $stationTask = StationTask::query()->where('station_id', $this->data['station']['id'])->with('stationTaskMaterialBoxes')->first();
  62. $stationTaskMaterialBox = StationTaskMaterialBox::query()->with('materialBox')->where('station_id', $this->data['station']['id'])->first();
  63. $this->assertEquals($stationTask['status'], '待处理');
  64. $this->assertEquals($stationTaskMaterialBox['materialBox']['code'], $this->data['materialBox']['code']);
  65. $station = Station::query()->with(['pendingStationTask.stationTaskMaterialBoxes'])->where('id', $this->data['station']['id'])->first();
  66. $this->assertEquals($station['pendingStationTask']['stationTaskMaterialBoxes']->first()['station_id'], $stationTask['station_id']);
  67. }
  68. public function testStationTaskIsExists()
  69. {
  70. $this->data['stationTask'] = $this->stationTaskService->create(1);
  71. $this->stationTaskService->registerStations($this->data['stationTask'], [$this->data['station']['id']]);
  72. $data = $this->service->createStationTask($this->data['station']['code'], $this->data['materialBox']['code']);
  73. $this->assertFalse($data['success']);
  74. }
  75. protected function tearDown(): void
  76. {
  77. Station::query()->where('id', $this->data['station']['id'])->delete();
  78. Station::query()->where('id', $this->data['parentStation']['id'])->delete();
  79. StationTask::query()->where('station_id', $this->data['station']['id'])->delete();
  80. MaterialBox::query()->where('id', $this->data['materialBox']['id'])->delete();
  81. StationTaskMaterialBox::query()->where('station_id', $this->data['station']['id'])->delete();
  82. if ($this->data['stationTask'] ?? false) StationTask::query()->whereIn('id', data_get($this->data['stationTask'], '*.id'))->delete();
  83. parent::tearDown();
  84. }
  85. }