DBIx-Class-Async
view release on metacpan or search on metacpan
t/152-sql-consistency.t view on Meta::CPAN
cache_ttl => 60,
},
);
ok($schema, 'Schema created successfully');
$schema->await($schema->deploy({ add_drop_table => 1 }));
subtest 'SQL consistency with default columns' => sub {
my %seen_sqls;
my $iterations = 10;
for my $i (1..$iterations) {
my $rs = $schema->resultset('User')->search({});
my $query = $rs->as_query;
my $sql = normalise_sql(extract_sql($query));
$seen_sqls{$sql}++;
}
is(scalar keys %seen_sqls, 1,
'Default column query generates consistent SQL across all iterations');
my ($sql) = keys %seen_sqls;
like($sql, qr/SELECT .+ FROM users/,
'SQL contains expected SELECT FROM structure');
my $columns = extract_columns($sql);
ok(length($columns) > 0, 'SQL contains column list');
};
subtest 'SQL consistency with explicit columns' => sub {
my %seen_sqls;
my $iterations = 10;
my @explicit_cols = qw/id name email age active settings balance/;
for my $i (1..$iterations) {
my $rs = $schema->resultset('User')->search({}, {
columns => \@explicit_cols
});
my $query = $rs->as_query;
my $sql = normalise_sql(extract_sql($query));
$seen_sqls{$sql}++;
}
is(scalar keys %seen_sqls, 1,
'Explicit column query generates consistent SQL across all iterations');
my ($sql) = keys %seen_sqls;
like($sql, qr/SELECT .+ FROM users/,
'SQL contains expected SELECT FROM structure');
my $columns = extract_columns($sql);
for my $col (@explicit_cols) {
like($columns, qr/\b$col\b/, "SQL includes column '$col'");
}
};
( run in 0.579 second using v1.01-cache-2.11-cpan-71847e10f99 )