Improve trigger 'scope' attribute support (RT#119997)
[dbsrgits/SQL-Translator.git] / t / 24yaml.t
index 6d9e521..89d4cbb 100644 (file)
@@ -1,18 +1,25 @@
-#!/usr/local/bin/perl
-# vim: set ft=perl:
-
+use warnings;
 use strict;
-use Test::More tests => 2;
+use Test::More;
 use Test::Differences;
+use Test::SQL::Translator qw(maybe_plan);
 use SQL::Translator;
 use FindBin '$Bin';
 
-my $yaml = q/--- #YAML:1.0
+BEGIN {
+    maybe_plan(2,
+        'SQL::Translator::Parser::SQLite',
+        'SQL::Translator::Producer::YAML');
+}
+
+my $sqlt_version = $SQL::Translator::VERSION;
+use YAML qw(Dump Load);
+my $yaml = Dump(Load(<<YAML));
+---
 schema:
   procedures: {}
   tables:
     person:
-      comments: ''
       constraints:
         - deferrable: 1
           expression: ''
@@ -23,7 +30,7 @@ schema:
           on_delete: ''
           on_update: ''
           options: []
-          reference_fields: ~
+          reference_fields: []
           reference_table: ''
           type: PRIMARY KEY
         - deferrable: 1
@@ -35,14 +42,13 @@ schema:
           on_delete: ''
           on_update: ''
           options: []
-          reference_fields: ~
+          reference_fields: []
           reference_table: ''
           type: UNIQUE
       fields:
         age:
           data_type: integer
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -53,7 +59,6 @@ schema:
         description:
           data_type: text
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -64,7 +69,6 @@ schema:
         iq:
           data_type: tinyint
           default_value: 0
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -75,7 +79,6 @@ schema:
         name:
           data_type: varchar
           default_value: ~
-          extra: {}
           is_nullable: 0
           is_primary_key: 0
           is_unique: 1
@@ -84,9 +87,12 @@ schema:
           size:
             - 20
         person_id:
+          comments:
+            - field comment 1
+            - field comment 2
           data_type: INTEGER
           default_value: ~
-          extra: {}
+          is_auto_increment: 1
           is_nullable: 0
           is_primary_key: 1
           is_unique: 0
@@ -97,7 +103,6 @@ schema:
         weight:
           data_type: double
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -111,17 +116,16 @@ schema:
       options: []
       order: 1
     pet:
-      comments: ''
       constraints:
         - deferrable: 1
           expression: ''
-          fields: ~
+          fields: []
           match_type: ''
           name: ''
           on_delete: ''
           on_update: ''
           options: []
-          reference_fields: ~
+          reference_fields: []
           reference_table: ''
           type: CHECK
         - deferrable: 1
@@ -134,52 +138,61 @@ schema:
           on_delete: ''
           on_update: ''
           options: []
-          reference_fields: ~
+          reference_fields: []
           reference_table: ''
           type: PRIMARY KEY
+        - deferrable: 1
+          expression: ''
+          fields:
+            - person_id
+          match_type: ''
+          name: ''
+          on_delete: ''
+          on_update: ''
+          options: []
+          reference_fields:
+            - person_id
+          reference_table: person
+          type: FOREIGN KEY
       fields:
         age:
           data_type: int
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
           name: age
-          order: 10
+          order: 4
           size:
             - 0
         name:
           data_type: varchar
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
           name: name
-          order: 9
+          order: 3
           size:
             - 30
         person_id:
           data_type: int
           default_value: ~
-          extra: {}
           is_nullable: 0
           is_primary_key: 1
           is_unique: 0
           name: person_id
-          order: 8
+          order: 2
           size:
             - 0
         pet_id:
           data_type: int
           default_value: ~
-          extra: {}
           is_nullable: 0
           is_primary_key: 1
           is_unique: 0
           name: pet_id
-          order: 7
+          order: 1
           size:
             - 0
       indices: []
@@ -187,33 +200,50 @@ schema:
       options: []
       order: 2
   triggers:
-    after:
+    pet_trig:
       action:
         for_each: ~
         steps:
-          - update name=name
+          - update pet set name=name
         when: ~
-      database_event: insert
+      database_events:
+        - insert
       fields: ~
-      name: after
-      on_table: ~
+      name: pet_trig
+      on_table: pet
       order: 1
-      perform_action_when: ~
+      perform_action_when: after
+      scope: row
   views:
     person_pet:
-      fields: ~
+      fields: []
       name: person_pet
       order: 1
       sql: |
         select pr.person_id, pr.name as person_name, pt.name as pet_name
           from   person pr, pet pt
           where  person.person_id=pet.pet_id
-/;
+translator:
+  add_drop_table: 0
+  filename: ~
+  no_comments: 0
+  parser_args: {}
+  parser_type: SQL::Translator::Parser::SQLite
+  producer_args: {}
+  producer_type: SQL::Translator::Producer::YAML
+  show_warnings: 0
+  trace: 0
+  version: $sqlt_version
+YAML
 
-my $tr = SQL::Translator->new(
+my $file = "$Bin/data/sqlite/create.sql";
+open FH, "<$file" or die "Can't read '$file': $!\n";
+local $/;
+my $data = <FH>;
+my $tr   = SQL::Translator->new(
     parser   => 'SQLite',
     producer => 'YAML',
-    filename => "$Bin/data/sqlite/create.sql",
+    data     => $data,
 );
 
 my $out;