Make WordPress Core


Ignore:
Timestamp:
11/08/2013 11:10:41 PM (13 years ago)
Author:
wonderboymusic
Message:

Produce proper CAST for DECIMAL and NUMERIC in Meta Query. Adds a bunch of unit tests.

Props ericlewis.
Fixes #23033.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/meta/query.php

    r26053 r26055  
    109109        /**
    110110         * @ticket 22967
    111          */ 
     111         */
    112112        function test_null_value_sql() {
    113113                global $wpdb;
     
    120120                $this->assertEquals( 1, substr_count( $sql['where'], "CAST($wpdb->postmeta.meta_value AS CHAR) = '')" ) );
    121121        }
     122
     123        /**
     124         * @ticket 23033
     125         */
     126        function test_get_cast_for_type() {
     127                $query = new WP_Meta_Query();
     128                $this->assertEquals( 'BINARY', $query->get_cast_for_type( 'BINARY' ) );
     129                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'CHAR' ) );
     130                $this->assertEquals( 'DATE', $query->get_cast_for_type( 'DATE' ) );
     131                $this->assertEquals( 'DATETIME', $query->get_cast_for_type( 'DATETIME' ) );
     132                $this->assertEquals( 'SIGNED', $query->get_cast_for_type( 'SIGNED' ) );
     133                $this->assertEquals( 'UNSIGNED', $query->get_cast_for_type( 'UNSIGNED' ) );
     134                $this->assertEquals( 'TIME', $query->get_cast_for_type( 'TIME' ) );
     135                $this->assertEquals( 'SIGNED', $query->get_cast_for_type( 'NUMERIC' ) );
     136                $this->assertEquals( 'NUMERIC(10)', $query->get_cast_for_type( 'NUMERIC(10)' ) );
     137                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'NUMERIC( 10)' ) );
     138                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'NUMERIC( 10 )' ) );
     139                $this->assertEquals( 'NUMERIC(10, 5)', $query->get_cast_for_type( 'NUMERIC(10, 5)' ) );
     140                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'NUMERIC(10,  5)' ) );
     141                $this->assertEquals( 'NUMERIC(10,5)', $query->get_cast_for_type( 'NUMERIC(10,5)' ) );
     142                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'NUMERIC( 10, 5 )' ) );
     143                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'NUMERIC(10, 5 )' ) );
     144                $this->assertEquals( 'DECIMAL', $query->get_cast_for_type( 'DECIMAL' ) );
     145                $this->assertEquals( 'DECIMAL(10)', $query->get_cast_for_type( 'DECIMAL(10)' ) );
     146                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'DECIMAL( 10 )' ) );
     147                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'DECIMAL( 10)' ) );
     148                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'DECIMAL(10 )' ) );
     149                $this->assertEquals( 'DECIMAL(10, 5)', $query->get_cast_for_type( 'DECIMAL(10, 5)' ) );
     150                $this->assertEquals( 'DECIMAL(10,5)', $query->get_cast_for_type( 'DECIMAL(10,5)' ) );
     151                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'DECIMAL(10,  5)' ) );
     152
     153                $this->assertEquals( 'CHAR', $query->get_cast_for_type( 'ANYTHING ELSE' ) );
     154        }
    122155}
Note: See TracChangeset for help on using the changeset viewer.