| | 1072 | public static function post_status_provider_for_dates() { |
| | 1073 | return array( |
| | 1074 | array( 'draft' ), |
| | 1075 | array( 'publish' ), |
| | 1076 | array( 'future' ), |
| | 1077 | array( 'pending' ), |
| | 1078 | array( 'private' ), |
| | 1079 | ); |
| | 1080 | } |
| | 1081 | |
| | 1082 | /** |
| | 1083 | * @dataProvider post_status_provider_for_dates |
| | 1084 | */ |
| | 1085 | public function test_create_post_date( $status ) { |
| | 1086 | wp_set_current_user( self::$editor_id ); |
| | 1087 | update_option( 'timezone_string', 'America/New_York' ); |
| | 1088 | |
| | 1089 | $request = new WP_REST_Request( 'POST', '/wp/v2/posts' ); |
| | 1090 | $request->set_param( 'title', 'not empty' ); |
| | 1091 | $request->set_param( 'date', '2016-12-12T14:00:00' ); |
| | 1092 | $response = $this->server->dispatch( $request ); |
| | 1093 | |
| | 1094 | update_option( 'timezone_string', '' ); |
| | 1095 | |
| | 1096 | $this->assertEquals( 201, $response->get_status() ); |
| | 1097 | $data = $response->get_data(); |
| | 1098 | $post_id = $data['id']; |
| | 1099 | $post = get_post( $post_id ); |
| | 1100 | |
| | 1101 | $this->assertEquals( '2016-12-12T14:00:00', $data['date'] ); |
| | 1102 | $time = gmmktime( 14, 0, 0, 12, 12, 2016 ); |
| | 1103 | $this->assertEquals( $time, strtotime( $post->post_date ) ); |
| | 1104 | |
| | 1105 | $this->assertEquals( '2016-12-12T19:00:00', $data['date_gmt'] ); |
| | 1106 | // TODO expect null here for drafts (see https://core.trac.wordpress.org/ticket/5698#comment:14) |
| | 1107 | $time_gmt = gmmktime( 19, 0, 0, 12, 12, 2016 ); |
| | 1108 | $this->assertEquals( $time_gmt, strtotime( $post->post_date_gmt ) ); |
| | 1109 | } |
| | 1110 | |
| | 1111 | /** |
| | 1112 | * @dataProvider post_status_provider_for_dates |
| | 1113 | */ |
| | 1114 | public function test_create_post_date_gmt( $status ) { |
| | 1115 | wp_set_current_user( self::$editor_id ); |
| | 1116 | update_option( 'timezone_string', 'America/New_York' ); |
| | 1117 | |
| | 1118 | $request = new WP_REST_Request( 'POST', '/wp/v2/posts' ); |
| | 1119 | $request->set_param( 'title', 'not empty' ); |
| | 1120 | $request->set_param( 'date_gmt', '2016-12-12T19:10:00' ); |
| | 1121 | $response = $this->server->dispatch( $request ); |
| | 1122 | |
| | 1123 | update_option( 'timezone_string', '' ); |
| | 1124 | |
| | 1125 | $this->assertEquals( 201, $response->get_status() ); |
| | 1126 | $data = $response->get_data(); |
| | 1127 | $post_id = $data['id']; |
| | 1128 | $post = get_post( $post_id ); |
| | 1129 | |
| | 1130 | $this->assertEquals( '2016-12-12T14:10:00', $data['date'] ); |
| | 1131 | $time = gmmktime( 14, 10, 0, 12, 12, 2016 ); |
| | 1132 | $this->assertEquals( $time, strtotime( $post->post_date ) ); |
| | 1133 | |
| | 1134 | $this->assertEquals( '2016-12-12T19:10:00', $data['date_gmt'] ); |
| | 1135 | // TODO expect null here for drafts (see https://core.trac.wordpress.org/ticket/5698#comment:14) |
| | 1136 | $time_gmt = gmmktime( 19, 10, 0, 12, 12, 2016 ); |
| | 1137 | $this->assertEquals( $time_gmt, strtotime( $post->post_date_gmt ) ); |
| | 1138 | } |
| | 1139 | |
| | 1976 | /** |
| | 1977 | * @dataProvider post_status_provider_for_dates |
| | 1978 | */ |
| | 1979 | public function test_update_post_date( $status ) { |
| | 1980 | wp_set_current_user( self::$editor_id ); |
| | 1981 | update_option( 'timezone_string', 'America/New_York' ); |
| | 1982 | |
| | 1983 | $post_id = $this->factory->post->create( array( 'post_status' => $status ) ); |
| | 1984 | |
| | 1985 | $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', $post_id ) ); |
| | 1986 | $request->set_param( 'date', '2016-12-12T14:00:00' ); |
| | 1987 | $response = $this->server->dispatch( $request ); |
| | 1988 | |
| | 1989 | update_option( 'timezone_string', '' ); |
| | 1990 | |
| | 1991 | $this->assertEquals( 200, $response->get_status() ); |
| | 1992 | $data = $response->get_data(); |
| | 1993 | $post = get_post( $post_id ); |
| | 1994 | |
| | 1995 | $this->assertEquals( '2016-12-12T14:00:00', $data['date'] ); |
| | 1996 | $time = gmmktime( 14, 0, 0, 12, 12, 2016 ); |
| | 1997 | $this->assertEquals( $time, strtotime( $post->post_date ) ); |
| | 1998 | |
| | 1999 | $this->assertEquals( '2016-12-12T19:00:00', $data['date_gmt'] ); |
| | 2000 | // TODO expect null here for drafts (see https://core.trac.wordpress.org/ticket/5698#comment:14) |
| | 2001 | $time_gmt = gmmktime( 19, 0, 0, 12, 12, 2016 ); |
| | 2002 | $this->assertEquals( $time_gmt, strtotime( $post->post_date_gmt ) ); |
| | 2003 | } |
| | 2004 | |
| | 2005 | /** |
| | 2006 | * @dataProvider post_status_provider_for_dates |
| | 2007 | */ |
| | 2008 | public function test_update_post_date_gmt( $status ) { |
| | 2009 | wp_set_current_user( self::$editor_id ); |
| | 2010 | update_option( 'timezone_string', 'America/New_York' ); |
| | 2011 | |
| | 2012 | $post_id = $this->factory->post->create( array( 'post_status' => $status ) ); |
| | 2013 | |
| | 2014 | $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', $post_id ) ); |
| | 2015 | $request->set_param( 'date_gmt', '2016-12-12T19:10:00' ); |
| | 2016 | $response = $this->server->dispatch( $request ); |
| | 2017 | |
| | 2018 | update_option( 'timezone_string', '' ); |
| | 2019 | |
| | 2020 | $this->assertEquals( 200, $response->get_status() ); |
| | 2021 | $data = $response->get_data(); |
| | 2022 | $post = get_post( $post_id ); |
| | 2023 | |
| | 2024 | $this->assertEquals( '2016-12-12T14:10:00', $data['date'] ); |
| | 2025 | $time = gmmktime( 14, 10, 0, 12, 12, 2016 ); |
| | 2026 | $this->assertEquals( $time, strtotime( $post->post_date ) ); |
| | 2027 | |
| | 2028 | $this->assertEquals( '2016-12-12T19:10:00', $data['date_gmt'] ); |
| | 2029 | // TODO expect null here for drafts (see https://core.trac.wordpress.org/ticket/5698#comment:14) |
| | 2030 | $time_gmt = gmmktime( 19, 10, 0, 12, 12, 2016 ); |
| | 2031 | $this->assertEquals( $time_gmt, strtotime( $post->post_date_gmt ) ); |
| | 2032 | } |
| | 2033 | |