-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_actions_mapper_validator.py
More file actions
64 lines (54 loc) · 2.43 KB
/
test_actions_mapper_validator.py
File metadata and controls
64 lines (54 loc) · 2.43 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
56
57
58
59
60
61
62
63
64
import pytest
from pydantic import ValidationError
from eligibility_signposting_api.model.campaign_config import AvailableAction
from rules_validation_api.validators.actions_mapper_validator import ActionsMapperValidation
@pytest.fixture
def valid_available_action():
return {
"ExternalRoutingCode": "BookNBS",
"ActionDescription": "",
"ActionType": "ButtonWithAuthLink",
"UrlLink": "http://www.nhs.uk/book-rsv",
"UrlLabel": "Continue to booking",
}
class TestBUCValidations:
def make_action(self, data: dict) -> AvailableAction:
return AvailableAction(**data)
def test_valid_actions_mapper(self, valid_available_action):
data = {
"action1": self.make_action(valid_available_action),
"action2": self.make_action({**valid_available_action, "ExternalRoutingCode": "AltCode"}),
}
mapper = ActionsMapperValidation(root=data)
expected_action_count = 2
assert isinstance(mapper, ActionsMapperValidation)
assert len(mapper.root) == expected_action_count
@pytest.mark.parametrize(
"invalid_action",
[
{"action1": ""},
{"action1": "invalid_action"},
{"action3": None},
{"action1": "", "action3": None},
{"action1": "invalid_action", "action2": ""},
],
)
def test_if_exception_raised_when_adding_invalid_actions_to_action_mapper(self, invalid_action):
data = {"": invalid_action}
with pytest.raises(ValidationError):
ActionsMapperValidation(root=data)
def test_invalid_actions_mapper_empty_key(self, valid_available_action):
data = {"": self.make_action(valid_available_action), "action2": self.make_action(valid_available_action)}
with pytest.raises(ValidationError) as exc_info:
ActionsMapperValidation(root=data)
assert "Invalid keys found in ActionsMapper" in str(exc_info.value)
assert "['']" in str(exc_info.value)
@pytest.mark.parametrize("bad_key", [""])
def test_invalid_keys_parametrized(self, bad_key, valid_available_action):
data = {
bad_key: self.make_action(valid_available_action),
"valid_key": self.make_action(valid_available_action),
}
with pytest.raises(ValidationError) as exc_info:
ActionsMapperValidation(root=data)
assert "Invalid keys found in ActionsMapper" in str(exc_info.value)