| 1 | <?php |
||
| 2 | |||
| 3 | namespace LeKoala\SimpleJobs\Test; |
||
| 4 | |||
| 5 | use LeKoala\SimpleJobs\CronJob; |
||
| 6 | use SilverStripe\Security\Member; |
||
| 7 | use LeKoala\SimpleJobs\SimpleTask; |
||
| 8 | use SilverStripe\Dev\SapphireTest; |
||
| 9 | use SilverStripe\Security\Security; |
||
| 10 | use SilverStripe\Control\Controller; |
||
| 11 | use LeKoala\SimpleJobs\SimpleJobsController; |
||
| 12 | use SilverStripe\ORM\DB; |
||
| 13 | use SilverStripe\Security\DefaultAdminService; |
||
| 14 | |||
| 15 | /** |
||
| 16 | * Test for SimpleJobs |
||
| 17 | * |
||
| 18 | * @group SimpleJobs |
||
| 19 | */ |
||
| 20 | class SimpleJobsTest extends SapphireTest |
||
| 21 | { |
||
| 22 | /** |
||
| 23 | * Defines the fixture file to use for this test class |
||
| 24 | * @var string |
||
| 25 | */ |
||
| 26 | protected static $fixture_file = 'SimpleJobsTest.yml'; |
||
| 27 | |||
| 28 | protected function setUp(): void |
||
| 29 | { |
||
| 30 | parent::setUp(); |
||
| 31 | $controller = Controller::curr(); |
||
| 32 | $controller->config()->set('url_segment', 'test_controller'); |
||
| 33 | } |
||
| 34 | |||
| 35 | protected function tearDown(): void |
||
| 36 | { |
||
| 37 | parent::tearDown(); |
||
| 38 | } |
||
| 39 | |||
| 40 | public function testSimpleTask(): void |
||
| 41 | { |
||
| 42 | $task = new SimpleTask; |
||
| 43 | $inst = Member::get()->first(); |
||
| 44 | $curr = $inst->TempIDHash; |
||
| 45 | $task->addToTask($inst, 'regenerateTempID'); |
||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||
| 46 | $task->write(); |
||
| 47 | |||
| 48 | // Make sure it's marked as being the next one to process |
||
| 49 | $next = SimpleTask::getNextTaskToRun(); |
||
| 50 | $this->assertEquals($task->ID, $next->ID); |
||
| 51 | $count = SimpleTask::getTasksThatNeedToRun()->count(); |
||
| 52 | $this->assertEquals(1, $count); |
||
| 53 | |||
| 54 | // It's still the same |
||
| 55 | $this->assertEquals($curr, $inst->TempIDHash); |
||
| 56 | $task->process(); |
||
| 57 | |||
| 58 | // refresh inst |
||
| 59 | $inst = Member::get()->first(); |
||
| 60 | $this->assertNotEquals($curr, $inst->TempIDHash); |
||
| 61 | |||
| 62 | $this->assertEquals(true, $task->Processed); |
||
| 63 | $this->assertEquals(1, $task->SuccessCalls); |
||
| 64 | $this->assertEquals(1, $task->CallsCount); |
||
| 65 | $this->assertEquals(0, $task->ErrorCalls); |
||
| 66 | |||
| 67 | $count = SimpleTask::getTasksThatNeedToRun()->count(); |
||
| 68 | $this->assertEquals(0, $count); |
||
| 69 | } |
||
| 70 | |||
| 71 | public function testController(): void |
||
| 72 | { |
||
| 73 | $ctrl = new SimpleJobsController(); |
||
| 74 | |||
| 75 | Security::setCurrentUser(null); |
||
| 76 | $res = $ctrl->trigger_manual(); |
||
| 77 | $this->assertStringContainsString("must be logged", $res); |
||
| 78 | |||
| 79 | $service = DefaultAdminService::singleton(); |
||
| 80 | $admin = $service->findOrCreateDefaultAdmin(); |
||
| 81 | Security::setCurrentUser($admin); |
||
| 82 | |||
| 83 | $res = $ctrl->trigger_manual(); |
||
| 84 | $this->assertStringNotContainsString("must be logged", $res); |
||
| 85 | } |
||
| 86 | |||
| 87 | public function testCanGenerateJobs(): void |
||
| 88 | { |
||
| 89 | CronJob::regenerateFromClasses(); |
||
| 90 | $this->assertNotEquals(0, CronJob::get()->count()); |
||
| 91 | } |
||
| 92 | |||
| 93 | public function testHasTasks(): void |
||
| 94 | { |
||
| 95 | $this->assertNotEmpty(CronJob::allTasks()); |
||
| 96 | } |
||
| 97 | |||
| 98 | public function testClearResults(): void |
||
| 99 | { |
||
| 100 | $t = date('Y-m-d', strtotime('-1 year')); |
||
| 101 | DB::query("INSERT INTO CronTaskResult (Created) VALUES ('$t')"); |
||
| 102 | |||
| 103 | $count = DB::query('SELECT COUNT(*) FROM CronTaskResult')->value(); |
||
| 104 | |||
| 105 | SimpleJobsController::clearResultsTable(); |
||
| 106 | |||
| 107 | $newCount = DB::query('SELECT COUNT(*) FROM CronTaskResult')->value(); |
||
| 108 | $this->assertNotEquals($count, $newCount); |
||
| 109 | } |
||
| 110 | } |
||
| 111 |