RT#22364 (ASH) hopefully fixed with updated prereq
[dbsrgits/DBIx-Class-UUIDColumns.git] / t / uuid.t
diff --git a/t/uuid.t b/t/uuid.t
new file mode 100644 (file)
index 0000000..e28ad8c
--- /dev/null
+++ b/t/uuid.t
@@ -0,0 +1,106 @@
+#!perl -wT
+# $Id: basic.t 3235 2007-05-05 16:23:08Z claco $
+use strict;
+use warnings;
+
+BEGIN {
+    use lib 't/lib';
+    use DBIC::Test tests => 13;
+};
+
+my $schema = DBIC::Test->init_schema;
+my $row;
+
+$row = $schema->resultset('Test')->create({ });
+ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Auto';
+
+DBIC::Test::Schema::Test->uuid_class('CustomUUIDMaker');
+Class::C3->reinitialize();
+$row = $schema->resultset('Test')->create({ });
+ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from CustomUUIDMaker';
+
+is(DBIx::Class::UUIDColumns::UUIDMaker->as_string, undef);
+
+SKIP: {
+    skip 'Data::UUID not installed', 2 unless eval 'require Data::UUID';
+
+    DBIC::Test::Schema::Test->uuid_class('::Data::UUID');
+    Class::C3->reinitialize();
+    is(DBIC::Test::Schema::Test->uuid_class, 'DBIx::Class::UUIDColumns::UUIDMaker::Data::UUID');
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Data::UUID';
+};
+
+SKIP: {
+    skip 'Data::GUID not installed', 1 unless eval 'require Data::GUID';
+
+    DBIC::Test::Schema::Test->uuid_class('::Data::GUID');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Data::GUID';
+};
+
+SKIP: {
+    skip 'APR::UUID not installed', 1 unless eval 'require APR::UUID and $^O ne \'openbsd\'';
+
+    DBIC::Test::Schema::Test->uuid_class('::APR::UUID');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from APR::UUID';
+};
+
+SKIP: {
+    skip 'UUID not installed', 1 unless eval 'require UUID';
+
+    DBIC::Test::Schema::Test->uuid_class('::UUID');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from UUID';
+};
+
+SKIP: {
+    skip 'Win32::Guidgen not installed', 1 unless eval 'require Win32::Guidgen';
+
+    DBIC::Test::Schema::Test->uuid_class('::Win32::Guidgen');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Win32::Guidgen';
+};
+
+SKIP: {
+    skip 'Win32API::GUID not installed', 1 unless eval 'require Win32API::GUID';
+
+    DBIC::Test::Schema::Test->uuid_class('::Win32API::GUID');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Win32API::GUID';
+};
+
+SKIP: {
+    skip 'Data::Uniqid not installed', 1 unless eval 'require Data::Uniqid';
+
+    DBIC::Test::Schema::Test->uuid_class('::Data::Uniqid');
+    Class::C3->reinitialize();
+    $row = $schema->resultset('Test')->create({ });
+    ok $row->id, 'got something from Data::Uniqid';
+};
+
+eval {
+    DBIC::Test::Schema::Test->uuid_class('::JunkIDMaker');
+};
+if ($@ && $@ =~ /could not be loaded/i) {
+    pass;
+} else {
+    fail('uuid_class dies when class can not be loaded');
+};
+
+eval {
+    DBIC::Test::Schema::Test->uuid_class('BadUUIDMaker');
+};
+if ($@ && $@ =~ /is not a UUIDMaker subclass/i) {
+    pass;
+} else {
+    fail('uuid_class dies when class no isa DBIx::Class::UUIDColumns::UUIDMaker');
+};
+
+1;