function testBatchSetResetExpiry()
 {
     $oldRequest = $_REQUEST;
     $action = new BatchSetExpiry();
     $this->assertTrue(is_string($action->getActionTitle()));
     $this->assertTrue(is_string($action->getDoingText()));
     $this->assertTrue($action->getParameterFields() instanceof FieldSet);
     $this->logInAs($this->objFromFixture('Member', 'admin'));
     $page1 = new Page();
     $page1->write();
     $page1->openOrNewWorkflowRequest('WorkflowPublicationRequest');
     $page1ID = $page1->ID;
     $page2 = new Page();
     $page2->Content = '<a href="' . $page1->AbsoluteLink() . '">link here</a>';
     $page2->write();
     $page2ID = $page2->ID;
     $pages = new DataObjectSet();
     $pages->push($page1);
     $pages->push($page2);
     $this->assertEquals(array($page1->ID), $action->applicablePages($pages->column('ID')), 'applicableIds only returns pages with open requests');
     SS_Datetime::set_mock_now('2009-06-15 15:00:00');
     $_REQUEST['ExpiryDate_Batch'] = array('date' => '31/01/2010', 'time' => '3:00 pm');
     $_REQUEST['ajax'] = 1;
     // Test confirmation dialog
     $page1->BacklinkTracking()->add($page2);
     $confirmation = $action->confirmationDialog($pages->column('ID'));
     $this->assertTrue($confirmation['alert']);
     $action->run($pages);
     $page1 = DataObject::get_by_id('Page', $page1ID);
     $page2 = DataObject::get_by_id('Page', $page2ID);
     $this->assertEquals($page1->ExpiryDate, '2010-01-31 15:00:00');
     $this->assertNull($page2->openWorkflowRequest());
     $this->assertNull($page2->ExpiryDate);
     // Now test resetting
     $action = new BatchResetExpiry();
     $this->assertTrue(is_string($action->getActionTitle()));
     $this->assertTrue(is_string($action->getDoingText()));
     $pages = new DataObjectSet();
     $pages->push($page1);
     $pages->push($page2);
     $this->assertEquals(array($page1->ID), $action->applicablePages(array($page1->ID, $page2->ID)), 'applicableIds only returns pages with open requests');
     $action->run($pages);
     $page1 = DataObject::get_by_id('Page', $page1ID);
     $page2 = DataObject::get_by_id('Page', $page2ID);
     $this->assertNull($page1->openWorkflowRequest()->ExpiryDate);
     $this->assertNull($page2->openWorkflowRequest());
     $_REQUEST = $oldRequest;
     SS_Datetime::clear_mock_now();
 }
 function testRecentlyPublishedPagesReport()
 {
     $report = new RecentlyPublishedPagesReport();
     $this->assertTrue(is_string($report->title()));
     $this->assertTrue(is_array($report->columns()));
     $this->assertTrue($report->canView());
     $this->assertTrue($report->parameterFields() instanceof FieldSet);
     $this->logInAs($this->objFromFixture('Member', 'admin'));
     SS_Datetime::set_mock_now('2010-02-10 15:00:00');
     $page1 = new Page();
     $page1->Title = 'Page1';
     $page1->write();
     $wfr = $page1->openOrNewWorkflowRequest('WorkflowPublicationRequest');
     $wfr->request('Request');
     $wfr->approve('Approved');
     SS_Datetime::set_mock_now('2010-02-15 15:00:00');
     $page2 = new Page();
     $page2->Title = 'Page2';
     $page2->write();
     $wfr = $page2->openOrNewWorkflowRequest('WorkflowPublicationRequest');
     $wfr->request('Request');
     $wfr->approve('Approved');
     SS_Datetime::set_mock_now('2010-02-16 15:00:00');
     $page3 = new Page();
     $page3->Title = 'Page3';
     $page3->write();
     $wfr = $page3->openOrNewWorkflowRequest('WorkflowPublicationRequest');
     $wfr->request('Request');
     $wfr->approve('Approved');
     SS_Datetime::set_mock_now('2010-02-14 00:00:00');
     // Test with no dates set
     $results = $report->sourceRecords(array(), '"Title" DESC', false);
     //die();
     $this->assertEquals($results->column('Title'), array('Page3', 'Page2'));
     // Test with start date only
     $results = $report->sourceRecords(array('StartDate' => array('date' => '14/02/2010', 'time' => '12:00 am')), '"Title" DESC', false);
     $this->assertEquals($results->column('Title'), array('Page3', 'Page2'));
     // Test with end date only
     $results = $report->sourceRecords(array('EndDate' => array('date' => '14/02/2010', 'time' => '12:00 am')), '"Title" ASC', false);
     $this->assertEquals($results->column('Title'), array('Page1'));
     // Test with start and end dates
     $results = $report->sourceRecords(array('StartDate' => array('date' => '04/02/2010', 'time' => '12:00 am'), 'EndDate' => array('date' => '12/02/2010', 'time' => '12:00 am')), '"Title" DESC', false);
     $this->assertEquals($results->column('Title'), array('Page1'));
     SS_Datetime::clear_mock_now();
 }
 function testEmbargoExpiryWithVirtualPages()
 {
     $custompublisher = $this->objFromFixture('Member', 'custompublisher');
     $custompublisher->login();
     $sourcePage = new Page();
     $sourcePage->Content = '<p>Pre-embargo</p>';
     $sourcePage->write();
     $sourcePage->doPublish();
     $sourcePage->Content = '<p>Post-embargo</p>';
     $sourcePage->write();
     $request = $sourcePage->openOrNewWorkflowRequest('WorkflowPublicationRequest');
     $sourcePage->setEmbargo('01/06/2050', '3:00pm');
     $sourcePage->write();
     $request->approve('all good');
     $virtualPage = new VirtualPage();
     $virtualPage->CopyContentFromID = $sourcePage->ID;
     $virtualPage->write();
     $virtualPage->doPublish();
     $liveVirtualPage = Versioned::get_one_by_stage('VirtualPage', 'Live', '"SiteTree"."ID" = ' . $virtualPage->ID);
     $this->assertEquals($liveVirtualPage->Content, '<p>Pre-embargo</p>');
 }