MediaWiki REL1_33
HTMLCheckMatrixTest.php
Go to the documentation of this file.
1<?php
2
7 private static $defaultOptions = [
8 'rows' => [ 'r1', 'r2' ],
9 'columns' => [ 'c1', 'c2' ],
10 'fieldname' => 'test',
11 ];
12
13 public function testPlainInstantiation() {
14 try {
15 new HTMLCheckMatrix( [] );
16 } catch ( MWException $e ) {
17 $this->assertInstanceOf( HTMLFormFieldRequiredOptionsException::class, $e );
18 return;
19 }
20
21 $this->fail( 'Expected MWException indicating missing parameters but none was thrown.' );
22 }
23
25 new HTMLCheckMatrix( self::$defaultOptions );
26 $this->assertTrue( true ); // form instantiation must throw exception on failure
27 }
28
30 $called = false;
31 $field = new HTMLCheckMatrix( self::$defaultOptions + [
32 'validation-callback' => function () use ( &$called ) {
33 $called = true;
34
35 return false;
36 },
37 ] );
38 $this->assertEquals( false, $this->validate( $field, [] ) );
39 $this->assertTrue( $called );
40 }
41
43 $field = new HTMLCheckMatrix( self::$defaultOptions );
44 $this->assertEquals( false, $this->validate( $field, null ) );
45 $this->assertEquals( false, $this->validate( $field, true ) );
46 $this->assertEquals( false, $this->validate( $field, 'abc' ) );
47 $this->assertEquals( false, $this->validate( $field, new stdClass ) );
48 $this->assertEquals( true, $this->validate( $field, [] ) );
49 }
50
52 $field = new HTMLCheckMatrix( self::$defaultOptions );
53 $this->assertInstanceOf( Message::class, $this->validate( $field, [ 'foo' ] ) );
54 }
55
57 $field = new HTMLCheckMatrix( self::$defaultOptions );
58 $this->assertTrue( $this->validate( $field, [] ) );
59 $this->assertTrue( $this->validate( $field, [ 'c1-r1' ] ) );
60 $this->assertTrue( $this->validate( $field, [ 'c1-r1', 'c1-r2', 'c2-r1', 'c2-r2' ] ) );
61 }
62
70 public function testValuesForcedOnRemainOn() {
71 $field = new HTMLCheckMatrix( self::$defaultOptions + [
72 'force-options-on' => [ 'c2-r1' ],
73 ] );
74 $expected = [
75 'c1-r1' => false,
76 'c1-r2' => false,
77 'c2-r1' => true,
78 'c2-r2' => false,
79 ];
80 $this->assertEquals( $expected, $field->filterDataForSubmit( [] ) );
81 }
82
83 public function testValuesForcedOffRemainOff() {
84 $field = new HTMLCheckMatrix( self::$defaultOptions + [
85 'force-options-off' => [ 'c1-r2', 'c2-r2' ],
86 ] );
87 $expected = [
88 'c1-r1' => true,
89 'c1-r2' => false,
90 'c2-r1' => true,
91 'c2-r2' => false,
92 ];
93 // array_keys on the result simulates submitting all fields checked
94 $this->assertEquals( $expected, $field->filterDataForSubmit( array_keys( $expected ) ) );
95 }
96
97 protected function validate( HTMLFormField $field, $submitted ) {
98 return $field->validate(
99 $submitted,
100 [ self::$defaultOptions['fieldname'] => $submitted ]
101 );
102 }
103
104}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
validate(HTMLFormField $field, $submitted)
testValuesForcedOnRemainOn()
This form object actually has no visibility into what happens later on, but essentially if the data s...
A checkbox matrix Operates similarly to HTMLMultiSelectField, but instead of using an array of option...
The parent class to generate form fields.
MediaWiki exception.
$called
$called tracks whether the setUp and tearDown method has been called.
returning false will NOT prevent logging $e
Definition hooks.txt:2175