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>