Merge "rdbms: avoid LoadBalancer::getConnection waste when using $groups"
[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 use PHPUnit4And6Compat;
15
16 /**
17 * @return PHPUnit_Framework_MockObject_MockObject|DatabaseSqlite
18 */
19 private function getMockDb() {
20 return $this->getMockBuilder( DatabaseSqlite::class )
21 ->disableOriginalConstructor()
22 ->setMethods( null )
23 ->getMock();
24 }
25
26 public function provideBuildSubstring() {
27 yield [ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ];
28 yield [ 'someField', 1, null, 'SUBSTR(someField,1)' ];
29 }
30
31 /**
32 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
33 * @dataProvider provideBuildSubstring
34 */
35 public function testBuildSubstring( $input, $start, $length, $expected ) {
36 $dbMock = $this->getMockDb();
37 $output = $dbMock->buildSubstring( $input, $start, $length );
38 $this->assertSame( $expected, $output );
39 }
40
41 public function provideBuildSubstring_invalidParams() {
42 yield [ -1, 1 ];
43 yield [ 1, -1 ];
44 yield [ 1, 'foo' ];
45 yield [ 'foo', 1 ];
46 yield [ null, 1 ];
47 yield [ 0, 1 ];
48 }
49
50 /**
51 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
52 * @dataProvider provideBuildSubstring_invalidParams
53 */
54 public function testBuildSubstring_invalidParams( $start, $length ) {
55 $dbMock = $this->getMockDb();
56 $this->setExpectedException( InvalidArgumentException::class );
57 $dbMock->buildSubstring( 'foo', $start, $length );
58 }
59
60 }