44
55namespace Yiisoft \Db \Tests ;
66
7+ use InvalidArgumentException ;
8+ use PHPUnit \Framework \Attributes \DataProviderExternal ;
79use PHPUnit \Framework \TestCase ;
810use Yiisoft \Db \Schema \Column \ColumnInterface ;
11+ use Yiisoft \Db \Tests \Provider \ColumnProvider ;
912
13+ use function gettype ;
1014use function is_object ;
1115
1216abstract class AbstractColumnTest extends TestCase
1317{
14- /** @dataProvider \Yiisoft\Db\Tests\Provider\ ColumnProvider::predefinedTypes */
18+ #[DataProviderExternal( ColumnProvider::class, ' predefinedTypes ' )]
1519 public function testPredefinedType (string $ className , string $ type , string $ phpType )
1620 {
1721 $ column = new $ className ();
@@ -20,7 +24,7 @@ public function testPredefinedType(string $className, string $type, string $phpT
2024 $ this ->assertSame ($ phpType , $ column ->getPhpType ());
2125 }
2226
23- /** @dataProvider \Yiisoft\Db\Tests\Provider\ ColumnProvider::dbTypecastColumns */
27+ #[DataProviderExternal( ColumnProvider::class, ' dbTypecastColumns ' )]
2428 public function testDbTypecastColumns (ColumnInterface $ column , array $ values )
2529 {
2630 // Set the timezone for testing purposes, could be any timezone except UTC
@@ -38,7 +42,18 @@ public function testDbTypecastColumns(ColumnInterface $column, array $values)
3842 date_default_timezone_set ($ oldDatetime );
3943 }
4044
41- /** @dataProvider \Yiisoft\Db\Tests\Provider\ColumnProvider::phpTypecastColumns */
45+ #[DataProviderExternal(ColumnProvider::class, 'dbTypecastColumnsWithException ' )]
46+ public function testDbTypecastColumnsWithException (ColumnInterface $ column , mixed $ value )
47+ {
48+ $ type = is_object ($ value ) ? $ value ::class : gettype ($ value );
49+
50+ $ this ->expectException (InvalidArgumentException::class);
51+ $ this ->expectExceptionMessage ("Wrong $ type value for {$ column ->getType ()} column. " );
52+
53+ $ column ->dbTypecast ($ value );
54+ }
55+
56+ #[DataProviderExternal(ColumnProvider::class, 'phpTypecastColumns ' )]
4257 public function testPhpTypecastColumns (ColumnInterface $ column , array $ values )
4358 {
4459 foreach ($ values as [$ expected , $ value ]) {
0 commit comments