@@ -185,12 +185,18 @@ public function should_run_queries_correctly(): void
185
185
$ file = 'db.sqlite ' ;
186
186
$ db = new SQLiteDatabase ($ dir , $ file );
187
187
$ db ->create ();
188
- $ this ->assertEquals (0 ,
189
- $ db ->query ('CREATE TABLE wp_options (option_id INTEGER PRIMARY KEY, option_name TEXT NOT NULL, option_value TEXT NOT NULL, autoload TEXT NOT NULL) ' ));
190
- $ this ->assertEquals (1 ,
191
- $ db ->query ('INSERT INTO wp_options (option_name, option_value, autoload) VALUES ("siteurl", "http://localhost", "yes") ' ));
192
- $ this ->assertEquals (1 ,
193
- $ db ->query ('INSERT INTO wp_options (option_name, option_value, autoload) VALUES ("home", "http://localhost", "yes") ' ));
188
+ $ this ->assertEquals (
189
+ 0 ,
190
+ $ db ->query ('CREATE TABLE wp_options (option_id INTEGER PRIMARY KEY, option_name TEXT NOT NULL, option_value TEXT NOT NULL, autoload TEXT NOT NULL) ' )
191
+ );
192
+ $ this ->assertEquals (
193
+ 1 ,
194
+ $ db ->query ('INSERT INTO wp_options (option_name, option_value, autoload) VALUES ("siteurl", "http://localhost", "yes") ' )
195
+ );
196
+ $ this ->assertEquals (
197
+ 1 ,
198
+ $ db ->query ('INSERT INTO wp_options (option_name, option_value, autoload) VALUES ("home", "http://localhost", "yes") ' )
199
+ );
194
200
$ this ->assertEquals (0 , $ db ->query ('SELECT * FROM wp_options ' ));
195
201
$ this ->assertEquals ('http://localhost ' , $ db ->getoption ('siteurl ' ));
196
202
$ this ->assertEquals ('http://localhost ' , $ db ->getoption ('home ' ));
@@ -342,4 +348,34 @@ public function should_throw_if_database_dump_file_cannot_be_written(): void
342
348
$ dumpFile = tempnam (sys_get_temp_dir (), 'sqlite_ ' );
343
349
$ db ->dump ($ dumpFile );
344
350
}
351
+
352
+ public static function optionsDataProvider (): array
353
+ {
354
+ return [
355
+ 'string option ' => ['http://example.com ' , 'http://example.com ' ],
356
+ 'int option ' => [23 , '23 ' ],
357
+ 'boolean true option ' => [true , '1 ' ],
358
+ 'boolean false option ' => [false , '' ],
359
+ 'array option ' => [[1 , 2 , 3 ], [1 , 2 , 3 ]],
360
+ 'object option ' => [(object ) ['a ' => 'b ' ], (object ) ['a ' => 'b ' ]],
361
+ 'null option ' => [null , null ],
362
+ ];
363
+ }
364
+
365
+ /**
366
+ * @test
367
+ * @dataProvider optionsDataProvider
368
+ */
369
+ public function should_read_and_write_options_correctly (mixed $ optionValue , mixed $ expectedOptionValue ): void
370
+ {
371
+ $ dump = codecept_data_dir ('dump.sqlite ' );
372
+ $ dir = FS ::tmpDir ('sqlite_ ' );
373
+ $ file = 'db.sqlite ' ;
374
+ $ db = new SQLiteDatabase ($ dir , $ file );
375
+ $ db ->import ($ dump );
376
+
377
+ $ db ->updateOption ('test ' , $ optionValue );
378
+
379
+ $ this ->assertEquals ($ expectedOptionValue , $ db ->getOption ('test ' ));
380
+ }
345
381
}
0 commit comments