From da0ed76bbdea737a9cd1a10ad0a5aace1c8c40da Mon Sep 17 00:00:00 2001
From: Hakan Calim <hakan.calim@fau.de>
Date: Mon, 19 Feb 2024 14:34:33 +0100
Subject: [PATCH] NAT-410: Changed test to use mark parameterize to generate tt
 numbers

---
 test/utils/test_helpers.py | 44 ++++++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/test/utils/test_helpers.py b/test/utils/test_helpers.py
index a462d1d7..4006c4ad 100644
--- a/test/utils/test_helpers.py
+++ b/test/utils/test_helpers.py
@@ -21,6 +21,18 @@ def mock_netbox_client():
         yield mock
 
 
+@pytest.fixture()
+def generate_tt_numbers(faker, request):
+    """Generator for valid and invalid tt numbers."""
+    valid_count = request.param.get("valid", 0)
+    invalid_count = request.param.get("invalid", 0)
+
+    valid_data = [(faker.tt_number(), True) for _ in range(valid_count)]
+    invalid_data = [(faker.sentence(), False) for _ in range(invalid_count)]
+
+    return valid_data + invalid_data
+
+
 def test_non_nokia_router_returns_none(mock_router, faker):
     mock_router.from_subscription.return_value.router.vendor = RouterVendor.JUNIPER
     result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", [])
@@ -64,23 +76,17 @@ def test_nokia_router_with_interfaces_returns_choice(mock_router, mock_netbox_cl
     assert hasattr(result, "interface3")
 
 
-def test_tt_number(faker):
+@pytest.mark.parametrize("generate_tt_numbers", [{"valid": 5, "invalid": 3}], indirect=True)
+def test_tt_number(generate_tt_numbers):
     """Test different TT numbers"""
-
-    # Define different tt number
-    tt_number_valid1 = faker.tt_number()
-    tt_number_valid2 = faker.tt_number()
-    tt_number_valid3 = faker.tt_number()
-
-    tt_number_not_valid1 = faker.sentence()
-    err_msg = (
-        f"The given TT number: {tt_number_not_valid1} is not valid. "
-        f" A valid TT number starts with 'TT#' followed by 16 digits."
-    )
-
-    assert validate_tt_number(tt_number_valid1) == tt_number_valid1
-    assert validate_tt_number(tt_number_valid2) == tt_number_valid2
-    assert validate_tt_number(tt_number_valid3) == tt_number_valid3
-
-    with pytest.raises(ValueError, match=err_msg):
-        validate_tt_number(tt_number_not_valid1)
+    for tt_number, is_valid in generate_tt_numbers:
+        if is_valid:
+            assert validate_tt_number(tt_number) == tt_number
+        else:
+            err_msg = (
+                f"The given TT number: {tt_number} is not valid. "
+                f" A valid TT number starts with 'TT#' followed by 16 digits."
+            )
+
+            with pytest.raises(ValueError, match=err_msg):
+                validate_tt_number(tt_number)
-- 
GitLab