WordPress.org

Make WordPress Core

Changeset 272 in tests


Ignore:
Timestamp:
11/22/09 22:50:39 (4 years ago)
Author:
westi
Message:

Split the cron tests into two sections - one for the scheduling and one for the running.
Reinstate the tests involving the scheduling code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_cron.php

    r217 r272  
    11<?php 
    2 /* 
    3  * Disable the WP Cron test for the moment as it kills the whole test suite. 
    4  * TODO - Fix it to work with the new cron implementation in trunk 
    5  *  
    62// test the cron scheduling functions 
    73 
    8 class WPTestCron extends _WPEmptyBlog { 
     4class WPTestCronScheduling extends _WPEmptyBlog { 
    95    function setUp() { 
    106        parent::setUp(); 
     
    124120        $this->assertFalse( wp_next_scheduled($hook, $args) ); 
    125121    } 
    126      
    127     function _do_cron() { 
    128         // FIXME: wp-cron.php is difficult to test, could be wrapped in a function 
    129         $_GET['check'] = wp_hash('187425'); 
    130         require(ABSPATH.'/wp-cron.php'); 
    131     } 
    132  
    133     function test_run_schedule_single() { 
    134         // schedule an event, run it, and make sure the hook is called 
    135         $hook = rand_str(); 
    136         $args = array(rand_str()); 
    137         $timestamp = strtotime('-1 second'); 
    138  
    139         // register a test action 
    140         $a = new MockAction(); 
    141         add_action($hook, array(&$a, 'action')); 
    142  
    143         // schedule an event for 1 second ago 
    144         wp_schedule_single_event( $timestamp, $hook, $args ); 
    145         $this->assertEquals( $timestamp, wp_next_scheduled($hook, $args) ); 
    146  
    147         // run cron jobs 
    148         $this->_do_cron(); 
    149  
    150         // our action should have been called once with the correct args 
    151         $this->assertEquals( 1, $a->get_call_count() ); 
    152         $this->assertEquals( array($args), $a->get_args() ); 
    153          
    154         // it shouldn't appear in the schedule anymore 
    155         $this->assertFalse( wp_next_scheduled($hook, $args) ); 
    156  
    157     } 
    158      
    159     function test_run_schedule_recurring() { 
    160         // schedule a recurring event, run it, and make sure the hook is called 
    161         $hook = rand_str(); 
    162         $args = array(rand_str()); 
    163         $timestamp = strtotime('-1 second'); 
    164         $recur = 'hourly'; 
    165  
    166         // register a test action 
    167         $a = new MockAction(); 
    168         add_action($hook, array(&$a, 'action')); 
    169  
    170         // schedule an event for 1 second ago 
    171         wp_schedule_event( $timestamp, $recur, $hook, $args ); 
    172         $this->assertEquals( $timestamp, wp_next_scheduled($hook, $args) ); 
    173         $this->assertEquals( $recur, wp_get_schedule($hook, $args) ); 
    174  
    175         // run cron jobs 
    176         $this->_do_cron(); 
    177  
    178         // our action should have been called once with the correct args 
    179         $this->assertEquals( 1, $a->get_call_count() ); 
    180         $this->assertEquals( array($args), $a->get_args() ); 
    181          
    182         // it should appear in the schedule to run again in an hour's time 
    183         $this->assertEquals( $timestamp + 3600, wp_next_scheduled($hook, $args) ); 
    184  
    185     } 
    186      
     122 
    187123    function test_duplicate_event() { 
    188124        $this->knownWPBug(6966); 
     
    221157        $this->assertEquals( $ts1, wp_next_scheduled($hook, $args) ); 
    222158    } 
    223  
     159} 
     160 
     161/* 
     162 * Disable the WP Cron running test for the moment as it kills the whole test suite. 
     163 * TODO - Fix it to work with the new cron implementation in trunk 
     164 *  
     165class WPTestCronRunning extends _WPEmptyBlog { 
     166    function setUp() { 
     167        parent::setUp(); 
     168        // make sure the schedule is clear 
     169        _set_cron_array(array()); 
     170    } 
     171 
     172    function tearDown() { 
     173        parent::tearDown(); 
     174        // make sure the schedule is clear 
     175        _set_cron_array(array()); 
     176    } 
     177    function _do_cron() { 
     178        // FIXME: wp-cron.php is difficult to test, could be wrapped in a function 
     179        $_GET['check'] = wp_hash('187425'); 
     180        require(ABSPATH.'/wp-cron.php'); 
     181    } 
     182 
     183    function test_run_schedule_single() { 
     184        // schedule an event, run it, and make sure the hook is called 
     185        $hook = rand_str(); 
     186        $args = array(rand_str()); 
     187        $timestamp = strtotime('-1 second'); 
     188 
     189        // register a test action 
     190        $a = new MockAction(); 
     191        add_action($hook, array(&$a, 'action')); 
     192 
     193        // schedule an event for 1 second ago 
     194        wp_schedule_single_event( $timestamp, $hook, $args ); 
     195        $this->assertEquals( $timestamp, wp_next_scheduled($hook, $args) ); 
     196 
     197        // run cron jobs 
     198        $this->_do_cron(); 
     199 
     200        // our action should have been called once with the correct args 
     201        $this->assertEquals( 1, $a->get_call_count() ); 
     202        $this->assertEquals( array($args), $a->get_args() ); 
     203         
     204        // it shouldn't appear in the schedule anymore 
     205        $this->assertFalse( wp_next_scheduled($hook, $args) ); 
     206 
     207    } 
     208     
     209    function test_run_schedule_recurring() { 
     210        // schedule a recurring event, run it, and make sure the hook is called 
     211        $hook = rand_str(); 
     212        $args = array(rand_str()); 
     213        $timestamp = strtotime('-1 second'); 
     214        $recur = 'hourly'; 
     215 
     216        // register a test action 
     217        $a = new MockAction(); 
     218        add_action($hook, array(&$a, 'action')); 
     219 
     220        // schedule an event for 1 second ago 
     221        wp_schedule_event( $timestamp, $recur, $hook, $args ); 
     222        $this->assertEquals( $timestamp, wp_next_scheduled($hook, $args) ); 
     223        $this->assertEquals( $recur, wp_get_schedule($hook, $args) ); 
     224 
     225        // run cron jobs 
     226        $this->_do_cron(); 
     227 
     228        // our action should have been called once with the correct args 
     229        $this->assertEquals( 1, $a->get_call_count() ); 
     230        $this->assertEquals( array($args), $a->get_args() ); 
     231         
     232        // it should appear in the schedule to run again in an hour's time 
     233        $this->assertEquals( $timestamp + 3600, wp_next_scheduled($hook, $args) ); 
     234 
     235    } 
    224236} 
    225237*/ 
Note: See TracChangeset for help on using the changeset viewer.