From 1b76f46ef742f951db708a3bbba40055df329524 Mon Sep 17 00:00:00 2001 From: Tanner Prestegard <tanner.prestegard@ligo.org> Date: Tue, 20 Aug 2019 21:53:56 -0500 Subject: [PATCH] alerts: add unit tests for new label query parser --- gracedb/alerts/tests/test_label_query.py | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 gracedb/alerts/tests/test_label_query.py diff --git a/gracedb/alerts/tests/test_label_query.py b/gracedb/alerts/tests/test_label_query.py new file mode 100644 index 000000000..ec46e0300 --- /dev/null +++ b/gracedb/alerts/tests/test_label_query.py @@ -0,0 +1,46 @@ +try: + from unittest import mock +except ImportError: # python < 3 + import mock +import string + +import pytest + +from alerts.utils import get_label_query_parser + +# NOTE: list('ABC') == ['A', 'B', 'C'] +@pytest.mark.parametrize( + "labels,label_query,match", + [ + (['A'], 'A & B', False), + (['A', 'B'], 'A & B', True), + (['A', 'B'], '~B', False), + (['A', 'B'], '~B', False), + (['A', 'B'], '~B', False), + (list('ABC'), 'A & B', True), + (['C'], 'A & B | C', True), + (['C'], '~C | B', False), + (list('ABCD'), 'A & B & C & D', True), + (list('ABCD'), 'A & B & C & D & ~E', True), + (list('ABCD'), 'A & B & C & D & E', False), + (list('ABCD'), 'A & C | C & ~E', True), + (list('ABCD'), '~A | C & ~E', True), + (list('ABCD'), '~A | D & E', False), + (list('ABCD'), 'A', True), + (list('ABCD'), 'A | F | G | H', True), + (list('ABCD'), 'E | F | C | H', True), + (list('ABCD'), 'Y | F | Z | H', False), + (list('ABCD'), 'A & B | ~C & ~D', True), + # Try a few with werid spacings + (list('ABCD'), 'A|D &~E', True), + (['A', 'B'], '~A |B&C&~D', False), + (['A', 'B'], 'A| B|C&~D', True), + ] +) +def test_label_query_parsing(labels, label_query, match): + label_list_method = 'alerts.utils.Label.objects.values_list' + #with mock.patch('alerts.utils.get_label_parser') as mock_glp: + with mock.patch(label_list_method) as mock_llm: + mock_llm.return_value = list(string.ascii_uppercase) + lqp = get_label_query_parser(labels) + assert lqp.parseString(label_query)[0] == match -- GitLab