Source of file EventRegistrationPurgeTaskTest.php
Size: 3,706 Bytes - Last Modified: 2021-12-23T10:25:27+00:00
/var/www/docs.ssmods.com/process/src/tests/EventRegistrationPurgeTaskTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?php /** * Tests that the registration purge task works as expected. * * @package silverstripe-eventmanagement * @subpackage tests */ class EventRegistrationPurgeTaskTest extends SapphireTest { public static $fixture_file = 'eventmanagement/tests/EventRegistrationPurgeTaskTest.yml'; /** * @covers EventRegistrationPurgeTask::purgeUnsubmittedRegistrations */ public function testPurgeTaskDeletesUnsubmittedRegistrations() { $task = new EventRegistrationPurgeTask(); $unsubmitted1 = $this->objFromFixture('EventRegistration', 'unsubmitted_1'); $unsubmitted2 = $this->objFromFixture('EventRegistration', 'unsubmitted_2'); $count = 'SELECT COUNT(*) FROM "EventRegistration" WHERE "Status" = \'Unsubmitted\''; $update = 'UPDATE "EventRegistration" SET "Created" = \'%s\' WHERE "ID" = %d'; ob_start(); $task->run(null); $this->assertEquals(2, DB::query($count)->value()); // Update the first registration to be 10 minutes ago, it shouldn't get // deleted. DB::query(sprintf( $update, date('Y-m-d H:i:s', sfTime::subtract(time(), 15, sfTime::MINUTE)), $unsubmitted1->ID)); $task->run(null); $this->assertEquals(2, DB::query($count)->value()); // Now update it to 20 minutes ago, one should be deleted. DB::query(sprintf( $update, date('Y-m-d H:i:s', sfTime::subtract(time(), 20, sfTime::MINUTE)), $unsubmitted1->ID)); $task->run(null); $this->assertEquals(1, DB::query($count)->value()); // Now push the second one way into the past. $created = sfTime::subtract(time(), 1000, sfTime::DAY); DB::query(sprintf( $update, date('Y-m-d H:i:s', $created), $unsubmitted2->ID)); $task->run(null); $this->assertEquals(0, DB::query($count)->value()); // Ensure the confirmed event is still there. $confirmed = DB::query( 'SELECT COUNT(*) FROM "EventRegistration" WHERE "Status" = \'Confirmed\'' ); $this->assertEquals(1, $confirmed->value()); ob_end_clean(); } /** * @covers EventRegistrationPurgeTask::purgeUnconfirmedRegistrations */ public function testPurgeTaskCancelsUnconfirmedRegistrations() { $task = new EventRegistrationPurgeTask(); $unconfirmed1 = $this->objFromFixture('EventRegistration', 'unconfirmed_1'); $unconfirmed2 = $this->objFromFixture('EventRegistration', 'unconfirmed_2'); $canceled = 'SELECT COUNT(*) FROM "EventRegistration" WHERE "Status" = \'Canceled\''; $update = 'UPDATE "EventRegistration" SET "Created" = \'%s\' WHERE "ID" = %d'; ob_start(); $task->run(null); $this->assertEquals(0, DB::query($canceled)->value()); // Update the first task to be just shy of six hours less than the // created date. $created = strtotime($unconfirmed1->Created); $created = sfTime::subtract($created, 5, sfTime::HOUR); DB::query(sprintf($update, date('Y-m-d H:i:s', $created), $unconfirmed1->ID)); $task->run(null); $this->assertEquals(0, DB::query($canceled)->value()); // Now push it beyond six hours DB::query(sprintf( $update, date('Y-m-d H:i:s', sfTime::subtract($created, 1, sfTime::HOUR)), $unconfirmed1->ID)); $task->run(null); $this->assertEquals(1, DB::query($canceled)->value()); // Now push the second one way back, and check it's also canceled $created = sfTime::subtract(time(), 1000, sfTime::DAY); DB::query(sprintf( $update, date('Y-m-d H:i:s', $created), $unconfirmed2->ID)); $task->run(null); $this->assertEquals(2, DB::query($canceled)->value()); // Ensure the confirmed event is still there. $confirmed = DB::query( 'SELECT COUNT(*) FROM "EventRegistration" WHERE "Status" = \'Confirmed\'' ); $this->assertEquals(1, $confirmed->value()); ob_end_clean(); } } |