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 )