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);
 }