TransfersToConditionsTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace Tests\Services\NewOrderCountingRecordService;
  3. use App\Order;
  4. use App\OrderCountingRecord;
  5. use App\Owner;
  6. use App\Services\NewOrderCountingRecordService;
  7. use App\User;
  8. use Carbon\Carbon;
  9. use Illuminate\Foundation\Testing\RefreshDatabase;
  10. use Illuminate\Support\Arr;
  11. use Tests\TestCase;
  12. class TransfersToConditionsTest extends TestCase
  13. {
  14. protected $newOrderCountingRecordService;
  15. protected $data;
  16. protected function setUp(): void
  17. {
  18. parent::setUp(); // TODO: Change the autogenerated stub
  19. $this->newOrderCountingRecordService = new NewOrderCountingRecordService();
  20. $user = User::query()->where('name', 'yang')->first();
  21. $this->actingAs($user);
  22. $this->data['dates'] = [
  23. 'right'=>[
  24. ['startAt'=>Carbon::now()->subDays(2),'endAt'=>Carbon::now()->addDays(2)],
  25. ['startAt'=>Carbon::now()->subYears(1),'endAt'=>Carbon::now()->addYears(1)],
  26. ],
  27. 'wrong'=>[
  28. ['startAt'=>Carbon::now()->addDays(2),'endAt'=>Carbon::now()->subDays(2)],
  29. ['startAt'=>Carbon::now()->addYears(1),'endAt'=>Carbon::now()->subYears(1)],
  30. ]
  31. ];
  32. $this->data['units'] = ['year'=>'年','month'=>'月','week'=>'周','day'=>'日'];
  33. $this->data['owners']=factory(Owner::class)->times(2)->create();
  34. }
  35. protected function tearDown(): void
  36. {
  37. Owner::destroy(data_get($this->data['owners'],'*.id'));
  38. parent::tearDown(); // TODO: Change the autogenerated stub
  39. }
  40. public function test_transfersToConditions_format()
  41. {
  42. foreach($this->data['units'] as $unit){
  43. foreach($this->data['dates']['right'] as $date){
  44. $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  45. $this->assertIsArray($result);
  46. }
  47. foreach($this->data['dates']['wrong'] as $date){
  48. $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  49. $this->assertIsArray($result);
  50. }
  51. }
  52. }
  53. public function test_transfersToConditions_ifEmpty()
  54. {
  55. foreach($this->data['units'] as $unit){
  56. foreach($this->data['dates']['right'] as $date){
  57. $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  58. $this->assertNotEmpty($result);
  59. }
  60. foreach($this->data['dates']['wrong'] as $date){
  61. $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  62. $this->assertEmpty($result['data']);
  63. $this->assertNotEmpty($result['unit']);
  64. }
  65. }
  66. }
  67. // public function test_transfersToConditions_ifDatesMatches()
  68. // {
  69. // foreach($this->data['units'] as $unit){
  70. // foreach($this->data['dates']['right'] as $date){
  71. // $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  72. // $datesExpected=[];
  73. // switch ($unit){
  74. // case '年': $datesExpected=collect($date['startAt']->yearsUntil($date['endAt'], 1)->toArray())
  75. // ->map(function(Carbon $date){
  76. // return $date->firstOfYear();
  77. // })->toArray();
  78. // break;
  79. // case '月': $datesExpected=collect($date['startAt']->monthsUntil($date['endAt'], 1)->toArray())
  80. // ->map(function(Carbon $date){
  81. // return $date->firstOfMonth();
  82. // })->toArray();break;
  83. // case '日': $datesExpected=collect($date['startAt']->daysUntil($date['endAt'], 1)->toArray())
  84. // ->map(function(Carbon $date){
  85. // return $date->startOfDay();
  86. // })->toArray();break;
  87. // }
  88. // $datesExpected=array_map(function($date){
  89. // return $date->toDateString();
  90. // },$datesExpected);
  91. // $actualDays = array_keys($result['data']);
  92. // $this->assertEquals(array_filter($datesExpected), $actualDays);
  93. // }
  94. // }
  95. // }
  96. public function test_transfersToConditions_ifOwnerIdMatches()
  97. {
  98. foreach($this->data['units'] as $unit){
  99. foreach($this->data['dates']['right'] as $date){
  100. $result=$this->newOrderCountingRecordService->transfersToCondition($date['startAt'],$date['endAt'],$unit,data_get($this->data['owners'],'*.id'));
  101. $ownerIdsExpected=data_get($this->data['owners'],'*.id');
  102. $isMatch=true;
  103. foreach($result['data'] as $date=>$ownerIds){
  104. if(json_encode($ownerIdsExpected)!=json_encode($ownerIds)){
  105. $isMatch=false; break;
  106. }
  107. }
  108. $this->assertTrue($isMatch);
  109. }
  110. }
  111. }
  112. }