@@ -23,14 +23,21 @@ class FilterRequirementsTest extends \PHPUnit\Framework\TestCase
2323 */
2424 private $ requirements ;
2525
26+ /**
27+ * @var FilterRequirements
28+ */
29+ private $ requirements404 ;
30+
2631 protected function setUp (): void
2732 {
28- $ this ->requirements = new FilterRequirements (new Plugin ('filter_activitynames ' , 'filter ' , 'activitynames ' , '' ), 29 );
33+ $ this ->requirements404 = new FilterRequirements (new Plugin ('filter_activitynames ' , 'filter ' , 'activitynames ' , '' ), 404 );
34+ $ this ->requirements = new FilterRequirements (new Plugin ('filter_activitynames ' , 'filter ' , 'activitynames ' , '' ), 405 );
2935 }
3036
3137 protected function tearDown (): void
3238 {
33- $ this ->requirements = null ;
39+ $ this ->requirements404 = null ;
40+ $ this ->requirements = null ;
3441 }
3542
3643 public function testResolveRequirements ()
@@ -39,29 +46,66 @@ public function testResolveRequirements()
3946
4047 $ this ->assertInstanceOf (
4148 'MoodlePluginCI\PluginValidate\Requirements\FilterRequirements ' ,
42- $ resolver ->resolveRequirements (new Plugin ('' , 'filter ' , '' , '' ), 29 )
49+ $ resolver ->resolveRequirements (new Plugin ('' , 'filter ' , '' , '' ), 404 )
4350 );
4451 }
4552
53+ public function testGetRequiredFiles404 ()
54+ {
55+ $ files = $ this ->requirements404 ->getRequiredFiles ();
56+
57+ $ this ->assertTrue (in_array ('filter.php ' , $ files , true ));
58+ $ this ->assertFalse (in_array ('classes/text_filter.php ' , $ files , true ));
59+ foreach ($ files as $ file ) {
60+ $ this ->assertIsString ($ file );
61+ }
62+ }
63+
4664 public function testGetRequiredFiles ()
4765 {
4866 $ files = $ this ->requirements ->getRequiredFiles ();
4967
50- $ this ->assertNotEmpty ( $ files );
51- $ this ->assertTrue (in_array ('filter .php ' , $ files , true ));
68+ $ this ->assertFalse ( in_array ( ' filter.php ' , $ files, true ) );
69+ $ this ->assertTrue (in_array ('classes/text_filter .php ' , $ files , true ));
5270 foreach ($ files as $ file ) {
5371 $ this ->assertIsString ($ file );
5472 }
5573 }
5674
75+ public function testGetRequiredClasses404 ()
76+ {
77+ $ requirements = $ this ->getMockBuilder ('MoodlePluginCI\PluginValidate\Requirements\FilterRequirements ' )
78+ ->setConstructorArgs ([new Plugin ('filter_activitynames ' , 'filter ' , 'activitynames ' , '' ), 404 ])
79+ ->onlyMethods (['fileExists ' ])
80+ ->getMock ();
81+ // On first call fileExists return false, on second call return true.
82+ $ requirements ->method ('fileExists ' )
83+ ->with ($ this ->identicalTo ('classes/text_filter.php ' ))
84+ ->willReturn (false , true );
85+
86+ // If classes/text_filter.php does not exist, expect class presence in filter.php.
87+ $ classes = $ requirements ->getRequiredClasses ();
88+ $ this ->assertCount (1 , $ classes );
89+ $ class = reset ($ classes );
90+ $ this ->assertInstanceOf ('MoodlePluginCI\PluginValidate\Finder\FileTokens ' , $ class );
91+ $ this ->assertSame ('filter.php ' , $ class ->file );
92+
93+ // If classes/text_filter.php exists, expect class presence in it (4.5 plugin backward compatibility).
94+ $ classes = $ requirements ->getRequiredClasses ();
95+ $ this ->assertCount (1 , $ classes );
96+ $ class = reset ($ classes );
97+ $ this ->assertInstanceOf ('MoodlePluginCI\PluginValidate\Finder\FileTokens ' , $ class );
98+ $ this ->assertSame ('classes/text_filter.php ' , $ class ->file );
99+ }
100+
57101 public function testGetRequiredClasses ()
58102 {
59103 $ classes = $ this ->requirements ->getRequiredClasses ();
60104
61- $ this ->assertNotEmpty ( $ classes );
62- foreach ( $ classes as $ class ) {
63- $ this ->assertInstanceOf ('MoodlePluginCI\PluginValidate\Finder\FileTokens ' , $ class );
64- }
105+ $ this ->assertCount ( 1 , $ classes );
106+ $ class = reset ( $ classes );
107+ $ this ->assertInstanceOf ('MoodlePluginCI\PluginValidate\Finder\FileTokens ' , $ class );
108+ $ this -> assertSame ( ' classes/text_filter.php ' , $ class -> file );
65109 }
66110
67111 public function testGetRequiredStrings ()
0 commit comments