The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package CHI::Driver::Redis::t::CHIDriverTests;
use strict;
use warnings;
use CHI::Test;

use base qw(CHI::t::Driver);

use Test::Mock::Redis;

sub testing_driver_class { 'CHI::Driver::Redis' }

sub supports_expires_on_backend { 1 }

sub new_cache_options {
    my $self = shift;

    return (
        $self->SUPER::new_cache_options(),
        driver_class => 'CHI::Driver::Redis',
        redis_class => (defined $ENV{CHI_REDIS_SERVER} ? 'Redis' : 'Test::Mock::Redis'),
        server => $ENV{CHI_REDIS_SERVER} || undef,
        ($ENV{CHI_REDIS_PASSWORD} ? ( password => $ENV{CHI_REDIS_PASSWORD} ) : ()),
        prefix => 'test' . $$ . ':',
    );
}

sub clear_redis : Test(setup) {
    my ($self) = @_;

    my $cache = $self->new_cache;
    $cache->redis->flushall;
}

sub test_redis_object : Tests(1) {
    my $self  = shift;
    my $cache = $self->new_cache(redis => Test::Mock::Redis->new());
    $cache->clear();
}

sub test_redis_options : Tests(1) {
    my $self  = shift;
    my $cache = $self->new_cache(redis_options => { reconnect => 2 });
    $cache->clear();
}

sub test_extra_options : Tests(1) {
    my $self  = shift;
    my $cache = $self->new_cache(reconnect => 2);
    $cache->clear();
}

1;