better type info for Pg: sets sequence for serials, handles numerics without precision
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / lib / dbixcsl_common_tests.pm
index 155a12a..dd97705 100644 (file)
@@ -148,7 +148,7 @@ sub setup_schema {
          };
  
         ok(!$@, "Loader initialization") or diag $@;
+
         find sub { return if -d; $file_count++ }, $DUMP_DIR;
  
         $expected_count += grep /CREATE (?:TABLE|VIEW)/i,
@@ -871,17 +871,25 @@ sub test_schema {
         my $rsrc = $conn->resultset($data_type_tests->{table_moniker})->result_source;
 
         while (my ($col_name, $expected_info) = each %$columns) {
-            while (my ($info_key, $info_val) = each %$expected_info) {
-                my $text_info_val = do {
-                    my $dd = Dumper;
-                    $dd->Indent(0);
-                    $dd->Values([$info_val]);
-                    $dd->Dump;
-                };
-
-                is_deeply $rsrc->column_info($col_name)->{$info_key}, $info_val,
-                    "column of type $col_name has $info_key => $text_info_val";
-            }
+            my %info = %{ $rsrc->column_info($col_name) };
+            delete @info{qw/is_nullable timezone locale sequence/};
+
+            my $text_col_def = do {
+                my $dd = Dumper;
+                $dd->Indent(0);
+                $dd->Values([\%info]);
+                $dd->Dump;
+            };
+
+            my $text_expected_info = do {
+                my $dd = Dumper;
+                $dd->Indent(0);
+                $dd->Values([$expected_info]);
+                $dd->Dump;
+            };
+
+            is_deeply \%info, $expected_info,
+                "test column $col_name has definition: $text_col_def expecting: $text_expected_info";
         }
     }
 
@@ -1543,6 +1551,8 @@ sub setup_data_type_tests {
 
     my $test_count = 0;
 
+    my %seen_col_names;
+
     while (my ($col_def, $expected_info) = each %$types) {
         my $have_size = $col_def =~ /\(/ ? 1 : 0;
 
@@ -1551,11 +1561,13 @@ sub setup_data_type_tests {
 
         my $col_name = $type_alias . ($have_size ? '_with_size' : '');
 
+        $col_name .= $seen_col_names{$col_name} if $seen_col_names{$col_name}++;
+
         $ddl .= "    $col_name $col_def,\n";
 
         $cols->{$col_name} = $expected_info;
 
-        $test_count += scalar keys %$expected_info;
+        $test_count++;
     }
 
     $ddl =~ s/,\n\z/\n)/;
@@ -1575,3 +1587,4 @@ sub DESTROY {
 }
 
 1;
+# vim:et sts=4 sw=4 tw=0: