Commit Graph

42 Commits

Author SHA1 Message Date
Boone Gorges
cc41c59286 Streamline WP_Date_Query unit tests.
By creating less dummy data and eliminating redundant tests, we cut group
execution time by more than 50%.

See #30017.

git-svn-id: https://develop.svn.wordpress.org/trunk@29993 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-23 01:55:43 +00:00
Boone Gorges
00f7ae376a Better "inclusive" support for string values in WP_Date_Query.
The 'inclusive' parameter for WP_Date_Query determines whether non-precise
dates for 'before' and 'after' will be rounded up or down. Previously, this was
supported only when 'before' and 'after' were arrays; string-formatted dates
were run through strtotime(), which rounded them all down (inclusive in the
case of after, non-inclusive in the case of before). Now, we attempt to parse
formats that look like MySQL-formatted date strings, and apply inclusive logic
to them if we recognize them successfully.

Fixes #29908.
string values. Array values support the 'inclusive

git-svn-id: https://develop.svn.wordpress.org/trunk@29936 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-17 02:27:44 +00:00
Boone Gorges
42646e67b3 Use table aliases for columns in SQL generated by WP_Date_Query.
The use of non-aliased column names (eg 'post_date' instead of 'wp_posts.post_date')
in WP_Date_Query causes SQL notices and other failures when queries involve
table joins, such as date_query combined with tax_query or meta_query. This
changeset modifies WP_Date_Query::validate_column() to add the table alias when
it can be detected from the column name (ie, in the case of core columns).

A side effect of this change is that it is now possible to use WP_Date_Query
to build WHERE clauses across multiple tables, though there is currently no
core support for the automatic generation of the necessary JOIN clauses. See

Props ew_holmes, wonderboymusic, neoxx, Viper007Bond, boonebgorges.
Fixes #25775.

git-svn-id: https://develop.svn.wordpress.org/trunk@29933 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-17 01:19:03 +00:00
Boone Gorges
8692199bb5 Add expectedIncorrectUsage flags for unit tests that generate invalid dates.
Since [29925], passing an invalid date to WP_Date_Query will generate a
_doing_it_wrong() notice. The current changeset adds the
`@expectedIncorrectUsage` flag to those existing unit tests that generate
invalid dates, such as those that test canonical redirect and is_404()
conditionals.

Fixes #25834.

git-svn-id: https://develop.svn.wordpress.org/trunk@29932 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-17 00:40:06 +00:00
Boone Gorges
a3e0c08f2f Introduce nested query support to WP_Date_Query.
This enhancement makes it possible to filter post, comment, and other queries
by date in ways that are arbitrarily complex, using mixed AND and OR relations.

Includes unit tests for the new syntax. In a few places, the existing unit
tests were slightly too strict (such as when checking the exact syntax of a SQL
string); these existing tests have been narrowed.

Props boonebgorges.
Fixes #29822.

git-svn-id: https://develop.svn.wordpress.org/trunk@29923 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-16 19:33:24 +00:00
Boone Gorges
e36cac6794 Check that search value is scalar before parsing.
Prevents PHP notices when non-scalar values are passed.

Includes unit tests.

Props tivnet.
Fixes #29736.

git-svn-id: https://develop.svn.wordpress.org/trunk@29912 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-16 03:31:27 +00:00
Boone Gorges
c10a0ae277 Don't create dummy data for each date query test.
The integration tests for using date_query in WP_Query require the creation of
dummy post data, much of which is common between a number of tests. However,
newer tests do not require as much data, so to reduce overhead we create the
data explicitly only when we need it, instead of in the setUp() method.

See #29781.

git-svn-id: https://develop.svn.wordpress.org/trunk@29885 602fd350-edb4-49c9-b593-d223f7449a82
2014-10-13 00:17:12 +00:00
Boone Gorges
fd816091a5 Improved unit test coverage for WP_Date_Query
- Unit tests for all publicly available functionality in WP_Date_Query
- Improve performance of date_query tests that use WP_Query

Fixes #29781


git-svn-id: https://develop.svn.wordpress.org/trunk@29793 602fd350-edb4-49c9-b593-d223f7449a82
2014-09-29 16:04:46 +00:00
Sergey Biryukov
3226d8b867 Create correct permalinks for child posts of hierarchical post types when default permalinks are used.
props loushou.
fixes #29615 for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@29765 602fd350-edb4-49c9-b593-d223f7449a82
2014-09-24 21:29:15 +00:00
John Blackbourn
b3e3684d21 Add support for a full path parameter to is_page() and is_single(). Props Jesper800, engelen, johnbillion. Fixes #16802.
git-svn-id: https://develop.svn.wordpress.org/trunk@29039 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-09 16:03:17 +00:00
Scott Taylor
f23a5ef832 Setup rewrite changes in tests in a predictable fashion. Don't mix method calls with wrapper function calls.
See #28706.


git-svn-id: https://develop.svn.wordpress.org/trunk@28966 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-03 01:42:57 +00:00
Sergey Biryukov
8b0ef058f3 WP_Date_Query: The inclusive logic should include all times within the date range.
props mboynes, oso96_2000, DrewAPicture.
fixes #26653.

