@@ -138,4 +138,34 @@ public function testCannotSetContext()
138138 $ this ->expectExceptionMessage ("You cannot set context on context " );
139139 $ ctx ->setContext ($ ctx2 );
140140 }
141+
142+ public function testExtendingContext ()
143+ {
144+ $ ctx = new Context ();
145+ $ ctx ->setEnvironment (Context::ENV_PROD );
146+ $ ctx ->setProjectRoot ('/abc ' );
147+ $ ctx2 = Context::extends ($ ctx );
148+
149+ $ this ->assertEquals ($ ctx ->getEnvironment (), $ ctx2 ->getEnvironment ());
150+ $ this ->assertEquals ($ ctx ->getProjectRoot (), $ ctx2 ->getProjectRoot ());
151+ $ this ->assertEquals ($ ctx ->id (), $ ctx2 ->id ());
152+
153+ $ ctx = Context::create ('/abc ' , Context::ENV_QA );
154+ $ ctx ->meta ()->set ('abc ' , 'def ' );
155+ $ ctx2 = Context::extends ($ ctx );
156+
157+ $ this ->assertEquals ($ ctx ->getProjectRoot (), $ ctx2 ->getProjectRoot ());
158+ $ this ->assertEquals ('def ' , $ ctx2 ->meta ()->get ('abc ' ));
159+
160+ $ cnf = new ConfigProvider ();
161+ $ ctx ->setConfig ($ cnf );
162+ $ ctx ->routeData ()->set ('123 ' , '456 ' );
163+
164+ $ ctx2 = Context::extends ($ ctx );
165+
166+ $ this ->assertSame ($ cnf , $ ctx2 ->getConfig ());
167+ $ this ->assertEquals ('def ' , $ ctx2 ->meta ()->get ('abc ' ));
168+ $ this ->assertEquals ('456 ' , $ ctx2 ->routeData ()->get ('123 ' ));
169+
170+ }
141171}
0 commit comments