"""Unit tests: record_template"""

INIT_VARS = """
    alt_filenames=()
    alt_template_cmds=()
    alt_targets=()
"""

REPORT_RESULTS = """
    echo "SIZE:${#alt_filenames[@]}"
    echo "FILENAMES:${alt_filenames[@]}"
    echo "CMDS:${alt_template_cmds[@]}"
    echo "TARGS:${alt_targets[@]}"
"""


def test_new_template(runner, yadm):
    """Test new template"""

    script = f"""
        YADM_TEST=1 source {yadm}
        {INIT_VARS}
        record_template "file_one"   "cmd_one"   "targ_one"
        record_template "file_two"   "cmd_two"   "targ_two"
        record_template "file_three" "cmd_three" "targ_three"
        {REPORT_RESULTS}
    """
    run = runner(command=['bash'], inp=script)
    assert run.success
    assert run.err == ''
    assert 'SIZE:3\n' in run.out
    assert 'FILENAMES:file_one file_two file_three\n' in run.out
    assert 'CMDS:cmd_one cmd_two cmd_three\n' in run.out
    assert 'TARGS:targ_one targ_two targ_three\n' in run.out


def test_existing_template(runner, yadm):
    """Overwrite existing templates"""

    script = f"""
        YADM_TEST=1 source {yadm}
        {INIT_VARS}
        alt_filenames=("testfile")
        alt_template_cmds=("existing_cmd")
        alt_targets=("existing_targ")
        record_template "testfile" "new_cmd" "new_targ"
        {REPORT_RESULTS}
    """
    run = runner(command=['bash'], inp=script)
    assert run.success
    assert run.err == ''
    assert 'SIZE:1\n' in run.out
    assert 'FILENAMES:testfile\n' in run.out
    assert 'CMDS:new_cmd\n' in run.out
    assert 'TARGS:new_targ\n' in run.out