Added patch from wreis, view support for pg producer
[dbsrgits/SQL-Translator.git] / t / 46xml-to-pg.t
1 #!/usr/bin/perl
2 use strict;
3
4 use FindBin qw/$Bin/;
5 use Test::More;
6 use Test::SQL::Translator;
7 use Test::Exception;
8 use Data::Dumper;
9 use SQL::Translator;
10 use SQL::Translator::Schema::Constants;
11
12
13 BEGIN {
14     maybe_plan(1, 'SQL::Translator::Parser::XML::SQLFairy',
15               'SQL::Translator::Producer::PostgreSQL');
16 }
17
18 my $xmlfile = "$Bin/data/xml/schema.xml";
19
20 my $sqlt;
21 $sqlt = SQL::Translator->new(
22     no_comments => 1,
23     show_warnings  => 1,
24     add_drop_table => 1,
25 );
26
27 die "Can't find test schema $xmlfile" unless -e $xmlfile;
28
29 my $sql = $sqlt->translate(
30     from     => 'XML-SQLFairy',
31     to       => 'PostgreSQL',
32     filename => $xmlfile,
33 ) or die $sqlt->error;
34
35 is($sql, << "SQL");
36 DROP TABLE "Basic" CASCADE;
37 CREATE TABLE "Basic" (
38   "id" serial NOT NULL,
39   "title" character varying(100) DEFAULT 'hello' NOT NULL,
40   "description" text DEFAULT '',
41   "email" character varying(255),
42   "explicitnulldef" character varying,
43   "explicitemptystring" character varying DEFAULT '',
44   -- Hello emptytagdef
45   "emptytagdef" character varying DEFAULT '',
46   "another_id" integer DEFAULT '2',
47   "timest" timestamp(0),
48   PRIMARY KEY ("id"),
49   Constraint "emailuniqueindex" UNIQUE ("email")
50 );
51 CREATE INDEX "titleindex" on "Basic" ("title");
52
53
54 DROP TABLE "Another" CASCADE;
55 CREATE TABLE "Another" (
56   "id" serial NOT NULL,
57   PRIMARY KEY ("id")
58 );
59
60
61
62 CREATE OR REPLACE VIEW "email_list" ( "email" ) AS (
63     SELECT email FROM Basic WHERE email IS NOT NULL
64   );
65
66 ALTER TABLE "Basic" ADD FOREIGN KEY ("another_id")
67   REFERENCES "Another" ("id") DEFERRABLE;
68 SQL