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
main: 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 )