"""Check product code uniqueness with vendor_product_code feature.""" from unittest.mock import MagicMock from oto import response import pytest from ows_product_physical.logic import product_physical from ows_product_physical.models import ows_product from tests.utils import db VENDOR_ID = '11' PRODUCT_CODE = 'DEMO0002' SUBACCOUNT_ID = 666 # sub account for product code above @pytest.mark.parametrize( 'owner,subaccount_id,unique', [ (False, None, True), # Product exist in sub account, but I am D3 (True, None, True), # I am D3 and owner and product in sub acc (False, SUBACCOUNT_ID + 1, True), # product exist in different sub acc (True, SUBACCOUNT_ID, False), # product exist in this sub account (False, SUBACCOUNT_ID, False), # same, but ownership is false ] ) def test_product_code_conflicts(db_fixture, db_releases, monkeypatch, owner, subaccount_id, unique): """Check possible uniqueness conflicts in product code validation.""" db.populate_table('releases', db_releases) monkeypatch.setattr( ows_product, 'check_product_ownership', value=MagicMock(return_value=response.Response(message=owner))) result = product_physical.check_product_code_uniqueness( VENDOR_ID, subaccount_id, PRODUCT_CODE) if unique: assert result is True else: assert not result