The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::MasterData::Declare - It's testing tool for CSV (and other structures) by DSL.

SYNOPSIS

    use Test::MasterData::Declare;

    master_data {
        load_csv item => "master-data/item.csv";

        subtest "item.type must be like a number and between 1 to 3" => sub { 
            table item => "type",
                like_number => 1 => 3;
        };

        subtest "item.effect is json structure. effect.energy must be between 1 to 100" => sub { 
            table item => "effect",
                if_column type => 1,
                json energy =>
                    like_number 1 => 100;
        }
    };

DESCRIPTION

Test::MasterData::Declare is a testing tool for row like structures.

THE SOFTWARE IS IT'S IN ALPHA QUALITY. IT MAY CHANGE THE API WITHOUT NOTICE.

FUNCTIONS

master_data { ... }

There functions are working only in this scope.

load_csv $table_name => $csv_path, ...;

Load csv from $csv_path. Loaded rows were referenced from table.

table $table_name => $column_name, $filters_or_expects...

Check column value. $filters_or_expects is a filter functions (ex. if_column), expections (ex. $like_number), scalar value, regexp reference, Test2::Compare::*, etc...

if_column $column_name => $column_condition...

Filter checking rows. $column_condition is a scalar or Test2::Compare::*.

like_number $begin => $end

like_number $expects

Check value that like a number and between $begin to $end or equals $expects.

json $key, $inner_key_or_index

Inflate column to structure data by json.

relation $from_table => $to_table, $from_column => $to_column

Declare relation the $drom_table to $to_table.

LICENSE

Copyright (C) mackee.

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

AUTHOR

mackee a.k.a macopy <macopy123@gmail.com>