Source of file OrderDiscountTest.php
Size: 3,064 Bytes - Last Modified: 2021-12-24T06:35:13+00:00
/var/www/docs.ssmods.com/process/src/tests/OrderDiscountTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | <?php namespace SilverShop\Discounts\Tests; use SilverStripe\Dev\SapphireTest; use SilverShop\Tests\ShopTest; use SilverShop\Model\Order; use SilverShop\Discounts\Model\OrderDiscount; use SilverShop\Discounts\Model\Discount; use SilverStripe\Omnipay\Model\Payment; class OrderDiscountTest extends SapphireTest { protected static $fixture_file = [ 'Discounts.yml', 'shop.yml' ]; public function setUp() { parent::setUp(); ShopTest::setConfiguration(); $this->cart = $this->objFromFixture(Order::class, 'cart'); } /** * Check that available discounts are matched to the current order. */ public function testManyMatches() { OrderDiscount::create( [ 'Title' => '10% off', 'Type' => 'Percent', 'Percent' => 0.10 ] )->write(); OrderDiscount::create( [ 'Title' => '$5 off', 'Type' => 'Amount', 'Amount' => 5 ] )->write(); $matches = OrderDiscount::get_matching($this->cart); $this->assertListEquals( [ ['Title' => '10% off'], ['Title' => '$5 off'], ], $matches ); } public function testPercent() { OrderDiscount::create( [ 'Title' => '10% off', 'Type' => 'Percent', 'Percent' => 0.10 ] )->write(); $this->assertListEquals( [ ['Title' => '10% off'] ], OrderDiscount::get_matching($this->cart) ); } public function testAmount() { OrderDiscount::create( [ 'Title' => '$5 off', 'Type' => 'Amount', 'Amount' => 5 ] )->write(); $this->assertListEquals( [ ['Title' => '$5 off'] ], OrderDiscount::get_matching($this->cart) ); } public function testUseCount() { //check that order with payment started counts as a use $discount = $this->objFromFixture(OrderDiscount::class, 'paymentused'); $payment = $this->objFromFixture(Payment::class, 'paymentstarted_recent'); // set timeout to 60 minutes Discount::config()->unpaid_use_timeout = 60; //set payment to be created 20 min ago $payment->Created = date('Y-m-d H:i:s', strtotime('-20 minutes')); $payment->write(); $this->assertEquals(1, $discount->getUseCount()); //set payment ot be created 2 days ago $payment->Created = date('Y-m-d H:i:s', strtotime('-2 days')); $payment->write(); $this->assertEquals(0, $discount->getUseCount()); //failed payments should be ignored $payment->Created = date('Y-m-d H:i:s', strtotime('-20 minutes')); $payment->Status = 'Void'; $payment->write(); $this->assertEquals(0, $discount->getUseCount()); } } |