audit-labs/audit-tools

A collection of scripts, queries, and other goodies you can use in an audit.

clone: git clone https://gitbay.org/audit-labs/audit-tools.git

v1.0.0: sampling/tests/test_reconciliation.py · raw

 1from types import SimpleNamespace
 2
 3import pandas as pd
 4
 5from sampling.sampling_tool.cli import run
 6
 7
 8def test_reconciliation_math_ties_out(tmp_path):
 9    source = tmp_path / "population.csv"
10    pd.DataFrame(
11        {"ID": ["A", "B", "C", "D"], "Status": ["Closed", "Open", "Closed", "Open"]}
12    ).to_csv(source, index=False)
13    options = SimpleNamespace(
14        input=str(source),
15        sheet=None,
16        id_column="ID",
17        method="random",
18        sample_size=1,
19        stratify_column=None,
20        strata_counts=None,
21        strata_proportions=None,
22        seed=7,
23        out=str(tmp_path / "out"),
24        exclude_blank_id=False,
25        dedupe_id="fail",
26        filters={"Status": "Closed"},
27        allow_shortfall=False,
28    )
29
30    run_dir = run(options)
31    recon = pd.read_csv(run_dir / "population_reconciliation.csv")
32    metrics = dict(zip(recon["Metric"], recon["Value"]))
33
34    assert int(metrics["Source rows"]) == 4
35    assert int(metrics["Excluded rows"]) == 2
36    assert int(metrics["Validated population rows"]) == 2
37    assert int(metrics["Final sample size"]) == 1
38    assert int(metrics["Unsampled population rows"]) == 1
39    assert int(metrics["Source rows"]) == (
40        int(metrics["Validated population rows"]) + int(metrics["Excluded rows"])
41    )
42    assert int(metrics["Validated population rows"]) == (
43        int(metrics["Final sample size"]) + int(metrics["Unsampled population rows"])
44    )