Improve trigger 'scope' attribute support (RT#119997)
[dbsrgits/SQL-Translator.git] / t / 24yaml.t
index e578e18..89d4cbb 100644 (file)
@@ -1,6 +1,4 @@
-#!/usr/local/bin/perl
-# vim: set ft=perl:
-
+use warnings;
 use strict;
 use Test::More;
 use Test::Differences;
@@ -14,12 +12,14 @@ BEGIN {
         'SQL::Translator::Producer::YAML');
 }
 
-my $yaml = q/--- #YAML:1.0
+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: ''
@@ -49,7 +49,6 @@ schema:
         age:
           data_type: integer
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -60,7 +59,6 @@ schema:
         description:
           data_type: text
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -71,7 +69,6 @@ schema:
         iq:
           data_type: tinyint
           default_value: 0
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -82,7 +79,6 @@ schema:
         name:
           data_type: varchar
           default_value: ~
-          extra: {}
           is_nullable: 0
           is_primary_key: 0
           is_unique: 1
@@ -91,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
@@ -104,7 +103,6 @@ schema:
         weight:
           data_type: double
           default_value: ~
-          extra: {}
           is_nullable: 1
           is_primary_key: 0
           is_unique: 0
@@ -118,11 +116,10 @@ schema:
       options: []
       order: 1
     pet:
-      comments: ''
       constraints:
         - deferrable: 1
           expression: ''
-          fields: ~
+          fields: []
           match_type: ''
           name: ''
           on_delete: ''
@@ -144,49 +141,58 @@ schema:
           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: []
@@ -194,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;