Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Tests/Mysql/MysqlExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*
* @since 1.0
*/
class MysqlExporterText extends TestCase
class MysqlExporterTest extends TestCase
{
/**
* @var object The mocked database object for use by test methods.
Expand Down Expand Up @@ -215,7 +215,7 @@ public function test__toString()
<table_structure name="#__test">
<field Field="id" Type="int(11) unsigned" Null="NO" Key="PRI" Default="" Extra="auto_increment" />
<field Field="title" Type="varchar(255)" Null="NO" Key="" Default="" Extra="" />
<key Table="#__test" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Null="" Index_type="BTREE" Comment="" />
<key Table="#__test" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Null="" Index_type="BTREE" Sub_part="" Comment="" />
</table_structure>
</database>
</mysqldump>';
Expand Down Expand Up @@ -278,7 +278,7 @@ public function testBuildXml()
<table_structure name="#__test">
<field Field="id" Type="int(11) unsigned" Null="NO" Key="PRI" Default="" Extra="auto_increment" />
<field Field="title" Type="varchar(255)" Null="NO" Key="" Default="" Extra="" />
<key Table="#__test" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Null="" Index_type="BTREE" Comment="" />
<key Table="#__test" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" Null="" Index_type="BTREE" Sub_part="" Comment="" />
</table_structure>
</database>
</mysqldump>';
Expand Down Expand Up @@ -318,7 +318,7 @@ public function testBuildXmlStructure()
' <field Field="id" Type="int(11) unsigned" Null="NO" Key="PRI" Default="" Extra="auto_increment" />',
' <field Field="title" Type="varchar(255)" Null="NO" Key="" Default="" Extra="" />',
' <key Table="#__test" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="id" Collation="A" ' .
'Null="" Index_type="BTREE" Comment="" />',
'Null="" Index_type="BTREE" Sub_part="" Comment="" />',
' </table_structure>'
)
),
Expand Down
4 changes: 4 additions & 0 deletions Tests/Pgsql/PgsqlDriverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -360,24 +360,28 @@ public function testGetTableKeys()
$pkey->idxName = 'assets_pkey';
$pkey->isPrimary = true;
$pkey->isUnique = true;
$pkey->indKey = '1';
$pkey->Query = 'ALTER TABLE assets ADD PRIMARY KEY (id)';

$asset = new \stdClass;
$asset->idxName = 'idx_asset_name';
$asset->isPrimary = false;
$asset->isUnique = true;
$asset->indKey = '6';
$asset->Query = 'CREATE UNIQUE INDEX idx_asset_name ON assets USING btree (name)';

$lftrgt = new \stdClass;
$lftrgt->idxName = 'assets_idx_lft_rgt';
$lftrgt->isPrimary = false;
$lftrgt->isUnique = false;
$lftrgt->indKey = '3 4';
$lftrgt->Query = 'CREATE INDEX assets_idx_lft_rgt ON assets USING btree (lft, rgt)';

$id = new \stdClass;
$id->idxName = 'assets_idx_parent_id';
$id->isPrimary = false;
$id->isUnique = false;
$id->indKey = '2';
$id->Query = 'CREATE INDEX assets_idx_parent_id ON assets USING btree (parent_id)';

$this->assertThat(self::$driver->getTableKeys('assets'), $this->equalTo(array($pkey, $id, $lftrgt, $asset)), __LINE__);
Expand Down
76 changes: 55 additions & 21 deletions Tests/Pgsql/PgsqlExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ protected function setup()
'getTableColumns',
'getTableKeys',
'getTableSequences',
'getSequenceLastValue',
'getSequenceIsCalled',
'getNamesKey',
'getVersion',
'quoteName',
'loadObjectList',
Expand Down Expand Up @@ -77,28 +80,28 @@ protected function setup()
'column_name' => 'id',
'type' => 'integer',
'null' => 'NO',
'default' => 'nextval(\'jos_dbtest_id_seq\'::regclass)',
'Default' => 'nextval(\'jos_dbtest_id_seq\'::regclass)',
'comments' => '',
),
(object) array(
'column_name' => 'title',
'type' => 'character varying(50)',
'null' => 'NO',
'default' => 'NULL',
'Default' => 'NULL',
'comments' => '',
),
(object) array(
'column_name' => 'start_date',
'type' => 'timestamp without time zone',
'null' => 'NO',
'default' => 'NULL',
'Default' => 'NULL',
'comments' => '',
),
(object) array(
'column_name' => 'description',
'type' => 'text',
'null' => 'NO',
'default' => 'NULL',
'Default' => 'NULL',
'comments' => '',
)
)
Expand All @@ -116,12 +119,43 @@ protected function setup()
'idxName' => 'jos_dbtest_pkey',
'isPrimary' => 'TRUE',
'isUnique' => 'TRUE',
'indKey' => '1',
'Query' => 'ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)',
)
)
)
);

$this->dbo->expects(
$this->any()
)
->method('getNamesKey')
->will(
$this->returnValue(
'id'
)
);

$this->dbo->expects(
$this->any()
)
->method('getSequenceLastValue')
->will(
$this->returnValue(
'1'
)
);

$this->dbo->expects(
$this->any()
)
->method('getSequenceIsCalled')
->will(
$this->returnValue(
'f'
)
);

/* Check if database is at least 9.1.0 */
$this->dbo->expects(
$this->any()
Expand Down Expand Up @@ -243,7 +277,7 @@ public function test__toString()
// Set up the export settings.
$instance
->setDbo($this->dbo)
->from('jos_test')
->from('jos_dbtest')
->withStructure(true);

/* Depending on which version is running, 9.1.0 or older */
Expand All @@ -252,14 +286,14 @@ public function test__toString()
$expecting = '<?xml version="1.0"?>
<postgresqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="">
<table_structure name="#__test">
<sequence Name="jos_dbtest_id_seq" Schema="public" Table="jos_dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Increment="1" Cycle_option="NO" />
<table_structure name="#__dbtest">
<sequence Name="#__dbtest_id_seq" Schema="public" Table="#__dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Last_Value="1" Increment="1" Cycle_option="NO" Is_called="f" />
<field Field="id" Type="integer" Null="NO" Default="nextval(\'jos_dbtest_id_seq\'::regclass)" Comments="" />
<field Field="title" Type="character varying(50)" Null="NO" Default="NULL" Comments="" />
<field Field="start_date" Type="timestamp without time zone" Null="NO" Default="NULL" Comments="" />
<field Field="description" Type="text" Null="NO" Default="NULL" Comments="" />
<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Query="ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)" />
<key Index="#__dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="id" Query=\'ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)\' />
</table_structure>
</database>
</postgresqldump>';
Expand Down Expand Up @@ -314,7 +348,7 @@ public function testBuildXml()
// Set up the export settings.
$instance
->setDbo($this->dbo)
->from('jos_test')
->from('jos_dbtest')
->withStructure(true);

/* Depending on which version is running, 9.1.0 or older */
Expand All @@ -323,14 +357,14 @@ public function testBuildXml()
$expecting = '<?xml version="1.0"?>
<postgresqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="">
<table_structure name="#__test">
<sequence Name="jos_dbtest_id_seq" Schema="public" Table="jos_dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Increment="1" Cycle_option="NO" />
<table_structure name="#__dbtest">
<sequence Name="#__dbtest_id_seq" Schema="public" Table="#__dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Last_Value="1" Increment="1" Cycle_option="NO" Is_called="f" />
<field Field="id" Type="integer" Null="NO" Default="nextval(\'jos_dbtest_id_seq\'::regclass)" Comments="" />
<field Field="title" Type="character varying(50)" Null="NO" Default="NULL" Comments="" />
<field Field="start_date" Type="timestamp without time zone" Null="NO" Default="NULL" Comments="" />
<field Field="description" Type="text" Null="NO" Default="NULL" Comments="" />
<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Query="ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)" />
<key Index="#__dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="id" Query=\'ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)\' />
</table_structure>
</database>
</postgresqldump>';
Expand Down Expand Up @@ -359,7 +393,7 @@ public function testBuildXmlStructure()
// Set up the export settings.
$instance
->setDbo($this->dbo)
->from('jos_test')
->from('jos_dbtest')
->withStructure(true);

/* Depending on which version is running, 9.1.0 or older */
Expand All @@ -369,14 +403,14 @@ public function testBuildXmlStructure()
$instance->buildXmlStructure(),
$this->equalTo(
array(
' <table_structure name="#__test">',
' <sequence Name="jos_dbtest_id_seq" Schema="public" Table="jos_dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Increment="1" Cycle_option="NO" />',
' <table_structure name="#__dbtest">',
' <sequence Name="#__dbtest_id_seq" Schema="public" Table="#__dbtest" Column="id" Type="bigint" Start_Value="' .
$start_val . '" Min_Value="1" Max_Value="9223372036854775807" Last_Value="1" Increment="1" Cycle_option="NO" Is_called="f" />',
' <field Field="id" Type="integer" Null="NO" Default="nextval(\'jos_dbtest_id_seq\'::regclass)" Comments="" />',
' <field Field="title" Type="character varying(50)" Null="NO" Default="NULL" Comments="" />',
' <field Field="start_date" Type="timestamp without time zone" Null="NO" Default="NULL" Comments="" />',
' <field Field="description" Type="text" Null="NO" Default="NULL" Comments="" />',
' <key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Query="ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)" />',
' <key Index="#__dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="id" Query=\'ALTER TABLE "jos_dbtest" ADD PRIMARY KEY (id)\' />',
' </table_structure>'
)
),
Expand Down Expand Up @@ -542,8 +576,8 @@ public function testGetGenericTableName()
$instance->setDbo($this->dbo);

$this->assertThat(
$instance->getGenericTableName('jos_test'),
$this->equalTo('#__test'),
$instance->getGenericTableName('jos_dbtest'),
$this->equalTo('#__dbtest'),
'The testGetGenericTableName should replace the database prefix with #__.'
);
}
Expand Down
34 changes: 20 additions & 14 deletions Tests/Pgsql/PgsqlImporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public function setup()
'getTableColumns',
'getTableKeys',
'getTableSequences',
'getSetvalSequenceSql',
'getVersion',
'quote',
'quoteName',
Expand Down Expand Up @@ -103,12 +104,14 @@ public function setup()
'Index' => 'jos_dbtest_pkey',
'is_primary' => 'TRUE',
'is_unique' => 'TRUE',
'Key_name' => 'id',
'Query' => 'ALTER TABLE jos_dbtest ADD PRIMARY KEY (id)',
),
(object) array(
'Index' => 'jos_dbtest_idx_name',
'is_primary' => 'FALSE',
'is_unique' => 'FALSE',
'Key_name' => 'name',
'Query' => 'CREATE INDEX jos_dbtest_idx_name ON jos_dbtest USING btree (name)',
)
)
Expand Down Expand Up @@ -261,26 +264,27 @@ public function dataGetAlterTableSql()
$f3 = '<field Field="alias" Type="character varying(255)" Null="NO" Default="test" Comments="" />';
$f2_def = '<field Field="title" Type="character varying(50)" Null="NO" Default="add default" Comments="" />';

