3 use Wikimedia\Rdbms\Database
;
4 use Wikimedia\Rdbms\DatabaseMssql
;
6 class DatabaseMssqlTest
extends PHPUnit\Framework\TestCase
{
8 use MediaWikiCoversValidator
;
9 use PHPUnit4And6Compat
;
12 * @return PHPUnit_Framework_MockObject_MockObject|DatabaseMssql
14 private function getMockDb() {
15 return $this->getMockBuilder( DatabaseMssql
::class )
16 ->disableOriginalConstructor()
21 public function provideBuildSubstring() {
22 yield
[ 'someField', 1, 2, 'SUBSTRING(someField,1,2)' ];
23 yield
[ 'someField', 1, null, 'SUBSTRING(someField,1,2147483647)' ];
24 yield
[ 'someField', 1, 3333333333, 'SUBSTRING(someField,1,3333333333)' ];
28 * @covers Wikimedia\Rdbms\DatabaseMssql::buildSubstring
29 * @dataProvider provideBuildSubstring
31 public function testBuildSubstring( $input, $start, $length, $expected ) {
32 $mockDb = $this->getMockDb();
33 $output = $mockDb->buildSubstring( $input, $start, $length );
34 $this->assertSame( $expected, $output );
37 public function provideBuildSubstring_invalidParams() {
47 * @covers Wikimedia\Rdbms\DatabaseMssql::buildSubstring
48 * @dataProvider provideBuildSubstring_invalidParams
50 public function testBuildSubstring_invalidParams( $start, $length ) {
51 $mockDb = $this->getMockDb();
52 $this->setExpectedException( InvalidArgumentException
::class );
53 $mockDb->buildSubstring( 'foo', $start, $length );
57 * @covers \Wikimedia\Rdbms\DatabaseMssql::getAttributes
59 public function testAttributes() {
60 $this->assertTrue( DatabaseMssql
::getAttributes()[Database
::ATTR_SCHEMAS_AS_TABLE_GROUPS
] );