22
33use  PHPUnit \Framework \TestCase ;
44
5+ $ tables  = <<<'SQL'
6+ CREATE TABLE wp_users ( 
7+ 	ID bigint(20) unsigned NOT NULL auto_increment, 
8+ 	user_login varchar(60) NOT NULL default '', 
9+ 	user_pass varchar(255) NOT NULL default '', 
10+ 	user_nicename varchar(50) NOT NULL default '', 
11+ 	user_email varchar(100) NOT NULL default '', 
12+ 	user_url varchar(100) NOT NULL default '', 
13+ 	user_registered datetime NOT NULL default '0000-00-00 00:00:00', 
14+ 	user_activation_key varchar(255) NOT NULL default '', 
15+ 	user_status int(11) NOT NULL default '0', 
16+ 	display_name varchar(250) NOT NULL default '', 
17+ 	PRIMARY KEY  (ID), 
18+ 	KEY user_login_key (user_login), 
19+ 	KEY user_nicename (user_nicename), 
20+ 	KEY user_email (user_email) 
21+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
22+ 
23+ CREATE TABLE wp_usermeta ( 
24+ 	umeta_id bigint(20) unsigned NOT NULL auto_increment, 
25+ 	user_id bigint(20) unsigned NOT NULL default '0', 
26+ 	meta_key varchar(255) default NULL, 
27+ 	meta_value longtext, 
28+ 	PRIMARY KEY  (umeta_id), 
29+ 	KEY user_id (user_id), 
30+ 	KEY meta_key (meta_key(191)) 
31+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
32+ 
33+ CREATE TABLE wp_posts ( 
34+ 	ID bigint(20) unsigned NOT NULL auto_increment, 
35+ 	post_author bigint(20) unsigned NOT NULL default '0', 
36+ 	post_date datetime NOT NULL default '0000-00-00 00:00:00', 
37+ 	post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', 
38+ 	post_content longtext NOT NULL, 
39+ 	post_title text NOT NULL, 
40+ 	post_excerpt text NOT NULL, 
41+ 	post_status varchar(20) NOT NULL default 'publish', 
42+ 	comment_status varchar(20) NOT NULL default 'open', 
43+ 	ping_status varchar(20) NOT NULL default 'open', 
44+ 	post_password varchar(255) NOT NULL default '', 
45+ 	post_name varchar(200) NOT NULL default '', 
46+ 	to_ping text NOT NULL, 
47+ 	pinged text NOT NULL, 
48+ 	post_modified datetime NOT NULL default '0000-00-00 00:00:00', 
49+ 	post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00', 
50+ 	post_content_filtered longtext NOT NULL, 
51+ 	post_parent bigint(20) unsigned NOT NULL default '0', 
52+ 	guid varchar(255) NOT NULL default '', 
53+ 	menu_order int(11) NOT NULL default '0', 
54+ 	post_type varchar(20) NOT NULL default 'post', 
55+ 	post_mime_type varchar(100) NOT NULL default '', 
56+ 	comment_count bigint(20) NOT NULL default '0', 
57+ 	PRIMARY KEY  (ID), 
58+ 	KEY post_name (post_name(191)), 
59+ 	KEY type_status_date (post_type,post_status,post_date,ID), 
60+ 	KEY post_parent (post_parent), 
61+ 	KEY post_author (post_author), 
62+ 	KEY type_status_author (post_type,post_status,post_author) 
63+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
64+ 
65+ CREATE TABLE wp_postmeta ( 
66+ 	meta_id bigint(20) unsigned NOT NULL auto_increment, 
67+ 	post_id bigint(20) unsigned NOT NULL default '0', 
68+ 	meta_key varchar(255) default NULL, 
69+ 	meta_value longtext, 
70+ 	PRIMARY KEY  (meta_id), 
71+ 	KEY post_id (post_id), 
72+ 	KEY meta_key (meta_key(191)) 
73+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
74+ 
75+ CREATE TABLE wp_options ( 
76+ 	option_id bigint(20) unsigned NOT NULL auto_increment, 
77+ 	option_name varchar(191) NOT NULL default '', 
78+ 	option_value longtext NOT NULL, 
79+ 	autoload varchar(20) NOT NULL default 'yes', 
80+ 	PRIMARY KEY  (option_id), 
81+ 	UNIQUE KEY option_name (option_name), 
82+ 	KEY autoload (autoload) 
83+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
84+ SQL;
85+ 
586/** 
687 * Unit tests using the WordPress table definitions. 
788 */ 
@@ -20,38 +101,31 @@ class WP_SQLite_Driver_Query_Tests extends TestCase {
20101	 */ 
21102	public  function  setUp (): void  {
22103		/* This is the DDL for WordPress tables in SQLite syntax. */ 
23- 		global  $ blog_tables  ;
24- 		$ queries  = explode ( '; ' , $ blog_tables   );
104+ 		global  $ tables  ;
105+ 		$ queries  = explode ( '; ' , $ tables   );
25106
26107		$ this  ->sqlite  = new  PDO ( 'sqlite::memory: '  );
27108		$ this  ->engine  = new  WP_SQLite_Driver (
28109			new  WP_SQLite_Connection ( array ( 'pdo '  => $ this  ->sqlite  ) ),
29110			'wp ' 
30111		);
31112
32- 		$ translator  = $ this  ->engine ;
33- 
34113		try  {
35- 			$ translator  ->begin_transaction ();
114+ 			$ this -> engine ->begin_transaction ();
36115			foreach  ( $ queries  as  $ query  ) {
37116				$ query  = trim ( $ query  );
38117				if  ( empty ( $ query  ) ) {
39118					continue ;
40119				}
41- 
42- 				$ translator ->execute_sqlite_query ( $ query  );
120+ 				$ this  ->engine ->query ( $ query  );
43121			}
44- 			$ translator ->commit ();
45- 		} catch  ( PDOException   $ err  ) {
46- 			$ err_data  =
47- 				$ err ->errorInfo ; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase 
48- 			$ err_code  = $ err_data [1 ];
49- 			$ translator ->rollback ();
122+ 			$ this  ->engine ->commit ();
123+ 		} catch  ( Throwable   $ e  ) {
50124			$ message   = sprintf (
51125				'Error occurred while creating tables or indexes...<br />Query was: %s<br /> ' ,
52126				var_export ( $ query , true  )
53127			);
54- 			$ message  .= sprintf ( 'Error message is: %s ' , $ err_data [ 2 ]  );
128+ 			$ message  .= sprintf ( 'Error message is: %s ' , $ e -> getMessage ()  );
55129			wp_die ( $ message , 'Database Error! '  );
56130		}
57131
0 commit comments