Ticket #27272: 27272_test3.diff
File 27272_test3.diff, 3.0 KB (added by , 9 years ago) |
---|
-
tests/phpunit/tests/meta/query.php
884 884 885 885 $this->assertTrue( $q->has_or_relation() ); 886 886 } 887 888 /** 889 * @group 27272 890 */ 891 function test_cast_both_sides() { 892 global $wpdb; 893 894 $query = new WP_Meta_Query( array( 895 array( 896 'key' => 'number_string', 897 'value' => '1000000', 898 'compare' => '<=', 899 'type' => 'NUMERIC', 900 ), 901 ) ); 902 903 $sql = $query->get_sql( 'post', $wpdb->posts, 'ID', $this ); 904 $this->assertNotContains( "CAST({$wpdb->postmeta}.meta_value AS SIGNED) <= '1000000'", $sql['where'] ); 905 $this->assertContains( "CAST({$wpdb->postmeta}.meta_value AS SIGNED) <= 1000000", $sql['where'] ); 906 } 887 907 } -
tests/phpunit/tests/meta.php
254 254 ) ); 255 255 256 256 $this->assertEquals( array( $post_id2, $post_id1 ), $posts->posts ); 257 $this->assertNotContains( "> '0'", $posts->request ); 258 $this->assertContains( "> 0", $posts->request ); 257 259 $this->assertEquals( 2, substr_count( $posts->request, 'CAST(' ) ); 258 260 } 259 261 -
tests/phpunit/tests/query/metaQuery.php
1694 1694 1695 1695 $this->assertEqualSets( array( 'foo_key', 'foo_key-1', 'foo_key-2' ), array_keys( $q->meta_query->get_clauses() ) ); 1696 1696 } 1697 1698 /** 1699 * @ticket 27272 1700 */ 1701 public function test_cast_value_numeric_big() { 1702 $posts = $this->factory->post->create_many( 1 ); 1703 1704 // Will trigger (depending on system) MySQL string to float type conversion on quoted numbers. 1705 $big_int = 0x20000000000001; // 0x20 0000 0000 0001 (54 bit integer + 1, 9007199254740993). 1706 update_post_meta( $posts[0], 'foo', $big_int - 1 ); 1707 1708 $q = new WP_Query( array( 1709 'update_post_meta_cache' => false, 1710 'update_term_meta_cache' => false, 1711 'fields' => 'ids', 1712 'meta_query' => array( 1713 array( 1714 'key' => 'foo', 1715 'value' => $big_int, 1716 'compare' => '<', 1717 'type' => 'NUMERIC', 1718 ), 1719 ), 1720 ) ); 1721 1722 $this->assertEquals( array( $posts[0] ), $q->posts ); 1723 } 1724 1725 /** 1726 * @ticket 27272 1727 */ 1728 public function test_cast_value_numeric_max() { 1729 $posts = $this->factory->post->create_many( 1 ); 1730 1731 $max_int = PHP_INT_MAX; 1732 update_post_meta( $posts[0], 'foo', $max_int - 1 ); 1733 1734 $q = new WP_Query( array( 1735 'update_post_meta_cache' => false, 1736 'update_term_meta_cache' => false, 1737 'fields' => 'ids', 1738 'meta_query' => array( 1739 array( 1740 'key' => 'foo', 1741 'value' => $max_int, 1742 'compare' => '<', 1743 'type' => 'NUMERIC', 1744 ), 1745 ), 1746 ) ); 1747 1748 $this->assertEquals( array( $posts[0] ), $q->posts ); 1749 } 1697 1750 }