[e988c2]: / tests / unit / file_formats / test_base.py

Download this file

56 lines (46 with data), 1.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import pytest
from ehrql.file_formats.base import FileValidationError, validate_columns
from ehrql.query_model.column_specs import ColumnSpec
def test_validate_columns():
# Column order is not significant, neither is the presence of additional columns so
# long as all required columns are present
validate_columns(
["a", "b", "c", "d"],
{
"c": ColumnSpec(int),
"b": ColumnSpec(int),
"a": ColumnSpec(int),
},
)
def test_validate_columns_fails_on_missing_columns_by_default():
with pytest.raises(FileValidationError, match="Missing columns: b, d"):
validate_columns(
["c", "a"],
{
"a": ColumnSpec(int),
"b": ColumnSpec(int),
"c": ColumnSpec(int),
"d": ColumnSpec(int),
},
)
def test_validate_columns_allows_missing_columns():
validate_columns(
["c", "a"],
{
"a": ColumnSpec(int),
"b": ColumnSpec(int),
"c": ColumnSpec(int),
},
allow_missing_columns=True,
)
def test_validate_columns_does_not_allow_missing_nonnullable_columns():
with pytest.raises(FileValidationError, match="Missing columns: b"):
validate_columns(
["c", "a"],
{
"a": ColumnSpec(int),
"b": ColumnSpec(int, nullable=False),
"c": ColumnSpec(int),
},
allow_missing_columns=True,
)