Skip to content

Commit

Permalink
Merge branch 'QA_5_0'
Browse files Browse the repository at this point in the history
Signed-off-by: William Desportes <williamdes@wdes.fr>
  • Loading branch information
williamdes committed May 2, 2020
2 parents 7c24eba + 52b6930 commit d654b4f
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 1 deletion.
8 changes: 7 additions & 1 deletion libraries/classes/Gis/GisVisualization.php
Expand Up @@ -174,12 +174,18 @@ private function _modifySqlQuery($sql_query, $rows, $pos)
$modified_query = 'SELECT ';
$spatialAsText = 'ASTEXT';
$spatialSrid = 'SRID';
$axisOrder = '';

if ($this->_userSpecifiedSettings['mysqlVersion'] >= 50600) {
$spatialAsText = 'ST_ASTEXT';
$spatialSrid = 'ST_SRID';
}

// If MYSQL version >= 8.1 override default axis order
if ($this->_userSpecifiedSettings['mysqlVersion'] >= 80010) {
$axisOrder = ', \'axis-order=long-lat\'';
}

// If label column is chosen add it to the query
if (! empty($this->_userSpecifiedSettings['labelColumn'])) {
$modified_query .= Util::backquote(
Expand All @@ -190,7 +196,7 @@ private function _modifySqlQuery($sql_query, $rows, $pos)
// Wrap the spatial column with 'ST_ASTEXT()' function and add it
$modified_query .= $spatialAsText . '('
. Util::backquote($this->_userSpecifiedSettings['spatialColumn'])
. ') AS ' . Util::backquote(
. $axisOrder . ') AS ' . Util::backquote(
$this->_userSpecifiedSettings['spatialColumn']
)
. ', ';
Expand Down
1 change: 1 addition & 0 deletions phpcs.xml.dist
Expand Up @@ -80,6 +80,7 @@
<exclude-pattern>*/twig-templates/*</exclude-pattern>
<exclude-pattern>*/tmp/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/libraries/cache/*</exclude-pattern>

<file>.</file>
</ruleset>
98 changes: 98 additions & 0 deletions test/classes/Gis/GisVisualizationTest.php
@@ -0,0 +1,98 @@
<?php
namespace PhpMyAdmin\Tests\Gis;

use PhpMyAdmin\Gis\GisVisualization;
use PHPUnit\Framework\TestCase;
use ReflectionClass;

class GisVisualizationTest extends TestCase
{
/**
* Call private functions by setting visibility to public.
*
* @param string $name method name
* @param array $params parameters for the invocation
* @param GisVisualization $gisObject The GisVisualization instance
*
* @return mixed the output from the private method.
*/
private function _callPrivateFunction(string $name, array $params, GisVisualization $gisObject)
{
$class = new ReflectionClass(GisVisualization::class);
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method->invokeArgs($gisObject, $params);
}

/**
* Modify the query for an old version
*/
public function testModifyQueryOld(): void
{
$queryString = $this->_callPrivateFunction(
'_modifySqlQuery',
[
'',
0,
0,
],
GisVisualization::getByData([], [
'mysqlVersion' => 50500,
'spatialColumn' => 'abc',
])
);

$this->assertEquals(
'SELECT ASTEXT(`abc`) AS `abc`, SRID(`abc`) AS `srid` FROM () AS `temp_gis`',
$queryString
);
}

/**
* Modify the query for an MySQL 8.0 version
*/
public function testModifyQuery(): void
{
$queryString = $this->_callPrivateFunction(
'_modifySqlQuery',
[
'',
0,
0,
],
GisVisualization::getByData([], [
'mysqlVersion' => 80000,
'spatialColumn' => 'abc',
])
);

$this->assertEquals(
'SELECT ST_ASTEXT(`abc`) AS `abc`, ST_SRID(`abc`) AS `srid` FROM () AS `temp_gis`',
$queryString
);
}

/**
* Modify the query for an MySQL 8.1 version
*/
public function testModifyQueryVersion8(): void
{
$queryString = $this->_callPrivateFunction(
'_modifySqlQuery',
[
'',
0,
0,
],
GisVisualization::getByData([], [
'mysqlVersion' => 80010,
'spatialColumn' => 'abc',
])
);

$this->assertEquals(
'SELECT ST_ASTEXT(`abc`, \'axis-order=long-lat\') AS `abc`, ST_SRID(`abc`) AS `srid` FROM () AS `temp_gis`',
$queryString
);
}
}

0 comments on commit d654b4f

Please sign in to comment.