22
33namespace Okapi \CodeTransformer \Tests \Functional \Workflow ;
44
5+ use Okapi \CodeTransformer \Tests \ClassLoaderMockTrait ;
56use Okapi \CodeTransformer \Tests \Stubs \ClassesToTransform ;
7+ use Okapi \CodeTransformer \Tests \Stubs \Kernel \CachedKernel ;
68use Okapi \CodeTransformer \Tests \Util ;
79use Okapi \Filesystem \Filesystem ;
810use PHPUnit \Framework \TestCase ;
1315 */
1416class CachedApplicationTest extends TestCase
1517{
18+ use ClassLoaderMockTrait;
19+
1620 public function testKernel (): void
1721 {
18- \Okapi \CodeTransformer \Tests \Stubs \Kernel \ApplicationKernel::init (
19- cacheDir: Util::CACHE_DIR ,
20- );
21-
22- $ this ->assertTrue (\Okapi \CodeTransformer \Tests \Stubs \Kernel \ApplicationKernel::isInitialized ());
22+ $ this ->assertFalse (CachedKernel::isInitialized ());
23+ CachedKernel::init (cacheDir: Util::CACHE_DIR );
24+ $ this ->assertTrue (CachedKernel::isInitialized ());
2325
2426 $ this ->assertFileExists (Util::CACHE_STATES_FILE );
2527 }
@@ -35,23 +37,38 @@ public function testCachedFile(): void
3537 $ this ->assertStringContainsString ('$iAmAppended = true; ' , $ file );
3638 }
3739
40+ /**
41+ * Cached by {@see ApplicationTest::testStringClass()}
42+ */
3843 public function testStringClass (): void
3944 {
40- $ stringClass = new ClassesToTransform \StringClass ();
45+ $ class = ClassesToTransform \StringClass::class;
46+ $ this ->assertTransformerLoadedFromCache ($ class );
47+
48+ $ stringClass = new $ class ();
4149 $ this ->assertSame ('Hello from Code Transformer! ' , $ stringClass ->test ());
4250 }
4351
52+ /**
53+ * Cached by {@see ApplicationTest::testNoChangesClass()}
54+ */
4455 public function testNoChangesClass (): void
4556 {
57+ $ class = ClassesToTransform \NoChangesClass::class;
58+ $ this ->assertTransformerNotApplied ($ class );
59+
4660 /** @noinspection PhpUnusedLocalVariableInspection */
47- $ stringClass = new ClassesToTransform \ StringClass ();
61+ $ stringClass = new $ class ();
4862
4963 $ originalFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/NoChangesClass.php ' ;
5064 $ cachedFilePath = Util::CACHE_DIR . '/transformed/tests/Stubs/ClassesToTransform/NoChangesClass.php ' ;
5165 $ this ->assertFileExists ($ originalFilePath );
5266 $ this ->assertFileDoesNotExist ($ cachedFilePath );
5367 }
5468
69+ /**
70+ * Cached by {@see ApplicationTest::testChangedClass()}
71+ */
5572 public function testChangedClass (): void
5673 {
5774 $ originalFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/ChangedClass.php ' ;
@@ -68,7 +85,10 @@ public function testChangedClass(): void
6885
6986 Filesystem::writeFile ($ originalFilePath , $ changedFileContent );
7087
71- $ changedClass = new ClassesToTransform \ChangedClass ();
88+ $ class = ClassesToTransform \ChangedClass::class;
89+ $ this ->assertWillBeTransformed ($ class );
90+
91+ $ changedClass = new $ class ();
7292 $ this ->assertSame ('Hello Changed World from Code Transformer! ' , $ changedClass ->test ());
7393 } catch (Throwable $ e ) {
7494 $ exception = $ e ;
@@ -82,6 +102,9 @@ public function testChangedClass(): void
82102 }
83103 }
84104
105+ /**
106+ * Cached by {@see ApplicationTest::testDeleteCacheFileClass()}
107+ */
85108 public function testDeleteCacheFileClass (): void
86109 {
87110 $ cachedFilePath = Util::CACHE_DIR . '/transformed/tests/Stubs/ClassesToTransform/DeleteCacheFileClass.php ' ;
@@ -90,12 +113,40 @@ public function testDeleteCacheFileClass(): void
90113 Filesystem::rm ($ cachedFilePath );
91114 $ this ->assertFileDoesNotExist ($ cachedFilePath );
92115
93- $ deleteCacheFileClass = new ClassesToTransform \DeleteCacheFileClass ();
116+ $ class = ClassesToTransform \DeleteCacheFileClass::class;
117+ $ this ->assertWillBeTransformed ($ class );
118+
119+ $ deleteCacheFileClass = new $ class ();
94120 $ this ->assertSame ('Hello World! ' , $ deleteCacheFileClass ->test ());
95121
96122 $ this ->assertFileExists ($ cachedFilePath );
97123 }
98124
125+ /**
126+ * Cached by {@see ApplicationTest::testMultipleTransformers()}
127+ */
128+ public function testMultipleTransformers (): void
129+ {
130+ $ class = ClassesToTransform \MultipleTransformersClass::class;
131+ $ this ->assertTransformerLoadedFromCache ($ class );
132+
133+ $ multipleTransformersClass = new $ class ();
134+ $ this ->assertSame ('Hello from Code Transformer! ' , $ multipleTransformersClass ->test ());
135+ $ this ->assertSame ("You can't get me! " , $ multipleTransformersClass ->privateProperty );
136+ }
137+
138+ /**
139+ * Cached by {@see ApplicationTest::testAddedTransformer()}
140+ */
141+ public function testAddedTransformer (): void
142+ {
143+ $ class = ClassesToTransform \AddedTransformerClass::class;
144+ $ this ->assertWillBeTransformed ($ class );
145+
146+ $ addedTransformerClass = new $ class ();
147+ $ this ->assertSame ('Hello from Code Transformer! ' , $ addedTransformerClass ->test ());
148+ }
149+
99150 public function testClearCache (): void
100151 {
101152 Util::clearCache ();
0 commit comments