git-svn-id: https://develop.svn.wordpress.org/trunk@28935 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-01 01:17:39 +00:00
Sergey Biryukov
ee307dc160 Use assertCount() for consistency with other tests.
see #28611.

git-svn-id: https://develop.svn.wordpress.org/trunk@28809 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-23 22:26:12 +00:00
Sergey Biryukov
f7d7ecd0a6 Prevent multiple hierarchical posts with the same slug from being displayed in single post template.
fixes #28611.

git-svn-id: https://develop.svn.wordpress.org/trunk@28803 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-23 13:14:39 +00:00
Sergey Biryukov
f393fecbc5 Add @ticket references.
see #16854, #19198.

git-svn-id: https://develop.svn.wordpress.org/trunk@28800 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-22 01:40:38 +00:00
Scott Taylor
5ec545d5ab Revert [28613] and [28664]. A good idea, but too much BC baggage.
See #28099.



git-svn-id: https://develop.svn.wordpress.org/trunk@28783 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-20 16:20:35 +00:00
Scott Taylor
ee9f2e48bb After [28613], also kill queries that explicityly pass empty arrays to category__in, tag__in, tag_slug__in, and author__in to WP_Query.
Adds unit tests.
Fixes #28099.


git-svn-id: https://develop.svn.wordpress.org/trunk@28664 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-04 17:49:26 +00:00
Scott Taylor
8530693a51 If post__in or post_parent__in is passed to WP_Query as an empty array, nuke the query. Both vars are currently only checked for truthiness after which they are ignored. Setting these vars at all indicates explicit filtering being desired.
Adds unit test.

Fixes #28099.


git-svn-id: https://develop.svn.wordpress.org/trunk@28613 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-29 06:03:15 +00:00
Scott Taylor
89ecbcc7cb In WP_Date_Query::get_sql_for_subquery(), don't parse duplicate parameters - only parse one of w and week or month and monthnum.
Adds unit tests.

Props oso96_2000, ChriCo.
Fixes #25835.



git-svn-id: https://develop.svn.wordpress.org/trunk@28252 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-04 23:06:07 +00:00
Scott Taylor
710f11f2df When using WP_Query's "fields" => "ids" (or "fields" => "id=>parent"), the returned values should be an array of integers, not array of integers represented by strings.
Adds unit tests. All other unit tests pass.

Props danielbachhuber.
Fixes #27252.



git-svn-id: https://develop.svn.wordpress.org/trunk@27686 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-24 18:54:38 +00:00
Andrew Nacin
036cb74d46 Add unit tests for searching by relevance.
props wonderboymusic.
see #7394, #20044.


git-svn-id: https://develop.svn.wordpress.org/trunk@27474 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-08 21:26:26 +00:00
Andrew Nacin
ed43f002b8 Add has_password and post_password query variables to WP_Query.
* has_password true means posts with passwords, false means posts without.
 * post_password can query for posts with a particular password.

props wonderboymusic, robmiller.
fixes #20308.


git-svn-id: https://develop.svn.wordpress.org/trunk@27395 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-04 07:44:28 +00:00
Scott Taylor
c2efafbddb Add some more assertions to Tests_Query_Conditionals, specifically for is_single(), is_page(), and is_attachment().
See [27016].
Fixes #24257.



git-svn-id: https://develop.svn.wordpress.org/trunk@27187 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-17 22:10:57 +00:00
Scott Taylor
b8e7bbb0f2 Fix an error in SQL generation when perm is set and an array is passed for post_status. Adds unit test.
Props oso96_2000.
Fixes #25523.



git-svn-id: https://develop.svn.wordpress.org/trunk@27067 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-02 07:35:54 +00:00
Scott Taylor
300cb7451e Let is_attachment() accept an $attachment parameter, similar to is_page() and is_single(). Adds Unit Tests for all 3.
Props alex-ye for the initial patch.
Fixes #24257.



git-svn-id: https://develop.svn.wordpress.org/trunk@27016 602fd350-edb4-49c9-b593-d223f7449a82
2014-01-22 22:30:36 +00:00
Sergey Biryukov
3852dd4936 Add unit test for [26874]. see #26728.
git-svn-id: https://develop.svn.wordpress.org/trunk@26875 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-28 05:24:32 +00:00
Sergey Biryukov
af9a2ca5e5 Add @ticket reference. see #26627.
git-svn-id: https://develop.svn.wordpress.org/trunk@26873 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-27 19:02:55 +00:00
Scott Taylor
5cb2ad494e Fix a regression for get_queried_object() by checking for category_name when cat isn't set - mainly is_category() being true for Uncategorized or when queried object is accessed in pre_get_posts. Also check for $query['terms'] when trying to assign a term as the queried object when is_tax() is true. Adds a unit test. See [26007] for how I originally broke this while fixing a bigger issue.
Props Chouby, jeremyfelt.
Fixes #26634, #26627.



