CouponRepositoryTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace iBrand\Component\Discount\Test\Repositories;
  3. use iBrand\Component\Discount\Models\Coupon;
  4. use iBrand\Component\Discount\Repositories\CouponRepository;
  5. use iBrand\Component\Discount\Test\BaseTest;
  6. use iBrand\Component\Discount\Test\Models\User;
  7. use Illuminate\Support\Carbon;
  8. class CouponRepositoryTest extends BaseTest
  9. {
  10. public function testFindActiveByUser()
  11. {
  12. $repository = $this->app->make(CouponRepository::class);
  13. $coupons = $repository->findActiveByUser($this->user->id, 0);
  14. $this->assertEquals(20, count($coupons));
  15. $coupons = $repository->findActiveByUser($this->user->id);
  16. $this->assertEquals(15, count($coupons));
  17. }
  18. public function testFindInvalidByUser()
  19. {
  20. $repository = $this->app->make(CouponRepository::class);
  21. $coupons = $repository->findActiveByUser($this->user->id, 0);
  22. $coupon = $coupons->random();
  23. $coupon->expires_at = Carbon::now()->addDay(-1);
  24. $coupon->save();
  25. $invalidCoupons = $repository->findInvalidByUser($this->user->id);
  26. $this->assertEquals(1, count($invalidCoupons));
  27. $coupon = $coupons->whereNotIn('discount_id', [$coupon->discount_id])->random();
  28. $discount = $coupon->discount;
  29. $discount->useend_at = Carbon::now()->addDay(-1);
  30. $discount->save();
  31. $invalidCoupons = $repository->findInvalidByUser($this->user->id);
  32. $invalidDiscountCoupons = Coupon::where('discount_id', $discount->id)->get();
  33. $this->assertEquals(1 + count($invalidDiscountCoupons), count($invalidCoupons));
  34. }
  35. public function testFindUsedByUser()
  36. {
  37. $repository = $this->app->make(CouponRepository::class);
  38. $coupons = $repository->findActiveByUser($this->user->id, 0);
  39. $coupon = $coupons->random();
  40. $coupon->used_at = Carbon::now()->addDay(-1);
  41. $coupon->save();
  42. $usedCoupons = $repository->findUsedByUser($this->user->id);
  43. $this->assertEquals(1, count($usedCoupons));
  44. }
  45. }