3 use Wikimedia\Rdbms\DatabaseSqlite
;
6 * DatabaseSqliteTest is already defined in mediawiki core hence the 'Rdbms' included in this
8 * The test in core should have mediawiki specific stuff removed and the tests moved to this
11 class DatabaseSqliteRdbmsTest
extends PHPUnit\Framework\TestCase
{
13 use MediaWikiCoversValidator
;
14 use PHPUnit4And6Compat
;
17 * @return PHPUnit_Framework_MockObject_MockObject|DatabaseSqlite
19 private function getMockDb() {
20 return $this->getMockBuilder( DatabaseSqlite
::class )
21 ->disableOriginalConstructor()
26 public function provideBuildSubstring() {
27 yield
[ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ];
28 yield
[ 'someField', 1, null, 'SUBSTR(someField,1)' ];
32 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
33 * @dataProvider provideBuildSubstring
35 public function testBuildSubstring( $input, $start, $length, $expected ) {
36 $dbMock = $this->getMockDb();
37 $output = $dbMock->buildSubstring( $input, $start, $length );
38 $this->assertSame( $expected, $output );
41 public function provideBuildSubstring_invalidParams() {
51 * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
52 * @dataProvider provideBuildSubstring_invalidParams
54 public function testBuildSubstring_invalidParams( $start, $length ) {
55 $dbMock = $this->getMockDb();
56 $this->setExpectedException( InvalidArgumentException
::class );
57 $dbMock->buildSubstring( 'foo', $start, $length );