public function testPublishAction() { $this->logInWithPermission(); $action = new PublishItemWorkflowAction(); $instance = new WorkflowInstance(); $page = new Page(); $page->Title = 'stuff'; $page->write(); $instance->TargetClass = 'Page'; $instance->TargetID = $page->ID; $this->assertFalse($page->isPublished()); // $this->assertTrue($page->Status == 'New'); $action->execute($instance); $page = DataObject::get_by_id('Page', $page->ID); $this->assertTrue($page->isPublished()); }
public function testPublishActionWithFutureDates() { $action = new PublishItemWorkflowAction(); $instance = new WorkflowInstance(); $page = new Page(); $page->Title = 'stuff'; $page->DesiredPublishDate = '2020-02-01 00:00:00'; $page->DesiredUnPublishDate = '2020-02-01 02:00:00'; $page->write(); $instance->TargetClass = $page->ClassName; $instance->TargetID = $page->ID; $action->execute($instance); $page = DataObject::get_by_id('Page', $page->ID); $this->assertTrue($page->PublishJobID > 0); $this->assertTrue($page->UnPublishJobID > 0); }
public function testPastPublishWithWorkflowInEffect() { $definition = $this->createDefinition(); $page = new Page(); $page->Title = 'My page'; $page->WorkflowDefinitionID = $definition->ID; $page->write(); // No publish $this->assertEmpty($page->PublishJobID); $this->assertEmpty($page->UnPublishJobID); // Set a past publish date $page->DesiredPublishDate = '2010-01-01 00:00:00'; $page->write(); // Workflow is in effect. No jobs have been created yet as it's not approved. $this->assertEmpty($page->PublishJobID); $this->assertEmpty($page->UnPublishJobID); // Advance the workflow so we can see what happens $instance = new WorkflowInstance(); $instance->beginWorkflow($definition, $page); $instance->execute(); // execute the "publish" workflow action $action = new PublishItemWorkflowAction(); $action->execute($instance); // re-fetch the Page again. $page = Page::get()->byId($page->ID); // We now have a PublishOnDate field set $this->assertEquals('2010-01-01 00:00:00', $page->PublishOnDate); $this->assertEmpty($page->DesiredPublishDate); // Publish job has been setup $this->assertNotEmpty($page->PublishJobID); $this->assertEmpty($page->UnPublishJobID); // Check that this publish job is set for immediate run $publish = strtotime($page->PublishJob()->StartAfter); $this->assertEmpty($publish); }