package Dist::Zilla::Plugin::EnsureSQLSchemaVersionedTest;

our $DATE = '2017-07-07'; # DATE
our $VERSION = '0.03'; # VERSION

use 5.010001;
use strict;
use warnings;

use Moose;
with 'Dist::Zilla::Role::AfterBuild';

sub after_build {
    my ($self) = @_;

    my $prereqs_hash = $self->zilla->prereqs->as_string_hash;
    my $rr_prereqs = $prereqs_hash->{runtime}{requires} // {};

    # XXX should've checked found_files instead, to handle generated files
    if (defined($rr_prereqs->{"SQL::Schema::Versioned"}) &&
            !(-f "xt/author/sql_schema_versioned.t") &&
            !(-f "xt/release/sql_schema_versioned.t")
        ) {
        $self->log_fatal(["SQL::Schema::Versioned is in prereq, but xt/{author,release}/sql_schema_versioned.t has not been added, please make sure that your schema is tested by adding that file"]);
    }
}

__PACKAGE__->meta->make_immutable;
1;
# ABSTRACT: Make sure that xt/author/sql_schema_versioned.t is present

__END__

=pod

=encoding UTF-8

=head1 NAME

Dist::Zilla::Plugin::EnsureSQLSchemaVersionedTest - Make sure that xt/author/sql_schema_versioned.t is present

=head1 VERSION

This document describes version 0.03 of Dist::Zilla::Plugin::EnsureSQLSchemaVersionedTest (from Perl distribution Dist-Zilla-Plugin-EnsureSQLSchemaVersionedTest), released on 2017-07-07.

=head1 SYNOPSIS

In dist.ini:

 [EnsureSQLSchemaVersionedTest]

=head1 DESCRIPTION

This plugin checks if L<SQL::Schema::Versioned> is in the RuntimeRequires
prereq. If it is, then the plugin requires that
C<xt/author/sql_schema_versioned.t> exists, to make sure that the dist author
has added a test for schema creation/upgrades.

Typical C<xt/author/sql_schema_versioned.t> is as follow (identifiers in
all-caps refer to project-specific names):

 #!perl

 use PROJ::MODULE;
 use Test::More 0.98;
 use Test::SQL::Schema::Versioned;
 use Test::WithDB::SQLite;

 sql_schema_spec_ok(
     $PROJ::MODULE::DB_SCHEMA_SPEC,
     Test::WithDB::SQLite->new,
 );
 done_testing;

=for Pod::Coverage .+

=head1 HOMEPAGE

Please visit the project's homepage at L<https://metacpan.org/release/Dist-Zilla-Plugin-EnsureSQLSchemaVersionedTest>.

=head1 SOURCE

Source repository is at L<https://github.com/perlancar/perl-Dist-Zilla-Plugin-EnsureSQLSchemaVersionedTest>.

=head1 BUGS

Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Zilla-Plugin-EnsureSQLSchemaVersionedTest>

When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.

=head1 SEE ALSO

L<SQL::Schema::Versioned>

=head1 AUTHOR

perlancar <perlancar@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2017, 2015 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut