PHPonTraxTest
[ class tree: PHPonTraxTest ] [ index: PHPonTraxTest ] [ all elements ]

Source for file DateHelperTest.php

Documentation is available at DateHelperTest.php

  1. <?php
  2. /**
  3.  *  File for the DateHelperTest class
  4.  *
  5.  * (PHP 5)
  6.  *
  7.  * @package PHPonTraxTest
  8.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  9.  * @copyright (c) Walter O. Haas 2006
  10.  * @version $Id: DateHelperTest.php 198 2006-04-20 16:20:30Z haas $
  11.  * @author Walt Haas <haas@xmission.com>
  12.  */
  13.  
  14. echo "testing DateHelper\n";
  15. require_once 'testenv.php';
  16.  
  17. // Call DateHelperTest::main() if this source file is executed directly.
  18. if (!defined("PHPUnit2_MAIN_METHOD")) {
  19.     define("PHPUnit2_MAIN_METHOD""DateHelperTest::main");
  20. }
  21.  
  22. require_once "PHPUnit2/Framework/TestCase.php";
  23. require_once "PHPUnit2/Framework/TestSuite.php";
  24.  
  25. // You may remove the following line when all tests have been implemented.
  26. require_once "PHPUnit2/Framework/IncompleteTestError.php";
  27.  
  28. //  Create an ActiveRecord and an ActionController to test with
  29. @ini_set('include_path',
  30.          './mockActiveRecord:./mockActionController:'.ini_get('include_path'));
  31. require_once "active_record.php";
  32. require_once "action_controller.php";
  33. require_once "trax_exceptions.php";
  34. require_once "action_view/helpers.php";
  35. require_once "action_view/helpers/date_helper.php";
  36.  
  37. /**
  38.  *  Extend the DateHelper class so we can access protected stuff
  39.  */
  40. class ExDateHelper extends DateHelper
  41. {
  42.     function value({
  43.         return parent::value();
  44.     }
  45. }
  46.  
  47.  
  48. /**
  49.  * Test class for DateHelper.
  50.  * Generated by PHPUnit2_Util_Skeleton on 2006-03-01 at 13:17:32.
  51.  */
  52. class DateHelperTest extends PHPUnit2_Framework_TestCase {
  53.     /**
  54.      * Runs the test methods of this class.
  55.      *
  56.      * @access public
  57.      * @static
  58.      */
  59.     public static function main({
  60.         require_once "PHPUnit2/TextUI/TestRunner.php";
  61.  
  62.         $suite  new PHPUnit2_Framework_TestSuite("DateHelperTest");
  63.         $result PHPUnit2_TextUI_TestRunner::run($suite);
  64.     }
  65.  
  66.     /**
  67.      * Sets up the fixture, for example, open a network connection.
  68.      * This method is called before a test is executed.
  69.      *
  70.      * @access protected
  71.      */
  72.     protected function setUp({
  73.     }
  74.  
  75.     /**
  76.      * Tears down the fixture, for example, close a network connection.
  77.      * This method is called after a test is executed.
  78.      *
  79.      * @access protected
  80.      */
  81.     protected function tearDown({
  82.         unset($_REQUEST);
  83.     }
  84.  
  85.     /**
  86.      *  Test __construct()
  87.      *
  88.      *  Test the {@link DateHelper::__construct() constructor}
  89.      */
  90.     public function testConstruct({
  91.         $dh new DateHelper('Foo''bar');
  92.         $this->assertEquals('Foo'$dh->object_name);
  93.         $this->assertEquals('bar'$dh->attribute_name);
  94.     }
  95.  
  96.     /**
  97.      *  Test the expiration_date_select() method
  98.      *
  99.      *  Test the {@link DateHelper::expiration_date_select()} method
  100.      */
  101.     public function testExpiration_date_select({
  102.         $dh new DateHelper('License''expiration_date');
  103.         $_REQUEST['License']['expiration_date(1i)'date('Y');
  104.         $_REQUEST['License']['expiration_date(2i)''08';
  105.  
  106.         //  Test expiration date of August this year
  107.         $this->assertContains('<option value="'.date('Y').
  108.                               '"  selected="selected"',
  109.                               $dh->expiration_date_select());
  110.         $this->assertContains('<option value="'.(date('Y')+7).'"',
  111.                               $dh->expiration_date_select());
  112.         $this->assertContains('<option value="08" selected="selected">'
  113.                               . '8</option>',
  114.                               $dh->expiration_date_select());
  115.     }
  116.  
  117.     /**
  118.      *  Test datetime_select() method
  119.      *
  120.      *  Test the {@link DateHelper::datetime_select()} method
  121.      */
  122.     public function testDatetime_select_method({
  123.         $dh new DateHelper('Person','birth');
  124.         $dh->controller_object new ActionController;
  125.         $ar new ActiveRecord;
  126.         $dh->controller_object->Person $ar;
  127.  
  128.         //  With no value in $_REQUEST, data should be
  129.         //  retrieved from the the ActiveRecord
  130.         $ar->expect_query("birth","2001-07-05 11:30:45");
  131.         $this->assertEquals('<select name="Person[birth(1i)]">' "\n"
  132.            . '<option value="1996">1996</option>' "\n"
  133.            . '<option value="1997">1997</option>' "\n"
  134.            . '<option value="1998">1998</option>' "\n"
  135.            . '<option value="1999">1999</option>' "\n"
  136.            . '<option value="2000">2000</option>' "\n"
  137.            . '<option value="2001"  selected="selected">2001</option>' "\n"
  138.            . '<option value="2002">2002</option>' "\n"
  139.            . '<option value="2003">2003</option>' "\n"
  140.            . '<option value="2004">2004</option>' "\n"
  141.            . '<option value="2005">2005</option>' "\n"
  142.            . '<option value="2006">2006</option>' "\n"
  143.            . '</select>' "\n"
  144.            . '<select name="Person[birth(2i)]">' "\n"
  145.            . '<option value="01">January</option>' "\n"
  146.            . '<option value="02">February</option>' "\n"
  147.            . '<option value="03">March</option>' "\n"
  148.            . '<option value="04">April</option>' "\n"
  149.            . '<option value="05">May</option>' "\n"
  150.            . '<option value="06">June</option>' "\n"
  151.            . '<option value="07" selected="selected">July</option>' "\n"
  152.            . '<option value="08">August</option>' "\n"
  153.            . '<option value="09">September</option>' "\n"
  154.            . '<option value="10">October</option>' "\n"
  155.            . '<option value="11">November</option>' "\n"
  156.            . '<option value="12">December</option>' "\n"
  157.            . '</select>' "\n"
  158.            . '<select name="Person[birth(3i)]">' "\n"
  159.            . '<option value="01">01</option>' "\n"
  160.            . '<option value="02">02</option>' "\n"
  161.            . '<option value="03">03</option>' "\n"
  162.            . '<option value="04">04</option>' "\n"
  163.            . '<option value="05"  selected="selected">05</option>' "\n"
  164.            . '<option value="06">06</option>' "\n"
  165.            . '<option value="07">07</option>' "\n"
  166.            . '<option value="08">08</option>' "\n"
  167.            . '<option value="09">09</option>' "\n"
  168.            . '<option value="10">10</option>' "\n"
  169.            . '<option value="11">11</option>' "\n"
  170.            . '<option value="12">12</option>' "\n"
  171.            . '<option value="13">13</option>' "\n"
  172.            . '<option value="14">14</option>' "\n"
  173.            . '<option value="15">15</option>' "\n"
  174.            . '<option value="16">16</option>' "\n"
  175.            . '<option value="17">17</option>' "\n"
  176.            . '<option value="18">18</option>' "\n"
  177.            . '<option value="19">19</option>' "\n"
  178.            . '<option value="20">20</option>' "\n"
  179.            . '<option value="21">21</option>' "\n"
  180.            . '<option value="22">22</option>' "\n"
  181.            . '<option value="23">23</option>' "\n"
  182.            . '<option value="24">24</option>' "\n"
  183.            . '<option value="25">25</option>' "\n"
  184.            . '<option value="26">26</option>' "\n"
  185.            . '<option value="27">27</option>' "\n"
  186.            . '<option value="28">28</option>' "\n"
  187.            . '<option value="29">29</option>' "\n"
  188.            . '<option value="30">30</option>' "\n"
  189.            . '<option value="31">31</option>' "\n"
  190.            . '</select>' "\n"
  191.            . ' &mdash; <select name="Person[birth(4i)]">' "\n"
  192.            . '<option value="00">00</option>' "\n"
  193.            . '<option value="01">01</option>' "\n"
  194.            . '<option value="02">02</option>' "\n"
  195.            . '<option value="03">03</option>' "\n"
  196.            . '<option value="04">04</option>' "\n"
  197.            . '<option value="05">05</option>' "\n"
  198.            . '<option value="06">06</option>' "\n"
  199.            . '<option value="07">07</option>' "\n"
  200.            . '<option value="08">08</option>' "\n"
  201.            . '<option value="09">09</option>' "\n"
  202.            . '<option value="10">10</option>' "\n"
  203.            . '<option value="11"  selected="selected">11</option>' "\n"
  204.            . '<option value="12">12</option>' "\n"
  205.            . '<option value="13">13</option>' "\n"
  206.            . '<option value="14">14</option>' "\n"
  207.            . '<option value="15">15</option>' "\n"
  208.            . '<option value="16">16</option>' "\n"
  209.            . '<option value="17">17</option>' "\n"
  210.            . '<option value="18">18</option>' "\n"
  211.            . '<option value="19">19</option>' "\n"
  212.            . '<option value="20">20</option>' "\n"
  213.            . '<option value="21">21</option>' "\n"
  214.            . '<option value="22">22</option>' "\n"
  215.            . '<option value="23">23</option>' "\n"
  216.            . '</select>' "\n"
  217.            . ' : <select name="Person[birth(5i)]">' "\n"
  218.            . '<option value="00">00</option>' "\n"
  219.            . '<option value="01">01</option>' "\n"
  220.            . '<option value="02">02</option>' "\n"
  221.            . '<option value="03">03</option>' "\n"
  222.            . '<option value="04">04</option>' "\n"
  223.            . '<option value="05">05</option>' "\n"
  224.            . '<option value="06">06</option>' "\n"
  225.            . '<option value="07">07</option>' "\n"
  226.            . '<option value="08">08</option>' "\n"
  227.            . '<option value="09">09</option>' "\n"
  228.            . '<option value="10">10</option>' "\n"
  229.            . '<option value="11">11</option>' "\n"
  230.            . '<option value="12">12</option>' "\n"
  231.            . '<option value="13">13</option>' "\n"
  232.            . '<option value="14">14</option>' "\n"
  233.            . '<option value="15">15</option>' "\n"
  234.            . '<option value="16">16</option>' "\n"
  235.            . '<option value="17">17</option>' "\n"
  236.            . '<option value="18">18</option>' "\n"
  237.            . '<option value="19">19</option>' "\n"
  238.            . '<option value="20">20</option>' "\n"
  239.            . '<option value="21">21</option>' "\n"
  240.            . '<option value="22">22</option>' "\n"
  241.            . '<option value="23">23</option>' "\n"
  242.            . '<option value="24">24</option>' "\n"
  243.            . '<option value="25">25</option>' "\n"
  244.            . '<option value="26">26</option>' "\n"
  245.            . '<option value="27">27</option>' "\n"
  246.            . '<option value="28">28</option>' "\n"
  247.            . '<option value="29">29</option>' "\n"
  248.            . '<option value="30"  selected="selected">30</option>' "\n"
  249.            . '<option value="31">31</option>' "\n"
  250.            . '<option value="32">32</option>' "\n"
  251.            . '<option value="33">33</option>' "\n"
  252.            . '<option value="34">34</option>' "\n"
  253.            . '<option value="35">35</option>' "\n"
  254.            . '<option value="36">36</option>' "\n"
  255.            . '<option value="37">37</option>' "\n"
  256.            . '<option value="38">38</option>' "\n"
  257.            . '<option value="39">39</option>' "\n"
  258.            . '<option value="40">40</option>' "\n"
  259.            . '<option value="41">41</option>' "\n"
  260.            . '<option value="42">42</option>' "\n"
  261.            . '<option value="43">43</option>' "\n"
  262.            . '<option value="44">44</option>' "\n"
  263.            . '<option value="45">45</option>' "\n"
  264.            . '<option value="46">46</option>' "\n"
  265.            . '<option value="47">47</option>' "\n"
  266.            . '<option value="48">48</option>' "\n"
  267.            . '<option value="49">49</option>' "\n"
  268.            . '<option value="50">50</option>' "\n"
  269.            . '<option value="51">51</option>' "\n"
  270.            . '<option value="52">52</option>' "\n"
  271.            . '<option value="53">53</option>' "\n"
  272.            . '<option value="54">54</option>' "\n"
  273.            . '<option value="55">55</option>' "\n"
  274.            . '<option value="56">56</option>' "\n"
  275.            . '<option value="57">57</option>' "\n"
  276.            . '<option value="58">58</option>' "\n"
  277.            . '<option value="59">59</option>' "\n"
  278.            . '</select>' "\n",
  279.            $dh->datetime_select());
  280.     }
  281.  
  282.     /**
  283.      *  Test datetime_select() function
  284.      *
  285.      *  Test the {@link datetime_select()} function in procedural file
  286.      *  {@link date_helper.php}
  287.      */
  288.     public function testDatetime_select_function({
  289.  
  290.         //  Values from $_REQUEST, default format
  291.         $_REQUEST['Person']['birth(1i)''2001';
  292.         $_REQUEST['Person']['birth(2i)''07';
  293.         $_REQUEST['Person']['birth(3i)''05';
  294.         $_REQUEST['Person']['birth(4i)''11';
  295.         $_REQUEST['Person']['birth(5i)''30';
  296.         $this->assertEquals('<select name="Person[birth(1i)]">' "\n"
  297.            . '<option value="1996">1996</option>' "\n"
  298.            . '<option value="1997">1997</option>' "\n"
  299.            . '<option value="1998">1998</option>' "\n"
  300.            . '<option value="1999">1999</option>' "\n"
  301.            . '<option value="2000">2000</option>' "\n"
  302.            . '<option value="2001"  selected="selected">2001</option>' "\n"
  303.            . '<option value="2002">2002</option>' "\n"
  304.            . '<option value="2003">2003</option>' "\n"
  305.            . '<option value="2004">2004</option>' "\n"
  306.            . '<option value="2005">2005</option>' "\n"
  307.            . '<option value="2006">2006</option>' "\n"
  308.            . '</select>' "\n"
  309.            . '<select name="Person[birth(2i)]">' "\n"
  310.            . '<option value="01">January</option>' "\n"
  311.            . '<option value="02">February</option>' "\n"
  312.            . '<option value="03">March</option>' "\n"
  313.            . '<option value="04">April</option>' "\n"
  314.            . '<option value="05">May</option>' "\n"
  315.            . '<option value="06">June</option>' "\n"
  316.            . '<option value="07" selected="selected">July</option>' "\n"
  317.            . '<option value="08">August</option>' "\n"
  318.            . '<option value="09">September</option>' "\n"
  319.            . '<option value="10">October</option>' "\n"
  320.            . '<option value="11">November</option>' "\n"
  321.            . '<option value="12">December</option>' "\n"
  322.            . '</select>' "\n"
  323.            . '<select name="Person[birth(3i)]">' "\n"
  324.            . '<option value="01">01</option>' "\n"
  325.            . '<option value="02">02</option>' "\n"
  326.            . '<option value="03">03</option>' "\n"
  327.            . '<option value="04">04</option>' "\n"
  328.            . '<option value="05"  selected="selected">05</option>' "\n"
  329.            . '<option value="06">06</option>' "\n"
  330.            . '<option value="07">07</option>' "\n"
  331.            . '<option value="08">08</option>' "\n"
  332.            . '<option value="09">09</option>' "\n"
  333.            . '<option value="10">10</option>' "\n"
  334.            . '<option value="11">11</option>' "\n"
  335.            . '<option value="12">12</option>' "\n"
  336.            . '<option value="13">13</option>' "\n"
  337.            . '<option value="14">14</option>' "\n"
  338.            . '<option value="15">15</option>' "\n"
  339.            . '<option value="16">16</option>' "\n"
  340.            . '<option value="17">17</option>' "\n"
  341.            . '<option value="18">18</option>' "\n"
  342.            . '<option value="19">19</option>' "\n"
  343.            . '<option value="20">20</option>' "\n"
  344.            . '<option value="21">21</option>' "\n"
  345.            . '<option value="22">22</option>' "\n"
  346.            . '<option value="23">23</option>' "\n"
  347.            . '<option value="24">24</option>' "\n"
  348.            . '<option value="25">25</option>' "\n"
  349.            . '<option value="26">26</option>' "\n"
  350.            . '<option value="27">27</option>' "\n"
  351.            . '<option value="28">28</option>' "\n"
  352.            . '<option value="29">29</option>' "\n"
  353.            . '<option value="30">30</option>' "\n"
  354.            . '<option value="31">31</option>' "\n"
  355.            . '</select>' "\n"
  356.            . ' &mdash; <select name="Person[birth(4i)]">' "\n"
  357.            . '<option value="00">00</option>' "\n"
  358.            . '<option value="01">01</option>' "\n"
  359.            . '<option value="02">02</option>' "\n"
  360.            . '<option value="03">03</option>' "\n"
  361.            . '<option value="04">04</option>' "\n"
  362.            . '<option value="05">05</option>' "\n"
  363.            . '<option value="06">06</option>' "\n"
  364.            . '<option value="07">07</option>' "\n"
  365.            . '<option value="08">08</option>' "\n"
  366.            . '<option value="09">09</option>' "\n"
  367.            . '<option value="10">10</option>' "\n"
  368.            . '<option value="11"  selected="selected">11</option>' "\n"
  369.            . '<option value="12">12</option>' "\n"
  370.            . '<option value="13">13</option>' "\n"
  371.            . '<option value="14">14</option>' "\n"
  372.            . '<option value="15">15</option>' "\n"
  373.            . '<option value="16">16</option>' "\n"
  374.            . '<option value="17">17</option>' "\n"
  375.            . '<option value="18">18</option>' "\n"
  376.            . '<option value="19">19</option>' "\n"
  377.            . '<option value="20">20</option>' "\n"
  378.            . '<option value="21">21</option>' "\n"
  379.            . '<option value="22">22</option>' "\n"
  380.            . '<option value="23">23</option>' "\n"
  381.            . '</select>' "\n"
  382.            . ' : <select name="Person[birth(5i)]">' "\n"
  383.            . '<option value="00">00</option>' "\n"
  384.            . '<option value="01">01</option>' "\n"
  385.            . '<option value="02">02</option>' "\n"
  386.            . '<option value="03">03</option>' "\n"
  387.            . '<option value="04">04</option>' "\n"
  388.            . '<option value="05">05</option>' "\n"
  389.            . '<option value="06">06</option>' "\n"
  390.            . '<option value="07">07</option>' "\n"
  391.            . '<option value="08">08</option>' "\n"
  392.            . '<option value="09">09</option>' "\n"
  393.            . '<option value="10">10</option>' "\n"
  394.            . '<option value="11">11</option>' "\n"
  395.            . '<option value="12">12</option>' "\n"
  396.            . '<option value="13">13</option>' "\n"
  397.            . '<option value="14">14</option>' "\n"
  398.            . '<option value="15">15</option>' "\n"
  399.            . '<option value="16">16</option>' "\n"
  400.            . '<option value="17">17</option>' "\n"
  401.            . '<option value="18">18</option>' "\n"
  402.            . '<option value="19">19</option>' "\n"
  403.            . '<option value="20">20</option>' "\n"
  404.            . '<option value="21">21</option>' "\n"
  405.            . '<option value="22">22</option>' "\n"
  406.            . '<option value="23">23</option>' "\n"
  407.            . '<option value="24">24</option>' "\n"
  408.            . '<option value="25">25</option>' "\n"
  409.            . '<option value="26">26</option>' "\n"
  410.            . '<option value="27">27</option>' "\n"
  411.            . '<option value="28">28</option>' "\n"
  412.            . '<option value="29">29</option>' "\n"
  413.            . '<option value="30"  selected="selected">30</option>' "\n"
  414.            . '<option value="31">31</option>' "\n"
  415.            . '<option value="32">32</option>' "\n"
  416.            . '<option value="33">33</option>' "\n"
  417.            . '<option value="34">34</option>' "\n"
  418.            . '<option value="35">35</option>' "\n"
  419.            . '<option value="36">36</option>' "\n"
  420.            . '<option value="37">37</option>' "\n"
  421.            . '<option value="38">38</option>' "\n"
  422.            . '<option value="39">39</option>' "\n"
  423.            . '<option value="40">40</option>' "\n"
  424.            . '<option value="41">41</option>' "\n"
  425.            . '<option value="42">42</option>' "\n"
  426.            . '<option value="43">43</option>' "\n"
  427.            . '<option value="44">44</option>' "\n"
  428.            . '<option value="45">45</option>' "\n"
  429.            . '<option value="46">46</option>' "\n"
  430.            . '<option value="47">47</option>' "\n"
  431.            . '<option value="48">48</option>' "\n"
  432.            . '<option value="49">49</option>' "\n"
  433.            . '<option value="50">50</option>' "\n"
  434.            . '<option value="51">51</option>' "\n"
  435.            . '<option value="52">52</option>' "\n"
  436.            . '<option value="53">53</option>' "\n"
  437.            . '<option value="54">54</option>' "\n"
  438.            . '<option value="55">55</option>' "\n"
  439.            . '<option value="56">56</option>' "\n"
  440.            . '<option value="57">57</option>' "\n"
  441.            . '<option value="58">58</option>' "\n"
  442.            . '<option value="59">59</option>' "\n"
  443.            . '</select>' "\n",
  444.            datetime_select('Person''birth'));
  445.     }
  446.  
  447.     /**
  448.      *  Test date_select_method()
  449.      *
  450.      *  Test the {@link DateHelper::date_select()} method
  451.      */
  452.     public function testDate_select_method({
  453.         $dh new DateHelper('Person''birthdate');
  454.         $_REQUEST['Person']['birthdate(1i)''1955';
  455.         $_REQUEST['Person']['birthdate(2i)''08';
  456.         $_REQUEST['Person']['birthdate(3i)''13';
  457.  
  458.         //  Test with default format
  459.         $this->assertEquals('<select name="Person[birthdate(1i)]">' "\n"
  460.            . '<option value="1950">1950</option>' "\n"
  461.            . '<option value="1951">1951</option>' "\n"
  462.            . '<option value="1952">1952</option>' "\n"
  463.            . '<option value="1953">1953</option>' "\n"
  464.            . '<option value="1954">1954</option>' "\n"
  465.            . '<option value="1955"  selected="selected">1955</option>' "\n"
  466.            . '<option value="1956">1956</option>' "\n"
  467.            . '<option value="1957">1957</option>' "\n"
  468.            . '<option value="1958">1958</option>' "\n"
  469.            . '<option value="1959">1959</option>' "\n"
  470.            . '<option value="1960">1960</option>' "\n"
  471.            . '</select>' "\n"
  472.            . ' <select name="Person[birthdate(2i)]">' "\n"
  473.            . '<option value="01">January</option>' "\n"
  474.            . '<option value="02">February</option>' "\n"
  475.            . '<option value="03">March</option>' "\n"
  476.            . '<option value="04">April</option>' "\n"
  477.            . '<option value="05">May</option>' "\n"
  478.            . '<option value="06">June</option>' "\n"
  479.            . '<option value="07">July</option>' "\n"
  480.            . '<option value="08" selected="selected">August</option>' "\n"
  481.            . '<option value="09">September</option>' "\n"
  482.            . '<option value="10">October</option>' "\n"
  483.            . '<option value="11">November</option>' "\n"
  484.            . '<option value="12">December</option>' "\n"
  485.            . '</select>' "\n"
  486.            . ' <select name="Person[birthdate(3i)]">' "\n"
  487.            . '<option value="01">01</option>' "\n"
  488.            . '<option value="02">02</option>' "\n"
  489.            . '<option value="03">03</option>' "\n"
  490.            . '<option value="04">04</option>' "\n"
  491.            . '<option value="05">05</option>' "\n"
  492.            . '<option value="06">06</option>' "\n"
  493.            . '<option value="07">07</option>' "\n"
  494.            . '<option value="08">08</option>' "\n"
  495.            . '<option value="09">09</option>' "\n"
  496.            . '<option value="10">10</option>' "\n"
  497.            . '<option value="11">11</option>' "\n"
  498.            . '<option value="12">12</option>' "\n"
  499.            . '<option value="13"  selected="selected">13</option>' "\n"
  500.            . '<option value="14">14</option>' "\n"
  501.            . '<option value="15">15</option>' "\n"
  502.            . '<option value="16">16</option>' "\n"
  503.  &nbs