← back to Dw Five Field Step0

test/test_sku_guard.py

71 lines

import pathlib
import sys
import unittest

sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
from sku_guard import validate_dw_sku


class SkuGuardTests(unittest.TestCase):
    def test_add_sample_requires_a_fetched_live_non_sample_base(self):
        live = [{"sku": "DWKK-102147", "option1": "Roll"}]
        result = validate_dw_sku("DWKK-102147-Sample", "add-sample", live)
        self.assertTrue(result["ok"])
        self.assertEqual(result["basis"], "live-variant")
        self.assertFalse(validate_dw_sku("DWKK-999999-Sample", "add-sample", live)["ok"])

    def test_build_roll_requires_a_fetched_live_sample_base(self):
        result = validate_dw_sku("DWKK-102147", "build-roll", [
            {"sku": "DWKK-102147-Sample", "option1": "Sample"},
        ])
        self.assertTrue(result["ok"])
        self.assertEqual(result["basis"], "live-sample-variant")
        self.assertFalse(validate_dw_sku("DWKK-999999", "build-roll", [
            {"sku": "DWKK-102147-Sample", "option1": "Sample"},
        ])["ok"])

    def test_legitimate_base_ending_sample_is_anchored_without_lossy_double_strip(self):
        result = validate_dw_sku("ART-SAMPLE-Sample", "add-sample", [
            {"sku": "ART-SAMPLE", "option1": "Roll"},
        ])
        self.assertTrue(result["ok"])

    def test_unit_like_text_is_preserved_as_exact_sku_identity(self):
        for suffix in ["ROLL", "YARD", "PANEL"]:
            base = f"ART-{suffix}"
            self.assertTrue(validate_dw_sku(f"{base}-Sample", "add-sample", [
                {"sku": base, "option1": "Roll"},
            ])["ok"])
            self.assertFalse(validate_dw_sku("ART-Sample", "add-sample", [
                {"sku": base, "option1": "Roll"},
            ])["ok"])

    def test_rejects_coercion_unicode_controls_whitespace_and_unknown_lane(self):
        live = [{"sku": "ABC", "option1": "Roll"}]
        for candidate in [None, "", "None", "null", 12345, " ABC-Sample", "ABC\nDEF-Sample", "straße-Sample", "abc-Sample"]:
            self.assertFalse(validate_dw_sku(candidate, "add-sample", live)["ok"])
        self.assertEqual(validate_dw_sku("ABC-Sample", "mystery", live)["reason"], "unknown-lane")

    def test_rejects_missing_or_malformed_live_provenance(self):
        self.assertEqual(validate_dw_sku("ABC-Sample", "add-sample", None)["reason"], "invalid-live-variants")
        self.assertFalse(validate_dw_sku("ABC-Sample", "add-sample", [{"sku": "ABC-Sample", "option1": "Sample"}])["ok"])
        self.assertFalse(validate_dw_sku("ABC", "build-roll", [{"sku": "ABC-Sample", "option1": "Roll"}])["ok"])

    def test_rejects_duplicate_or_conflicting_live_identities(self):
        for live in [
            [{"sku": "AAA", "option1": "Roll"}, {"sku": "BBB", "option1": "Roll"}],
            [{"sku": "AAA", "option1": "Roll"}, {"sku": "AAA", "option1": "Roll"}],
        ]:
            self.assertEqual(validate_dw_sku("AAA-Sample", "add-sample", live)["reason"],
                             "ambiguous-live-non-sample-identity")
        for live in [
            [{"sku": "AAA-Sample", "option1": "Sample"}, {"sku": "BBB-Sample", "option1": "Sample"}],
            [{"sku": "AAA-Sample", "option1": "Sample"}, {"sku": "AAA-Sample", "option1": "Sample"}],
        ]:
            self.assertEqual(validate_dw_sku("AAA", "build-roll", live)["reason"],
                             "ambiguous-live-sample-identity")


if __name__ == "__main__":
    unittest.main()