Пример #1
0
 public function test_timeable_scopes()
 {
     $past = Factory::create(new Discount(), ['start_at' => Carbon::now()->subDays(10), 'end_at' => Carbon::now()->subDays(5)]);
     $present = Factory::create(new Discount(), ['start_at' => Carbon::now()->subDays(5), 'end_at' => Carbon::now()->addDays(5)]);
     $future = Factory::create(new Discount(), ['start_at' => Carbon::now()->addDays(5), 'end_at' => Carbon::now()->addDays(10)]);
     $expired = Discount::isExpired()->get();
     $this->assertEquals(1, count($expired));
     $this->assertEquals($past->id, $expired->first()->id);
     $running = Discount::isRunning()->get();
     $this->assertEquals(1, count($running));
     $this->assertEquals($present->id, $running->first()->id);
     $upcoming = Discount::isUpcoming()->get();
     $this->assertEquals(1, count($upcoming));
     $this->assertEquals($future->id, $upcoming->first()->id);
     $runningOrUpcoming = Discount::isRunningOrUpcoming()->get();
     $this->assertEquals(2, count($runningOrUpcoming));
     $this->assertTrue($runningOrUpcoming->contains('id', $present->id));
     $this->assertTrue($runningOrUpcoming->contains('id', $future->id));
 }
Пример #2
0
 /**
  * Syncs all non-expired discounts
  *
  * @return void
  */
 public static function syncAll()
 {
     $discounts = Discount::isRunningOrUpcoming()->get();
     foreach ($discounts as $discount) {
         $discount->syncPrices();
     }
 }