$k1 = '<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Query="ALTER TABLE jos_dbtest ADD PRIMARY KEY (id)" />';
$k2 = '<key Index="jos_dbtest_idx_name" is_primary="FALSE" is_unique="FALSE" Query="CREATE INDEX jos_dbtest_idx_name ON' .
$k1 = '<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="id" Query="ALTER TABLE jos_dbtest ADD PRIMARY KEY (id)" />';
$k2 = '<key Index="jos_dbtest_idx_name" is_primary="FALSE" is_unique="FALSE" Key_name="name" Query="CREATE INDEX jos_dbtest_idx_name ON' .
' jos_dbtest USING btree (name)" />';
$k3 = '<key Index="jos_dbtest_idx_title" is_primary="FALSE" is_unique="FALSE" Query="CREATE INDEX ' .
$k3 = '<key Index="jos_dbtest_idx_title" is_primary="FALSE" is_unique="FALSE" Key_name="title" Query="CREATE INDEX ' .
'jos_dbtest_idx_title ON jos_dbtest USING btree (title)" />';
$k4 = '<key Index="jos_dbtest_uidx_name" is_primary="FALSE" is_unique="TRUE" Query="CREATE UNIQUE INDEX ' .
$k4 = '<key Index="jos_dbtest_uidx_name" is_primary="FALSE" is_unique="TRUE" Key_name="name" Query="CREATE UNIQUE INDEX ' .
'jos_dbtest_uidx_name ON jos_dbtest USING btree (name)" />';
$pk = '<key Index="jos_dbtest_title_pkey" is_primary="TRUE" is_unique="TRUE" ' .
$pk = '<key Index="jos_dbtest_title_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="title" ' .
'Query="ALTER TABLE jos_dbtest ADD PRIMARY KEY (title)" />';

