X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F30sqlt-new-diff-mysql.t;h=ee6674e7410ef6c837ca8f9bbfad765ff9715609;hb=ae95e48e16c26a573063628ea56c2d54040e88f9;hp=e29583340fcb5f9a7b014b329d01460aa61b82dc;hpb=ad071409cb8f526337abbe025a63aa1e67716165;p=dbsrgits%2FSQL-Translator.git diff --git a/t/30sqlt-new-diff-mysql.t b/t/30sqlt-new-diff-mysql.t index e295833..ee6674e 100644 --- a/t/30sqlt-new-diff-mysql.t +++ b/t/30sqlt-new-diff-mysql.t @@ -19,7 +19,7 @@ use_ok('SQL::Translator::Diff') or die "Cannot continue\n"; my $tr = SQL::Translator->new; -my ( $source_schema, $target_schema, $parsed_sql_schema ) = map { +my ( $source_schema, $target_schema ) = map { my $t = SQL::Translator->new; $t->parser( 'YAML' ) or die $tr->error; @@ -39,7 +39,7 @@ my @out = SQL::Translator::Diff::schema_diff( $target_schema, 'MySQL', { no_batch_alters => 1, - producer_args => { quote_table_names => 0 } + producer_args => { quote_identifiers => 0 } } ); @@ -47,7 +47,7 @@ ok( @out, 'Got a list' ); my $out = join('', @out); -eq_or_diff($out, <<'## END OF DIFF', "Diff as expected"); +eq_or_diff($out, <<'## END OF DIFF', "Diff as expected", { context => 1 }); -- Convert schema 'create1.yml' to 'create2.yml':; BEGIN; @@ -64,7 +64,7 @@ ALTER TABLE old_name RENAME TO new_name; ALTER TABLE employee DROP FOREIGN KEY FK5302D47D93FE702E; -ALTER TABLE person DROP INDEX UC_age_name; +ALTER TABLE person DROP CONSTRAINT UC_age_name; ALTER TABLE person DROP INDEX u_name; @@ -106,10 +106,10 @@ COMMIT; $out = SQL::Translator::Diff::schema_diff($source_schema, 'MySQL', $target_schema, 'MySQL', { ignore_index_names => 1, ignore_constraint_names => 1, - producer_args => { quote_table_names => 0 }, + producer_args => { quote_identifiers => 0 }, }); -eq_or_diff($out, <<'## END OF DIFF', "Diff as expected"); +eq_or_diff($out, <<'## END OF DIFF', "Diff as expected", { context => 1 }); -- Convert schema 'create1.yml' to 'create2.yml':; BEGIN; @@ -127,7 +127,7 @@ ALTER TABLE employee DROP COLUMN job_title; ALTER TABLE old_name RENAME TO new_name, ADD COLUMN new_field integer NULL; -ALTER TABLE person DROP INDEX UC_age_name, +ALTER TABLE person DROP CONSTRAINT UC_age_name, ADD COLUMN is_rock_star tinyint(4) NULL DEFAULT 1, CHANGE COLUMN person_id person_id integer(11) NOT NULL auto_increment, CHANGE COLUMN name name varchar(20) NOT NULL, @@ -151,7 +151,7 @@ COMMIT; # Test for sameness $out = SQL::Translator::Diff::schema_diff($source_schema, 'MySQL', $source_schema, 'MySQL' ); -eq_or_diff($out, <<'## END OF DIFF', "No differences found"); +eq_or_diff($out, <<'## END OF DIFF', "No differences found", { context => 1 }); -- Convert schema 'create1.yml' to 'create1.yml':; -- No differences found; @@ -178,8 +178,8 @@ eq_or_diff($out, <<'## END OF DIFF', "No differences found"); my $field = $target_schema->get_table('employee')->get_field('employee_id'); $field->data_type('integer'); $field->size(0); - $out = SQL::Translator::Diff::schema_diff($schema, 'MySQL', $target_schema, 'MySQL', { producer_args => { quote_table_names => 0 } } ); - eq_or_diff($out, <<'## END OF DIFF', "No differences found"); + $out = SQL::Translator::Diff::schema_diff($schema, 'MySQL', $target_schema, 'MySQL', { producer_args => { quote_identifiers => 0 } } ); + eq_or_diff($out, <<'## END OF DIFF', "No differences found", { context => 1 }); -- Convert schema 'create.sql' to 'create2.yml':; BEGIN; @@ -196,9 +196,10 @@ ALTER TABLE employee DROP FOREIGN KEY FK5302D47D93FE702E, DROP COLUMN job_title, ADD CONSTRAINT FK5302D47D93FE702E_diff FOREIGN KEY (employee_id) REFERENCES person (person_id); -ALTER TABLE person DROP INDEX UC_age_name, +ALTER TABLE person DROP CONSTRAINT UC_age_name, DROP INDEX u_name, ADD COLUMN is_rock_star tinyint(4) NULL DEFAULT 1, + ADD COLUMN value double(8, 2) NULL DEFAULT 0.00, CHANGE COLUMN person_id person_id integer(11) NOT NULL auto_increment, CHANGE COLUMN name name varchar(20) NOT NULL, CHANGE COLUMN age age integer(11) NULL DEFAULT 18, @@ -250,7 +251,7 @@ COMMIT; my $out = SQL::Translator::Diff::schema_diff($s1, 'MySQL', $s2, 'MySQL' ); - eq_or_diff($out, <<'## END OF DIFF', "Batch alter of constraints work for InnoDB"); + eq_or_diff($out, <<'## END OF DIFF', "Batch alter of constraints work for InnoDB", { context => 1 }); -- Convert schema 'Schema 1' to 'Schema 2':; BEGIN; @@ -278,6 +279,7 @@ COMMIT; $s2->name('Schema 4'); my $t1 = $s1->add_table(dclone($target_schema->get_table('employee'))); + $s1->add_table(dclone($source_schema->get_table('deleted'))); my $t2 = dclone($target_schema->get_table('employee')); $t2->name('fnord'); $t2->extra(renamed_from => 'employee'); @@ -300,7 +302,7 @@ COMMIT; ); my $out = SQL::Translator::Diff::schema_diff($s1, 'MySQL', $s2, 'MySQL' ); - eq_or_diff($out, <<'## END OF DIFF', "Alter/drop constraints works with rename table"); + eq_or_diff($out, <<'## END OF DIFF', "Alter/drop constraints works with rename table", { context => 1 }); -- Convert schema 'Schema 3' to 'Schema 4':; BEGIN; @@ -309,6 +311,10 @@ ALTER TABLE employee RENAME TO fnord, DROP FOREIGN KEY bar_fk, ADD CONSTRAINT foo_fk FOREIGN KEY (employee_id) REFERENCES foo (id); +ALTER TABLE deleted DROP FOREIGN KEY fk_fake; + +DROP TABLE deleted; + COMMIT; @@ -316,16 +322,20 @@ COMMIT; # Test quoting works too. $out = SQL::Translator::Diff::schema_diff($s1, 'MySQL', $s2, 'MySQL', - { producer_args => { quote_table_names => '`' } } + { producer_args => { quote_identifiers => 1 } } ); - eq_or_diff($out, <<'## END OF DIFF', "Quoting can be turned on"); + eq_or_diff($out, <<'## END OF DIFF', "Quoting can be turned on", { context => 1 }); -- Convert schema 'Schema 3' to 'Schema 4':; BEGIN; ALTER TABLE `employee` RENAME TO `fnord`, - DROP FOREIGN KEY bar_fk, - ADD CONSTRAINT foo_fk FOREIGN KEY (employee_id) REFERENCES `foo` (id); + DROP FOREIGN KEY `bar_fk`, + ADD CONSTRAINT `foo_fk` FOREIGN KEY (`employee_id`) REFERENCES `foo` (`id`); + +ALTER TABLE `deleted` DROP FOREIGN KEY `fk_fake`; + +DROP TABLE `deleted`; COMMIT;