# 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>