$s1 = '<sequence Name="jos_dbtest_id_seq" Schema="public" Table="jos_dbtest" Column="id" Type="bigint" Start_Value="1" ' .
'Min_Value="1" Max_Value="9223372036854775807" Increment="1" Cycle_option="NO" />';
$s2 = '<sequence Name="jos_dbtest_title_seq" Schema="public" Table="jos_dbtest" Column="title" Type="bigint" Start_Value="1" Min_Value="1" ' .
'Max_Value="9223372036854775807" Increment="1" Cycle_option="NO" />';
'Max_Value="9223372036854775807" Last_Value="1" Increment="1" Cycle_option="NO" />';

$addSequence = 'CREATE SEQUENCE jos_dbtest_title_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 ' .
$addSequence = 'CREATE SEQUENCE IF NOT EXISTS jos_dbtest_title_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 ' .
'NO CYCLE OWNED BY "public.jos_dbtest.title"';
$setValSequence = 'SELECT setval(\'jos_dbtest_title_seq\', 1, FALSE)';
$changeCol = 'ALTER TABLE "jos_test" ALTER COLUMN "title" TYPE character ' .
"varying(50),\nALTER COLUMN \"title\" SET NOT NULL,\nALTER COLUMN \"title\" SET DEFAULT 'add default'";
$changeSeq = 'CREATE SEQUENCE jos_dbtest_title_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 ' .
$changeSeq = 'CREATE SEQUENCE IF NOT EXISTS jos_dbtest_title_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 ' .
'START 1 NO CYCLE OWNED BY "public.jos_dbtest.title"';

return array(
Expand Down Expand Up @@ -317,6 +321,7 @@ public function dataGetAlterTableSql()
new \SimpleXmlElement('<table_structure name="#__test">' . $s1 . $s2 . $f1 . $f2 . $k1 . $k2 . '</table_structure>'),
array(
$addSequence,
$setValSequence,
),
'getAlterTableSQL should add the new sequence.'
),
Expand Down Expand Up @@ -371,6 +376,7 @@ public function dataGetAlterTableSql()
new \SimpleXmlElement('<table_structure name="#__test">' . $s2 . $f1 . $f2 . $k1 . $k2 . '</table_structure>'),
array(
$changeSeq,
$setValSequence,
'DROP SEQUENCE "jos_dbtest_id_seq"',),
'getAlterTableSQL should change sequence.'
),
Expand Down Expand Up @@ -406,9 +412,9 @@ public function dataGetColumnSql()
{
$sample = array(
'xml-id-field' => '<field Field="id" Type="integer" Null="NO" Default="nextval(\'jos_dbtest_id_seq\'::regclass)" Comments="" />',
'xml-title-field' => '<field Field="title" Type="character varying(50)" Null="NO" Default="NULL" Comments="" />',
'xml-title-field' => '<field Field="title" Type="character varying(50)" Null="NO" Default="" Comments="" />',
'xml-title-def' => '<field Field="title" Type="character varying(50)" Null="NO" Default="this is a test" Comments="" />',
'xml-body-field' => '<field Field="description" Type="text" Null="NO" Default="NULL" Comments="" />',);
'xml-body-field' => '<field Field="description" Type="text" Null="NO" Default="" Comments="" />',);

return array(
array(
Expand Down Expand Up @@ -602,7 +608,7 @@ public function testGetAddColumnSql()
$instance->setDbo($this->dbo);

$sample = array(
'xml-title-field' => '<field Field="title" Type="character varying(50)" Null="NO" Default="NULL" Comments="" />',
'xml-title-field' => '<field Field="title" Type="character varying(50)" Null="NO" Default="" Comments="" />',
'xml-title-def' => '<field Field="title" Type="character varying(50)" Null="NO" Default="this is a test" Comments="" />',
'xml-int-defnum' => '<field Field="title" Type="integer" Null="NO" Default="0" Comments="" />',);

Expand Down Expand Up @@ -662,7 +668,7 @@ public function testGetAddSequenceSql()
new \SimpleXmlElement($xmlIdSeq)
),
$this->equalTo(
'CREATE SEQUENCE jos_dbtest_id_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 NO CYCLE OWNED BY "public.jos_dbtest.id"'
'CREATE SEQUENCE IF NOT EXISTS jos_dbtest_id_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 NO CYCLE OWNED BY "public.jos_dbtest.id"'
),
'getAddSequenceSQL did not yield the expected result.'
);
Expand All @@ -677,9 +683,9 @@ public function testGetAddSequenceSql()
*/
public function testGetAddIndexSql()
{
$xmlIndex = '<key Index="jos_dbtest_idx_name" is_primary="FALSE" is_unique="FALSE" ' .
$xmlIndex = '<key Index="jos_dbtest_idx_name" is_primary="FALSE" is_unique="FALSE" Key_name="name" ' .
'Query="CREATE INDEX jos_dbtest_idx_name ON jos_dbtest USING btree (name)" />';
$xmlPrimaryKey = '<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" ' .
$xmlPrimaryKey = '<key Index="jos_dbtest_pkey" is_primary="TRUE" is_unique="TRUE" Key_name="id" ' .
'Query="ALTER TABLE jos_dbtest ADD PRIMARY KEY (id)" />';

$instance = new PgsqlImporterInspector;
Expand Down
4 changes: 4 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@
},
"require-dev": {
"joomla/coding-standards": "~2.0@alpha",
"joomla/console": "~2.0",
"joomla/archive": "~2.0@dev",
"joomla/filesystem": "~2.0@dev",
"joomla/di": "~1.0|~2.0",
"joomla/registry": "^1.4.5|~2.0",
"joomla/test": "~1.2",
"phpunit/phpunit": "~6.3",
"phpunit/dbunit": "~3.0"
},
"suggest": {
"joomla/console": "If you want to use the ExporterCommand and ImporterCommand classes, please install joomla/console:~2.0",
"joomla/di": "To use the Database ServiceProviderInterface objects, install joomla/di.",
"joomla/registry": "To use the Database ServiceProviderInterface objects, install joomla/registry.",
"ext-mysqli": "To connect to a MySQL database via MySQLi",
Expand Down
Loading