Files
homeassistant_config/config/custom_components/vigieau/tests/test_regexp.py
2024-05-31 13:07:35 +02:00

45 lines
1.6 KiB
Python

from os import path
import sys
current_dir = path.dirname(__file__)
parent_dir = path.dirname(current_dir)
sys.path.append(".")
sys.path.append(parent_dir)
from custom_components.vigieau.const import SENSOR_DEFINITIONS
import unittest
from pathlib import Path
import json
import os
import re
class TestRegexp(unittest.TestCase):
def test_matcher_in_component(self):
file = os.path.join(parent_dir, "scripts/full_usage_list.json")
with open(file) as f:
input = f.read()
data = json.loads(input)
for restriction in data["restrictions"]: # For all restrictions in the list
with self.subTest(
msg="One matcher failed"
): # For soft fail, ref https://stackoverflow.com/questions/4732827/continuing-in-pythons-unittest-when-an-assertion-fails
found = False
for sensor in SENSOR_DEFINITIONS:
# We may have to create a function rather than copy/paste, but it's a 'simple re.search....
for matcher in sensor.matchers:
if re.search(
matcher,
restriction["usage"] + "|" + restriction['thematique'],
re.IGNORECASE,
):
found = True
self.assertTrue(
found,
f"Value **{restriction['usage']}** in category **{restriction['thematique']}** not found in matcher",
) # Check for one usage if it has been found
if __name__ == "__main__":
unittest.main()