11<?php
22
3-
43declare (strict_types=1 );
54
65namespace avadim \FastExcelLaravel ;
76
7+ require_once __DIR__ . '/FakeModel.php ' ;
8+
89use Illuminate \Support \Collection ;
9- use PHPUnit \Framework \TestCase ;
1010use avadim \FastExcelReader \Excel as ExcelReader ;
11- use \Illuminate \Filesystem \Filesystem as File ;
1211
13- //final class FastExcelLaravelTest extends TestCase
1412final class FastExcelLaravelTest extends \Orchestra \Testbench \TestCase
1513{
1614 protected ?ExcelReader $ excelReader = null ;
@@ -24,8 +22,26 @@ protected function setUp(): void
2422 $ this ->testStorage = __DIR__ . '/test_storage ' ;
2523
2624 app ()->useStoragePath ($ this ->testStorage );
25+ $ this ->setUpDatabase ();
26+ }
27+
28+ protected function getEnvironmentSetUp ($ app )
29+ {
30+ $ app ['config ' ]->set ('database.default ' , 'sqlite ' );
31+ $ app ['config ' ]->set ('database.connections.sqlite ' , [
32+ 'driver ' => 'sqlite ' ,
33+ 'database ' => ':memory: ' ,
34+ 'prefix ' => '' ,
35+ ]);
2736 }
2837
38+ protected function setUpDatabase ()
39+ {
40+ //$res = $this->artisan('migrate')->run();
41+ //$this->loadMigrationsFrom(__DIR__ . '/../database/migrations/000_create_test_models_table.php');
42+ }
43+
44+
2945 protected function getValue ($ cell )
3046 {
3147 preg_match ('/^(\w+)(\d+)$/ ' , strtoupper ($ cell ), $ m );
@@ -292,4 +308,42 @@ public function testAdvanced()
292308 $ this ->endTest ($ testFileName );
293309 }
294310
311+ public function testLoadModel ()
312+ {
313+ $ testFileName = 'test_model.xlsx ' ;
314+ $ excel = Excel::open (storage_path ($ testFileName ));
315+ $ this ->assertEquals ('Sheet1 ' , $ excel ->sheet ()->name ());
316+
317+ FakeModel::$ storage = [];
318+ $ excel ->loadModels (FakeModel::class);
319+ $ this ->assertCount (4 , FakeModel::$ storage );
320+ $ this ->assertNull (FakeModel::$ storage [0 ]->name );
321+
322+ FakeModel::$ storage = [];
323+ $ excel ->loadModels (FakeModel::class, true );
324+ $ this ->assertCount (3 , FakeModel::$ storage );
325+ $ this ->assertEquals ('James Bond ' , FakeModel::$ storage [0 ]->name );
326+
327+ FakeModel::$ storage = [];
328+ $ excel ->loadModels (FakeModel::class, 'b2 ' );
329+ $ this ->assertCount (3 , FakeModel::$ storage );
330+ $ this ->assertNull (FakeModel::$ storage [0 ]->name );
331+
332+ FakeModel::$ storage = [];
333+ $ excel ->loadModels (FakeModel::class, 'b1 ' , true );
334+ $ this ->assertCount (3 , FakeModel::$ storage );
335+ $ this ->assertEquals ('James Bond ' , FakeModel::$ storage [0 ]->name );
336+
337+ FakeModel::$ storage = [];
338+ $ excel ->setDateFormat ('Y-m-d ' );
339+ $ excel ->loadModels (FakeModel::class, 'c4 ' , ['B ' => 'foo ' , 'C ' => 'bar ' , 'D ' => 'int ' ]);
340+ $ this ->assertEquals ('1753-01-31 ' , FakeModel::$ storage [0 ]->bar );
341+
342+ FakeModel::$ storage = [];
343+ $ excel ->loadModels (FakeModel::class, 'b2 ' , ['B ' => 'foo ' , 'C ' => 'bar ' , 'D ' => 'int ' ]);
344+ $ this ->assertCount (3 , FakeModel::$ storage );
345+ $ this ->assertEquals ('Captain Jack Sparrow ' , FakeModel::$ storage [2 ]->foo );
346+ $ this ->assertEquals ('1753-01-31 ' , FakeModel::$ storage [2 ]->bar );
347+ $ this ->assertEquals (7239 , FakeModel::$ storage [2 ]->int );
348+ }
295349}
0 commit comments