new config option to DBICTest to let you set an alternative storage type, start on...
[dbsrgits/DBIx-Class.git] / t / 05components.t
index fd0742f..303f028 100644 (file)
@@ -7,7 +7,7 @@ use Test::More;
 use lib qw(t/lib);
 use DBICTest::ForeignComponent;
 
-plan tests => 2;
+plan tests => 6;
 
 #   Tests if foreign component was loaded by calling foreign's method
 ok( DBICTest::ForeignComponent->foreign_test_method, 'foreign component' );
@@ -15,6 +15,9 @@ ok( DBICTest::ForeignComponent->foreign_test_method, 'foreign component' );
 #   Test for inject_base to filter out duplicates
 {   package DBICTest::_InjectBaseTest;
     use base qw/ DBIx::Class /;
+    package DBICTest::_InjectBaseTest::A;
+    package DBICTest::_InjectBaseTest::B;
+    package DBICTest::_InjectBaseTest::C;
 }
 DBICTest::_InjectBaseTest->inject_base( 'DBICTest::_InjectBaseTest', qw/
     DBICTest::_InjectBaseTest::A
@@ -31,3 +34,33 @@ is_deeply( \@DBICTest::_InjectBaseTest::ISA,
     /],
     'inject_base filters duplicates'
 );
+
+# Test for a warning with incorrect order in load_components
+my @warnings = ();
+{
+  package A::Test;
+  our @ISA = 'DBIx::Class';
+  {
+    local $SIG{__WARN__} = sub { push @warnings, shift};
+    __PACKAGE__->load_components(qw(Core UTF8Columns));
+  }
+}
+like( $warnings[0], qr/Core loaded before UTF8Columns/,
+      'warning issued for incorrect order in load_components()' );
+is( scalar @warnings, 1,
+    'only one warning issued for incorrect load_components call' );
+
+# Test that no warning is issued for the correct order in load_components
+{
+  @warnings = ();
+  package B::Test;
+  our @ISA = 'DBIx::Class';
+  {
+    local $SIG{__WARN__} = sub { push @warnings, shift };
+    __PACKAGE__->load_components(qw(UTF8Columns Core));
+  }
+}
+is( scalar @warnings, 0,
+    'warning not issued for correct order in load_components()' );
+
+use_ok('DBIx::Class::AccessorGroup');