1212
1313namespace HyperfTest \Validation \Cases ;
1414
15+ use Hyperf \Context \ApplicationContext ;
1516use Hyperf \Database \Model \Model ;
1617use Hyperf \Validation \Rules \Unique ;
18+ use Mockery as m ;
1719use PHPUnit \Framework \Attributes \CoversNothing ;
1820use PHPUnit \Framework \TestCase ;
21+ use Psr \Container \ContainerInterface ;
1922
2023/**
2124 * @internal
2427#[CoversNothing]
2528class ValidationUniqueRuleTest extends TestCase
2629{
30+ protected function setUp (): void
31+ {
32+ $ container = m::mock (ContainerInterface::class);
33+ $ container ->shouldReceive ('make ' )
34+ ->with (DatabaseModelWithConnection::class)
35+ ->andReturn (new DatabaseModelWithConnection ());
36+
37+ ApplicationContext::setContainer ($ container );
38+ }
39+
40+ protected function tearDown (): void
41+ {
42+ m::close ();
43+ }
44+
2745 public function testItCorrectlyFormatsAStringVersionOfTheRule ()
2846 {
2947 $ rule = new Unique ('table ' );
@@ -66,6 +84,10 @@ public function testItCorrectlyFormatsAStringVersionOfTheRule()
6684 $ rule = new Unique ('table ' );
6785 $ rule ->where ('foo ' , 1 );
6886 $ this ->assertEquals ('unique:table,NULL,NULL,id,foo,"1" ' , (string ) $ rule );
87+
88+ $ rule = new Unique (DatabaseModelWithConnection::class, 'column ' );
89+ $ rule ->where ('foo ' , 'bar ' );
90+ $ this ->assertSame ('unique:mysql.table,column,NULL,id,foo,"bar" ' , (string ) $ rule );
6991 }
7092}
7193
@@ -75,3 +97,10 @@ class DatabaseModelStub extends Model
7597
7698 protected array $ guarded = [];
7799}
100+
101+ class DatabaseModelWithConnection extends DatabaseModelStub
102+ {
103+ protected ?string $ table = 'table ' ;
104+
105+ protected ?string $ connection = 'mysql ' ;
106+ }
0 commit comments