singleton('CacheService', CacheService::class); $this->orderCountingRecordService = app(OrderCountingRecordService::class); } /** * @test */ public function counting_unit_date() { cache()->flush(); $start = Carbon::now()->subDays(2)->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs($user = factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubDayOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end)->toArray(); $this->assertEquals([0, 10, 20], array_column($result, 'counter')); cache()->flush(); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end)->toArray(); $this->assertEquals([0, 10, 40], array_column($result, 'counter')); cache()->flush(); } /** * @test */ public function counting_unit_week() { cache()->flush(); $start = Carbon::now()->subWeek()->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs(factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubWeekOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '周')->toArray(); $this->assertEquals([20, 20], array_column($result, 'counter')); cache()->flush(); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '周')->toArray(); $this->assertEquals([20, 40], array_column($result, 'counter')); } /** * @test */ public function counting_unit_month() { cache()->flush(); $start = Carbon::now()->subMonth()->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs(factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubMonthOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '月')->toArray(); $this->assertEquals([20, 20], array_column($result, 'counter')); cache()->flush(); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '月')->toArray(); $this->assertEquals([20, 40], array_column($result, 'counter')); } /** * @test */ public function current_date_ttl_day() { cache()->flush(); $start = Carbon::now()->subDays(2)->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs($user = factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubDayOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end)->toArray(); $this->assertEquals([0, 10, 20], array_column($result, 'counter')); sleep(4); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end)->toArray(); $this->assertEquals([0, 10, 40], array_column($result, 'counter')); cache()->flush(); } /** * @test */ public function current_date_ttl_week() { cache()->flush(); $start = Carbon::now()->subWeek()->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs(factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubWeekOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '周')->toArray(); $this->assertEquals([20, 20], array_column($result, 'counter')); sleep(4); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '周')->toArray(); $this->assertEquals([20, 40], array_column($result, 'counter')); } /** * @test */ public function current_date_ttl_month() { cache()->flush(); $start = Carbon::now()->subMonth()->format('Y-m-d'); $end = (new Carbon())->toDateString(); $this->actingAs(factory(User::class)->create(['name' => 'yang'])); $owner = factory(Owner::class)->create(); $this->createCurrentDateOrders($owner); $this->createSubMonthOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '月')->toArray(); $this->assertEquals([20, 20], array_column($result, 'counter')); sleep(4); $this->createCurrentDateOrders($owner); $result = $this->orderCountingRecordService->orderCountingRecords($start, $end, null, '月')->toArray(); $this->assertEquals([20, 40], array_column($result, 'counter')); } /** * @test */ public function set_null() { $dateStr = '2020-11-26'; $this->assertTrue($dateStr != Carbon::now()->format('Y-m-d')); } /** * @test */ public function isNotCurrentDate() { $day_ture = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->subDay()->format('Y-m-d')); $day_false = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->format('Y-m-d')); $week_ture = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->subWeek()->year . '-' . Carbon::now()->subWeek()->week); $week_false = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->year . '-' . Carbon::now()->week); $month_true = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->subMonth()->year . '-' . Carbon::now()->subMonth()->month); $month_false = $this->orderCountingRecordService->isNotCurrentDate(Carbon::now()->year . '-' . Carbon::now()->month); $this->assertTrue($day_ture); $this->assertFalse($day_false); $this->assertTrue($week_ture); $this->assertFalse($week_false); $this->assertTrue($month_true); $this->assertFalse($month_false); } public function tearDown(): void { Order::query()->delete(); Owner::query()->delete(); User::query()->delete(); } protected function createCurrentDateOrders($owner): void { factory(Order::class)->times(20)->create([ 'created_at' => Carbon::now(), 'owner_id' => $owner->id, 'wms_status' => '订单完成']); } protected function createSubWeekOrders($owner): void { factory(Order::class)->times(20)->create([ 'created_at' => Carbon::now()->subWeek(), 'owner_id' => $owner->id, 'wms_status' => '订单完成']); } protected function createSubMonthOrders($owner): void { factory(Order::class)->times(20)->create([ 'created_at' => Carbon::now()->subMonth(), 'owner_id' => $owner->id, 'wms_status' => '订单完成']); } protected function createSubDayOrders($owner): void { factory(Order::class)->times(10)->create([ 'created_at' => Carbon::now()->subDays(1), 'owner_id' => $owner->id, 'wms_status' => '订单完成']); } }