Updated props
[dbsrgits/DBIx-Class-UUIDColumns.git] / t / uuid.t
1 #!perl -wT
2 # $Id$
3 use strict;
4 use warnings;
5
6 BEGIN {
7     use lib 't/lib';
8     use DBIC::Test tests => 13;
9 };
10
11 my $schema = DBIC::Test->init_schema;
12 my $row;
13
14 $row = $schema->resultset('Test')->create({ });
15 ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Auto';
16
17 DBIC::Test::Schema::Test->uuid_class('CustomUUIDMaker');
18 Class::C3->reinitialize();
19 $row = $schema->resultset('Test')->create({ });
20 ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from CustomUUIDMaker';
21
22 is(DBIx::Class::UUIDColumns::UUIDMaker->as_string, undef);
23
24 SKIP: {
25     skip 'Data::UUID not installed', 2 unless eval 'require Data::UUID';
26
27     DBIC::Test::Schema::Test->uuid_class('::Data::UUID');
28     Class::C3->reinitialize();
29     is(DBIC::Test::Schema::Test->uuid_class, 'DBIx::Class::UUIDColumns::UUIDMaker::Data::UUID');
30     $row = $schema->resultset('Test')->create({ });
31     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Data::UUID';
32 };
33
34 SKIP: {
35     skip 'Data::GUID not installed', 1 unless eval 'require Data::GUID';
36
37     DBIC::Test::Schema::Test->uuid_class('::Data::GUID');
38     Class::C3->reinitialize();
39     $row = $schema->resultset('Test')->create({ });
40     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Data::GUID';
41 };
42
43 SKIP: {
44     skip 'APR::UUID not installed', 1 unless eval 'require APR::UUID and $^O ne \'openbsd\'';
45
46     DBIC::Test::Schema::Test->uuid_class('::APR::UUID');
47     Class::C3->reinitialize();
48     $row = $schema->resultset('Test')->create({ });
49     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from APR::UUID';
50 };
51
52 SKIP: {
53     skip 'UUID not installed', 1 unless eval 'require UUID';
54
55     DBIC::Test::Schema::Test->uuid_class('::UUID');
56     Class::C3->reinitialize();
57     $row = $schema->resultset('Test')->create({ });
58     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from UUID';
59 };
60
61 SKIP: {
62     skip 'Win32::Guidgen not installed', 1 unless eval 'require Win32::Guidgen';
63
64     DBIC::Test::Schema::Test->uuid_class('::Win32::Guidgen');
65     Class::C3->reinitialize();
66     $row = $schema->resultset('Test')->create({ });
67     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Win32::Guidgen';
68 };
69
70 SKIP: {
71     skip 'Win32API::GUID not installed', 1 unless eval 'require Win32API::GUID';
72
73     DBIC::Test::Schema::Test->uuid_class('::Win32API::GUID');
74     Class::C3->reinitialize();
75     $row = $schema->resultset('Test')->create({ });
76     ok DBIC::Test::is_uuid( $row->id ), 'got something that looks like a UUID from Win32API::GUID';
77 };
78
79 SKIP: {
80     skip 'Data::Uniqid not installed', 1 unless eval 'require Data::Uniqid';
81
82     DBIC::Test::Schema::Test->uuid_class('::Data::Uniqid');
83     Class::C3->reinitialize();
84     $row = $schema->resultset('Test')->create({ });
85     ok $row->id, 'got something from Data::Uniqid';
86 };
87
88 eval {
89     DBIC::Test::Schema::Test->uuid_class('::JunkIDMaker');
90 };
91 if ($@ && $@ =~ /could not be loaded/i) {
92     pass;
93 } else {
94     fail('uuid_class dies when class can not be loaded');
95 };
96
97 eval {
98     DBIC::Test::Schema::Test->uuid_class('BadUUIDMaker');
99 };
100 if ($@ && $@ =~ /is not a UUIDMaker subclass/i) {
101     pass;
102 } else {
103     fail('uuid_class dies when class no isa DBIx::Class::UUIDColumns::UUIDMaker');
104 };
105
106 1;