<?php

namespace yiiunit\framework\db\mssql;

use yiiunit\framework\db\QueryBuilderTest;
use yii\db\Query;

/**
 * @group db
 * @group mssql
 */
class MSSQLQueryBuilderTest extends QueryBuilderTest
{
	public $driverName = 'sqlsrv';
        
        public function testOffsetLimit() {
                $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY';
                $expectedQueryParams = null;
                
                $query = new Query();
                $query->select('id')
                        ->from('example')
                        ->limit(10)->offset(5);
                
                list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
                
                $this->assertEquals($expectedQuerySql, $actualQuerySql);
                $this->assertEquals($expectedQueryParams, $actualQueryParams);
        }
        
        public function testLimit() {
                $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY';
                $expectedQueryParams = null;
                
                $query = new Query();
                $query->select('id')
                        ->from('example')
                        ->limit(10);
                
                list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
                
                $this->assertEquals($expectedQuerySql, $actualQuerySql);
                $this->assertEquals($expectedQueryParams, $actualQueryParams);
        }
        
        public function testOffset() {
                $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 10 ROWS';
                $expectedQueryParams = null;
                
                $query = new Query();
                $query->select('id')
                        ->from('example')
                        ->offset(10);
                
                list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
                
                $this->assertEquals($expectedQuerySql, $actualQuerySql);
                $this->assertEquals($expectedQueryParams, $actualQueryParams);
        }
}