X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F38-mysql-producer.t;h=16151f5681dd4246dcee5f0a46c2ba0583d50e65;hb=f59b2c0e0d3cad2e98ed0eb440720f85a8f33a6f;hp=3c95bde07116645630092273a4339b97b8eeebd3;hpb=5d666b31769e40325f3513299a58cdac631ced41;p=dbsrgits%2FSQL-Translator.git diff --git a/t/38-mysql-producer.t b/t/38-mysql-producer.t index 3c95bde..16151f5 100644 --- a/t/38-mysql-producer.t +++ b/t/38-mysql-producer.t @@ -19,7 +19,7 @@ use FindBin qw/$Bin/; #============================================================================= BEGIN { - maybe_plan(32, + maybe_plan(35, 'YAML', 'SQL::Translator::Producer::MySQL', 'Test::Differences', @@ -74,7 +74,7 @@ schema: name: idx_unique_name thing2: - name: thing2 + name: some.thing2 extra: order: 2 fields: @@ -130,9 +130,9 @@ schema: EOSCHEMA my @stmts = ( -"SET foreign_key_checks=0;\n\n", +"SET foreign_key_checks=0", -"DROP TABLE IF EXISTS `thing`;\n", +"DROP TABLE IF EXISTS `thing`", "CREATE TABLE `thing` ( `id` unsigned int auto_increment, `name` varchar(32), @@ -140,10 +140,10 @@ my @stmts = ( `description` text character set utf8 collate utf8_general_ci, PRIMARY KEY (`id`), UNIQUE `idx_unique_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;\n\n", +) ENGINE=InnoDB DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci", -"DROP TABLE IF EXISTS `thing2`;\n", -"CREATE TABLE `thing2` ( +"DROP TABLE IF EXISTS `some`.`thing2`", +"CREATE TABLE `some`.`thing2` ( `id` integer, `foo` integer, `foo2` integer, @@ -155,15 +155,15 @@ my @stmts = ( PRIMARY KEY (`id`, `foo`), CONSTRAINT `fk_thing` FOREIGN KEY (`foo`) REFERENCES `thing` (`id`), CONSTRAINT `fk_thing_1` FOREIGN KEY (`foo2`) REFERENCES `thing` (`id`) -) ENGINE=InnoDB;\n\n", +) ENGINE=InnoDB", -"SET foreign_key_checks=1;\n\n" +"SET foreign_key_checks=1", ); my @stmts_no_drop = grep {$_ !~ /^DROP TABLE/} @stmts; -my $mysql_out = join("", @stmts_no_drop); +my $mysql_out = join(";\n\n", @stmts_no_drop) . ";\n\n"; my $sqlt; @@ -204,7 +204,7 @@ my $mysql_out = join("", @stmts_no_drop); $out = $sqlt->translate(\$yaml_in) or die "Translat eerror:".$sqlt->error; - eq_or_diff $out, join("", @stmts), "Output looks right with DROP TABLEs"; + eq_or_diff $out, join(";\n\n", @stmts) . ";\n\n", "Output looks right with DROP TABLEs"; is_deeply \@out, \@stmts, "Array output looks right with DROP TABLEs"; } @@ -271,7 +271,7 @@ my $number_sizes = { for my $size (keys %$number_sizes) { my $expected = $number_sizes->{$size}; my $number_field = SQL::Translator::Schema::Field->new( - name => "numberfield_$size", + name => "numberfield_$expected", table => $table, data_type => 'number', size => $size, @@ -282,7 +282,7 @@ for my $size (keys %$number_sizes) { is( SQL::Translator::Producer::MySQL::create_field($number_field), - "numberfield_$size $expected($size)", + "numberfield_$expected $expected($size)", "Use $expected for NUMBER types of size $size" ); } @@ -385,7 +385,7 @@ is ( SQL SECURITY DEFINER VIEW view_foo ( id, name ) AS ( SELECT id, name FROM thing - );\n\n"; + )"; is($view1_sql1, $view_sql_replace, 'correct "CREATE OR REPLACE VIEW" SQL'); @@ -397,6 +397,29 @@ is ( my $view_sql_noreplace = "CREATE VIEW view_foo ( id, name ) AS ( SELECT id, name FROM thing - );\n\n"; + )"; is($view1_sql2, $view_sql_noreplace, 'correct "CREATE VIEW" SQL'); + + { + my %extra = $view1->extra; + is_deeply \%extra, + { + 'mysql_algorithm' => 'MERGE', + 'mysql_definer' => 'CURRENT_USER', + 'mysql_security' => 'DEFINER' + }, + 'Extra attributes'; + } + + $view1->remove_extra(qw/mysql_definer mysql_security/); + { + my %extra = $view1->extra; + is_deeply \%extra, { 'mysql_algorithm' => 'MERGE', }, 'Extra attributes after first reset_extra call'; + } + + $view1->remove_extra(); + { + my %extra = $view1->extra; + is_deeply \%extra, {}, 'Extra attributes completely removed'; + } }