55use Becklyn \AssetsBundle \Asset \Asset ;
66use Becklyn \AssetsBundle \Asset \AssetsRegistry ;
77use Becklyn \AssetsBundle \Exception \AssetsException ;
8+ use Becklyn \AssetsBundle \File \FileLoader ;
89use Becklyn \AssetsBundle \Url \AssetUrl ;
910use PHPUnit \Framework \TestCase ;
1011use Psr \Log \LoggerInterface ;
@@ -22,10 +23,15 @@ private function buildObject (bool $isDebug)
2223 ->disableOriginalConstructor ()
2324 ->getMock ();
2425
26+ $ fileLoader = $ this ->getMockBuilder (FileLoader::class)
27+ ->disableOriginalConstructor ()
28+ ->getMock ();
29+
2530 return [
26- new AssetUrl ($ registry , $ router , $ isDebug , null ),
31+ new AssetUrl ($ registry , $ router , $ fileLoader , $ isDebug , null ),
2732 $ router ,
2833 $ registry ,
34+ $ fileLoader ,
2935 ];
3036 }
3137
@@ -35,11 +41,17 @@ public function testDev () : void
3541 /**
3642 * @var AssetUrl
3743 * @var \PHPUnit_Framework_MockObject_MockObject $router
44+ * @var \PHPUnit_Framework_MockObject_MockObject $registry
45+ * @var \PHPUnit_Framework_MockObject_MockObject $fileLoader
3846 */
39- [$ assetUrl , $ router ] = $ this ->buildObject (true );
47+ [$ assetUrl , $ router, $ registry , $ fileLoader ] = $ this ->buildObject (true );
4048
4149 $ asset = new Asset ("namespace " , "test.jpg " );
4250
51+ $ fileLoader
52+ ->method ("fileForAssetExists " )
53+ ->willReturn (true );
54+
4355 $ router
4456 ->expects (self ::once ())
4557 ->method ("generate " )
@@ -141,7 +153,11 @@ public function testMissingFileInProdWithLogger () : void
141153 ->disableOriginalConstructor ()
142154 ->getMock ();
143155
144- $ assetUrl = new AssetUrl ($ registry , $ router , false , $ logger );
156+ $ fileLoader = $ this ->getMockBuilder (FileLoader::class)
157+ ->disableOriginalConstructor ()
158+ ->getMock ();
159+
160+ $ assetUrl = new AssetUrl ($ registry , $ router , $ fileLoader , false , $ logger );
145161
146162 $ asset = new Asset ("test " , "abc.jpg " );
147163
@@ -173,20 +189,25 @@ public function testMissingFileInProdWithLogger () : void
173189 public function testMissingFileInDev () : void
174190 {
175191 /**
176- * @var AssetUrl
192+ * @var AssetUrl $assetUrl
177193 * @var \PHPUnit_Framework_MockObject_MockObject $router
178194 * @var \PHPUnit_Framework_MockObject_MockObject $registry
195+ * @var \PHPUnit_Framework_MockObject_MockObject $fileLoader
179196 */
180- [$ assetUrl , $ router , $ registry ] = $ this ->buildObject (true );
197+ [$ assetUrl , $ router , $ registry, $ fileLoader ] = $ this ->buildObject (true );
181198
182- $ asset = new Asset ("test " , "abc.jpg " );
199+ $ fileLoader
200+ ->method ("fileForAssetExists " )
201+ ->willReturn (false );
183202
184- $ registry
185- ->expects (self ::once ())
186- ->method ("get " )
187- ->with ($ asset )
188- ->willThrowException (new AssetsException ());
203+ $ fileLoader
204+ ->method ("getFilePath " )
205+ ->willReturn ("/some/path " );
189206
207+ $ this ->expectException (AssetsException::class);
208+ $ this ->expectExceptionMessage ("Asset '@test/abc.jpg' not found at '/some/path'. " );
209+
210+ $ asset = new Asset ("test " , "abc.jpg " );
190211 $ assetUrl ->generateUrl ($ asset );
191212 }
192213}
0 commit comments