X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Finflate%2Fdatetime.t;h=7062563bb3d224037476189ecfc3e6f5da26ca9f;hb=d587f67adadbedf890fdd68147e28f5d002874a5;hp=2f4f7406032ee4cc29fab0d07e69c338efedf1e3;hpb=68de943862f06cabd397d2e74d12cd9cdc999779;p=dbsrgits%2FDBIx-Class.git diff --git a/t/inflate/datetime.t b/t/inflate/datetime.t index 2f4f740..7062563 100644 --- a/t/inflate/datetime.t +++ b/t/inflate/datetime.t @@ -2,13 +2,18 @@ use strict; use warnings; use Test::More; +use Test::Warn; +use Try::Tiny; use lib qw(t/lib); use DBICTest; +# so user's env doesn't screw us +delete $ENV{DBIC_DT_SEARCH_OK}; + my $schema = DBICTest->init_schema(); -plan skip_all => 'DT inflation tests need ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_dt') - unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt'); +plan skip_all => 'DT inflation tests need ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_dt_sqlite') + unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt_sqlite'); # inflation test my $event = $schema->resultset("Event")->find(1); @@ -19,15 +24,36 @@ isa_ok($event->starts_at, 'DateTime', 'DateTime returned'); my $starts = $event->starts_at; is("$starts", '2006-04-25T22:24:33', 'Correct date/time'); -TODO: { - local $TODO = "We can't do this yet before 0.09" if DBIx::Class->VERSION < 0.09; +my $dt_warn_re = qr/DateTime objects.+not supported properly/; + +my $row; + +{ + local $ENV{DBIC_DT_SEARCH_OK} = 1; + local $SIG{__WARN__} = sub { + fail('Disabled warning still issued') if $_[0] =~ $dt_warn_re; + warn @_; + }; + $row = $schema->resultset('Event')->search({ starts_at => $starts })->single +} + +warnings_exist { + $row = $schema->resultset('Event')->search({ starts_at => $starts })->single +} [$dt_warn_re], + 'using a DateTime object in ->search generates a warning'; + +{ + local $TODO = "This stuff won't work without a -dt operator of some sort" + unless eval { require DBIx::Class::SQLMaker::DateOps }; - ok(my $row = - $schema->resultset('Event')->search({ starts_at => $starts })->single); is(eval { $row->id }, 1, 'DT in search'); + local $ENV{DBIC_DT_SEARCH_OK} = 1; + ok($row = - $schema->resultset('Event')->search({ starts_at => { '>=' => $starts } })->single); + $schema->resultset('Event')->search({ starts_at => { '>=' => $starts } }) + ->single); + is(eval { $row->id }, 1, 'DT in search with condition'); }