d963a5dcd2a8d575a98795942b432e57cd75a253
[lhc/web/wiklou.git] / tests / phpunit / includes / libs / rdbms / database / DatabaseSqliteRdbmsTest.php
1 <?php
2
3 use Wikimedia\Rdbms\DatabaseSqlite;
4
5 /**
6 * DatabaseSqliteTest is already defined in mediawiki core hence the 'Rdbms' included in this
7 * class name.
8 * The test in core should have mediawiki specific stuff removed and the tests moved to this
9 * rdbms libs test.
10 */
11 class DatabaseSqliteRdbmsTest extends PHPUnit\Framework\TestCase {
12
13 use MediaWikiCoversValidator;
14
15 /**
16 * @return PHPUnit_Framework_MockObject_MockObject|DatabaseSqlite
17 */
18 private function getMockDb() {
19 return $this->getMockBuilder( DatabaseSqlite::class )
20 ->disableOriginalConstructor()
21 ->setMethods( null )
22 ->getMock();
23 }
24
25 public function provideBuildSubstring() {
26 yield [ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ];
27 yield [ 'someField', 1, null, 'SUBSTR(someField,1)' ];
28 }
29
30 /**
31 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
32 * @dataProvider provideBuildSubstring
33 */
34 public function testBuildSubstring( $input, $start, $length, $expected ) {
35 $dbMock = $this->getMockDb();
36 $output = $dbMock->buildSubstring( $input, $start, $length );
37 $this->assertSame( $expected, $output );
38 }
39
40 public function provideBuildSubstring_invalidParams() {
41 yield [ -1, 1 ];
42 yield [ 1, -1 ];
43 yield [ 1, 'foo' ];
44 yield [ 'foo', 1 ];
45 yield [ null, 1 ];
46 yield [ 0, 1 ];
47 }
48
49 /**
50 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
51 * @dataProvider provideBuildSubstring_invalidParams
52 */
53 public function testBuildSubstring_invalidParams( $start, $length ) {
54 $dbMock = $this->getMockDb();
55 $this->setExpectedException( InvalidArgumentException::class );
56 $dbMock->buildSubstring( 'foo', $start, $length );
57 }
58
59 }