The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use Test::More;
use Plack::Test;
use Plack::Builder;
use Plack::Middleware::Debug::DBIC::QueryLog;
use Plack::Middleware::DBIC::QueryLog;
use HTTP::Request::Common qw(GET);
use Scalar::Util qw(refaddr);
use Data::Dump ();

ok my $app = sub {
  my $env = shift;
  my $querylog = Plack::Middleware::DBIC::QueryLog->get_querylog_from_env($env);
  my %tests = (
    key_exists => ($querylog ? 1:0),
    refaddr => refaddr($querylog),
    isa => ref($querylog),
  );

  [200, ['Content-Type' =>'text/application'], [Data::Dump::dump %tests]];
}, 'Got a sample plack application';

$app = builder {
  enable 'Debug', panels =>['DBIC::QueryLog'];
  $app;
};

test_psgi $app, sub {
  my $cb = shift;
  my $last_refaddr;
  for (0..1) {
    my %data = eval $cb->(GET '/')->content;

    ok $data{key_exists},
      'got PSGI_KEY';

    is $data{isa}, 'DBIx::Class::QueryLog',
      'Correct default querylog instance';

    if($last_refaddr) {
      isnt $last_refaddr, $data{refaddr},
        'Verify we get a new querylog each time';
    } else {
      $last_refaddr = $data{refaddr};
    }
  }
};

done_testing;