use strict;
use Test::More tests => 4;
use Data::FormValidator;
use Data::FormValidator::Constraints qw(FV_eq_with);

# Empty data/empty results; make sure fcn call works fine
access_filtered_data_no_data: {
    my $results  = Data::FormValidator->check( {}, {} );
    my $filtered = $results->get_filtered_data();
    is_deeply( $filtered, {}, 'get_filtered_data works for empty hashref' );
}

# Test to make sure that we can access filtered data and that it looks right.
access_filtered_data: {
    my $data = {
        'password'  => ' foo ',
        'confirm'   => ' foo ',
        };
    my $expect_filtered_data = {
        'password'  => 'foo',
        'confirm'   => 'foo',
        };
    my $profile = {
        'required'  => [qw( password confirm )],
        'filters'   => 'trim',
        };
    my $results  = Data::FormValidator->check( $data, $profile );
    my $filtered = $results->get_filtered_data();
    is_deeply( $filtered, $expect_filtered_data, 'get_filtered_data returns correct filtered data' );
}

# RT#22589; FV_eq_with uses 'get_filtered_data()'
rt22589: {
    my $data = {
        'password'  => ' foo ',
        'confirm'   => ' foo ',
        };
    my $profile = {
        'required'  => [qw( password confirm )],
        'filters'   => 'trim',
        'constraint_methods'    => {
            'confirm'   => FV_eq_with('password'),
            },
        };
    my $results = Data::FormValidator->check( $data, $profile );
    ok( $results->valid('password'), 'password valid' );
    ok( $results->valid('confirm'),  'confirm valid' );
}
