33namespace MiladRahimi \PhpRouter \Tests ;
44
55use MiladRahimi \PhpContainer \Container ;
6+ use MiladRahimi \PhpRouter \Tests \Common \SampleClass ;
7+ use MiladRahimi \PhpRouter \Tests \Common \SampleConstructorController ;
8+ use MiladRahimi \PhpRouter \Tests \Common \SampleInterface ;
69use Throwable ;
710
811class ContainerTest extends TestCase
@@ -15,15 +18,53 @@ public function test_binding_and_resolving_with_container()
1518 $ router = $ this ->router ();
1619
1720 $ container = $ router ->getContainer ();
18- $ container ->singleton (' name ' , ' Pink Floyd ' );
21+ $ container ->singleton (SampleInterface::class, SampleClass::class );
1922 $ router ->setContainer ($ container );
2023
2124 $ router ->get ('/ ' , function (Container $ container ) {
22- return $ container ->get (' name ' );
25+ return get_class ( $ container ->get (SampleInterface::class) );
2326 });
2427
2528 $ router ->dispatch ();
2629
27- $ this ->assertEquals ('Pink Floyd ' , $ this ->output ($ router ));
30+ $ this ->assertEquals (SampleClass::class, $ this ->output ($ router ));
31+ }
32+
33+ /**
34+ * @throws Throwable
35+ */
36+ public function test_binding_and_resolving_with_controller_method ()
37+ {
38+ $ router = $ this ->router ();
39+
40+ $ container = $ router ->getContainer ();
41+ $ container ->singleton (SampleInterface::class, SampleClass::class);
42+ $ router ->setContainer ($ container );
43+
44+ $ router ->get ('/ ' , function (SampleInterface $ sample ) {
45+ return get_class ($ sample );
46+ });
47+
48+ $ router ->dispatch ();
49+
50+ $ this ->assertEquals (SampleClass::class, $ this ->output ($ router ));
51+ }
52+
53+ /**
54+ * @throws Throwable
55+ */
56+ public function test_binding_and_resolving_with_controller_constructor ()
57+ {
58+ $ router = $ this ->router ();
59+
60+ $ container = $ router ->getContainer ();
61+ $ container ->singleton (SampleInterface::class, SampleClass::class);
62+ $ router ->setContainer ($ container );
63+
64+ $ router ->get ('/ ' , [SampleConstructorController::class, 'getSampleClassName ' ]);
65+
66+ $ router ->dispatch ();
67+
68+ $ this ->assertEquals (SampleClass::class, $ this ->output ($ router ));
2869 }
2970}
0 commit comments