<commit_before>from unittest import mock

from parameterized import parameterized
from test_plus import TestCase

from company.factories import CompanyFactory
from pola.logic import get_by_code, get_result_from_code
from product.factories import ProductFactory
from product.models import Product

TEST_EAN13 = "5900084231145"


class TestGetResultFromCode(TestCase):
    maxDiff = None

    def test_should_return_empty_message_on_invalid_code(self):
        self.maxDiff = None
        response = get_result_from_code("ABC")
        expected_response = (
            {
                "altText": (
                    "Pola rozpoznaje tylko kody kreskowe typu EAN8 i EAN13. "
                    "Zeskanowany przez Ciebie kod jest innego typu. Spróbuj "
                    "zeskanować kod z czegoś innego"
                ),
                "card_type": "type_white",
                "code": "ABC",
                "name": "<NAME>",
                "plCapital": None,
                "plCapital_notes": None,
                "plNotGlobEnt": None,
                "plNotGlobEnt_notes": None,
                "plRegistered": None,
                "plRegistered_notes": None,
                "plRnD": None,
                "plRnD_notes": None,
                "plScore": None,
                "plWorkers": None,
                "plWorkers_notes": None,
                "product_id": None,
                "report_button_text": "Zgłoś",
                "report_button_type": "type_white",
                "report_text": "Zgłoś jeśli posiadasz bardziej aktualne dane na temat tego " "produktu",
            },
            {"was_590": False, "was_plScore": False, "was_verified": False},
            None,
        )
        self.assertEqual(expected_response, response)

        response = get_result_from_code("123123")
        expected_response[0]["code"] = "123123"
        self.assertEqual(expected_response, response)

    @mock.patch("pola.logic.get_by_code")
    def test_missing_company_and_590(self, mock_get_by_code):
        product = ProductFactory.create(code=TEST_EAN13, company=None, brand=None)
        mock_get_by_code.return_value = product
        response = get_result_from_code(TEST_EAN13)

        expected_response = (
            {
                "altText": (
                    "Każde skanowanie jest rejestrowane. Najczęściej skanowane firmy i produkty, "
                    "których nie mamy jeszcze w bazie, są weryfikowane w pierwszej kolejności. "
                    "Nie pobieramy przy tym żadnych informacji o użytkowniku.\n"
                    "\n"
                    "Jeśli chcesz zgłosić błąd lub wyrazić opinię, prosimy o kontakt: <EMAIL>"
                ),
                "card_type": "type_grey",
                "code": "5900084231145",
                "name": "Dziękujemy za użycie aplikacji Pola!",
                "plCapital": None,
                "plCapital_notes": None,
                "plNotGlobEnt": None,
                "plNotGlobEnt_notes": None,
                "plRegistered": None,
                "plRegistered_notes": None,
                "plRnD": None,
                "plRnD_notes": None,
                "plScore": None,
                "plWorkers": None,
                "plWorkers_notes": None,
                "product_id": product.id,
                "report_button_text": "Zgłoś",
                "report_button_type": "type_red",
                "report_text": "Bardzo prosimy o zgłoszenie nam tego produktu",
            },
            {"was_590": True, "was_plScore": False, "was_verified": False},
            product,
        )<commit_msg>fixup! Zmiana napisu produktu nie ma w bazie<commit_after>from unittest import mock

from parameterized import parameterized
from test_plus import TestCase

from company.factories import CompanyFactory
from pola.logic import get_by_code, get_result_from_code
from product.factories import ProductFactory
from product.models import Product

TEST_EAN13 = "5900084231145"


class TestGetResultFromCode(TestCase):
    maxDiff = None

    def test_should_return_empty_message_on_invalid_code(self):
        self.maxDiff = None
        response = get_result_from_code("ABC")
        expected_response = (
            {
                "altText": (
                    "Pola rozpoznaje tylko kody kreskowe typu EAN8 i EAN13. "
                    "Zeskanowany przez Ciebie kod jest innego typu. Spróbuj "
                    "zeskanować kod z czegoś innego"
                ),
                "card_type": "type_white",
                "code": "ABC",
                "name": "Nie<NAME>",
                "plCapital": None,
                "plCapital_notes": None,
                "plNotGlobEnt": None,
                "plNotGlobEnt_notes": None,
                "plRegistered": None,
                "plRegistered_notes": None,
                "plRnD": None,
                "plRnD_notes": None,
                "plScore": None,
                "plWorkers": None,
                "plWorkers_notes": None,
                "product_id": None,
                "report_button_text": "Zgłoś",
                "report_button_type": "type_white",
                "report_text": "Zgłoś jeśli posiadasz bardziej aktualne dane na temat tego " "produktu",
            },
            {"was_590": False, "was_plScore": False, "was_verified": False},
            None,
        )
        self.assertEqual(expected_response, response)

        response = get_result_from_code("123123")
        expected_response[0]["code"] = "123123"
        self.assertEqual(expected_response, response)

    @mock.patch("pola.logic.get_by_code")
    def test_missing_company_and_590(self, mock_get_by_code):
        product = ProductFactory.create(code=TEST_EAN13, company=None, brand=None)
        mock_get_by_code.return_value = product
        response = get_result_from_code(TEST_EAN13)

        expected_response = (
            {
                "altText": (
                    "Każde skanowanie jest rejestrowane. Najczęściej skanowane firmy i produkty, "
                    "których nie mamy jeszcze w bazie, są weryfikowane w pierwszej kolejności. "
                    "Nie pobieramy przy tym żadnych informacji o użytkowniku.\n"
                    "\n"
                    "Jeśli chcesz zgłosić błąd lub wyrazić opinię, prosimy o kontakt: <EMAIL>"
                ),
                "card_type": "type_grey",
                "code": "5900084231145",
                "name": "Tego produktu nie mamy jeszcze w bazie",
                "plCapital": None,
                "plCapital_notes": None,
                "plNotGlobEnt": None,
                "plNotGlobEnt_notes": None,
                "plRegistered": None,
                "plRegistered_notes": None,
                "plRnD": None,
                "plRnD_notes": None,
                "plScore": None,
                "plWorkers": None,
                "plWorkers_notes": None,
                "product_id": product.id,
                "report_button_text": "Zgłoś",
                "report_button_type": "type_red",
                "report_text": "Bardzo prosimy o zgłoszenie nam tego produktu",
            },
            {"was_590": True, "was_plScore": False, "was_verified": False},
            product,
        )
{'fraction_non_alphanumeric': 0.09088405397961993, 'fraction_numerical': 0.01569815477829799, 'mean_word_length': 1.7742551566080977, 'pattern_counts': {'":': 88, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2066101', 'n_tokens_mistral': 2338, 'n_tokens_neox': 2183, 'n_words': 473}