git-svn-id: https://develop.svn.wordpress.org/trunk@26864 602fd350-edb4-49c9-b593-d223f7449a82
2013-12-22 18:30:09 +00:00
Sergey Biryukov
efc2c12458 Restore @ticket reference. see #18897.
git-svn-id: https://develop.svn.wordpress.org/trunk@26479 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-29 21:23:49 +00:00
Scott Taylor
d8f57f88ad Respect paged when offset is used in WP_Query. Adds unit tests.
Props coffee2code.
Fixes #18897.



git-svn-id: https://develop.svn.wordpress.org/trunk@26012 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-05 01:34:44 +00:00
Scott Taylor
0923b7b93a Category and tag are typically checked before checking for a custom taxonomy. If the global query matches category or tag (even if it also has tax_query set), return category/tag as the queried object, instead of arbitrarily returning the first term in the tax_query stack (typically those added with 'pre_get_posts').
Real world example: http://www.emusic.com/17dots/topics/daily-download/ - "tag" page, regionalized for US-only content using `pre_get_posts` passing in the terms "US" and "ALL" for "region" (custom tax). All of the theme functions would output "ALL" as the term name. Even though it was a tag archive, the queried object was an arbitrary term from `tax_query`.

See [26006]. All unit tests pass.
Fixes #20767.




git-svn-id: https://develop.svn.wordpress.org/trunk@26007 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-04 23:53:55 +00:00
Scott Taylor
2f38d2efc6 Move Tests_Query_Conditionals::assertQueryTrue() to WP_UnitTestCase. It should be available to all unit test classes. The conditionals class is huge, other classes are necessary for better coverage.
git-svn-id: https://develop.svn.wordpress.org/trunk@26005 602fd350-edb4-49c9-b593-d223f7449a82
2013-11-04 21:55:12 +00:00
Scott Taylor
9f00115bd9 Avoid the following notice: Use of undefined constant term_id - assumed 'term_id', while running in debug mode.
See #25282.



git-svn-id: https://develop.svn.wordpress.org/trunk@25356 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-11 18:45:34 +00:00
Scott Taylor
9dc7afd478 Add set_current_screen( 'front' ) to query/conditionals tests setUp routine so that cruff from previous tests doesn't cause every conditional test to fail in debug mode.
See #25282.



git-svn-id: https://develop.svn.wordpress.org/trunk@25352 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-11 17:40:46 +00:00
Scott Taylor
e72ffa5d96 Move checks for post_type being an array inline. See [25291], [25292], #18614.
git-svn-id: https://develop.svn.wordpress.org/trunk@25312 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-10 03:01:10 +00:00
Scott Taylor
e688f070dc Check the value passed to get_post_type_object(). If it's an array, use the first item. get_query_var( 'post_type' ) can be an array if the query has been altered via filters/actions. There are several places in core that pass the query var. Adds unit tests.
In `template-loader.php`, move `is_post_type_archive()` and `is_tax()` directly below `is_home()`.

See #18614, [25291].



git-svn-id: https://develop.svn.wordpress.org/trunk@25292 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 23:38:51 +00:00
Scott Taylor
48dc7e576b Ensure that the post type object is the queried object when a post type has been registered with has_archive => true. Ensure it is not stomped when decorated with tax_query. Adds unit tests.
Props nacin.
Fixes #18614.



git-svn-id: https://develop.svn.wordpress.org/trunk@25291 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 22:06:40 +00:00
Scott Taylor
0474a18863 Allow is_tag() to accept term_id, slug, 'term_name or array of any. Many other is_*()` funcs already do this. Adds unit tests.
Props ramiy.
Fixes #18746.



git-svn-id: https://develop.svn.wordpress.org/trunk@25287 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 17:26:04 +00:00
Scott Taylor
09b9c44de9 Check bad dates and redirect, instead of 404ing, as necessary and appropriate.
Adds query, conditional, and canonical Unit Tests.

Props kovshenin, SergeyBiryukov, DrewAPicture.
Fixes #10935.



git-svn-id: https://develop.svn.wordpress.org/trunk@25280 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-06 16:35:22 +00:00
Scott Taylor
57b1d5ab28 Introduce author__in and author__not_in query vars. Fixes issue with multiple author exclusion when comma-separated string is passed for author. Adds a bunch of missing unit tests.
Props pollett for initial patch.
Fixes #16854.



git-svn-id: https://develop.svn.wordpress.org/trunk@25248 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-04 21:32:11 +00:00
Scott Taylor
24bf60bb4f Kill the query in the following edge case: post_type => 'any' but exclude_from_search => false returns no valid post types. Adds unit tests.
Props mitchoyoshitaka.
Fixes #19198.



git-svn-id: https://develop.svn.wordpress.org/trunk@25239 602fd350-edb4-49c9-b593-d223f7449a82
2013-09-04 18:50:04 +00:00
Andrew Nacin
8045afd81b Move PHPUnit tests into a tests/phpunit directory.
wp-tests-config.php can/should reside in the root of a develop checkout. `phpunit` should be run from the root.

see #25088.


git-svn-id: https://develop.svn.wordpress.org/trunk@25165 602fd350-edb4-49c9-b593-d223f7449a82
2013-08-29 18:39:34 +00:00