Improve trigger 'scope' attribute support (RT#119997)
[dbsrgits/SQL-Translator.git] / t / 46xml-to-pg.t
index 7bb025f..d9dd327 100644 (file)
@@ -5,6 +5,7 @@ use FindBin qw/$Bin/;
 use Test::More;
 use Test::SQL::Translator;
 use Test::Exception;
+use Test::Differences;
 use Data::Dumper;
 use SQL::Translator;
 use SQL::Translator::Schema::Constants;
@@ -20,7 +21,7 @@ my $xmlfile = "$Bin/data/xml/schema.xml";
 my $sqlt;
 $sqlt = SQL::Translator->new(
     no_comments => 1,
-    show_warnings  => 1,
+    show_warnings  => 0,
     add_drop_table => 1,
 );
 
@@ -32,20 +33,46 @@ my $sql = $sqlt->translate(
     filename => $xmlfile,
 ) or die $sqlt->error;
 
-is($sql, << "SQL");
-DROP TABLE "Basic";
+eq_or_diff($sql, << "SQL");
+DROP TABLE "Basic" CASCADE;
 CREATE TABLE "Basic" (
   "id" serial NOT NULL,
   "title" character varying(100) DEFAULT 'hello' NOT NULL,
   "description" text DEFAULT '',
-  "email" character varying(255),
+  "email" character varying(500),
   "explicitnulldef" character varying,
   "explicitemptystring" character varying DEFAULT '',
   -- Hello emptytagdef
   "emptytagdef" character varying DEFAULT '',
-  "timest" timestamp(0),
+  "another_id" integer DEFAULT 2,
+  "timest" timestamp,
   PRIMARY KEY ("id"),
-  Constraint "emailuniqueindex" UNIQUE ("email")
+  CONSTRAINT "emailuniqueindex" UNIQUE ("email"),
+  CONSTRAINT "very_long_index_name_on_title_field_which_should_be_truncated_for_various_rdbms" UNIQUE ("title")
 );
 CREATE INDEX "titleindex" on "Basic" ("title");
+
+DROP TABLE "Another" CASCADE;
+CREATE TABLE "Another" (
+  "id" serial NOT NULL,
+  "num" numeric(10,2),
+  PRIMARY KEY ("id")
+);
+
+DROP VIEW "email_list";
+CREATE VIEW "email_list" ( "email" ) AS
+    SELECT email FROM Basic WHERE (email IS NOT NULL)
+;
+
+DROP TRIGGER IF EXISTS "foo_trigger";
+
+CREATE TRIGGER "foo_trigger" after insert ON "Basic" FOR EACH row update modified=timestamp();;
+
+DROP TRIGGER IF EXISTS "bar_trigger";
+
+CREATE TRIGGER "bar_trigger" before insert OR update ON "Basic" FOR EACH row update modified2=timestamp();;
+
+ALTER TABLE "Basic" ADD FOREIGN KEY ("another_id")
+  REFERENCES "Another" ("id") DEFERRABLE;
+
 SQL