The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package A::Role::TestConnect;

use Moo::Role;
use TestSchema;

use A::Util;

has [qw(on_connect_call engine)] => ( is => 'ro' );

has storage_type => (
   is => 'ro',
   lazy => 1,
   default => sub { shift->engine }
);

sub connected { A::Util::connected($_[0]->engine, $_[0]->on_connect_call) }

has connect_info => (
   is => 'ro',
   lazy => 1,
   default => sub {
      my $self = shift;

      A::Util::connect_info($self->engine, $self->on_connect_call)
   },
);

sub env_vars { A::Util::env(shift->engine) }

has schema => (
   is => 'ro',
   lazy => 1,
   builder => sub {
      my $self = shift;

      A::Util::connect($self->engine, $self->storage_type, $self->on_connect_call)
   },
);

1;