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": "Nieprawidłowy kod", "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)
def test_internal_code(self): prefix = "000" current_ean = prefix + TEST_EAN13[3:] product = Product(code=current_ean) with mock.patch("pola.logic.get_by_code", return_value=product): response = get_result_from_code(current_ean) expected_response = ( { "altText": ('Zeskanowany kod jest wewnętrznym kodem sieci handlowej. Pola nie ' 'potrafi powiedzieć o nim nic więcej'), "card_type": "type_white", "code": current_ean, "name": 'Kod wewnętrzny', "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 }, product, ) self.maxDiff = None self.assertEqual(expected_response[0], response[0]) self.assertEqual(expected_response, response)
def get_by_code_internal(request, ai_supported=False): code = request.GET['code'] device_id = request.GET['device_id'] result, stats, product = logic.get_result_from_code(code) if product is not None: Query.objects.create( client=device_id, product=product, was_verified=stats['was_verified'], was_590=stats['was_590'], was_plScore=stats['was_plScore'], ) if product: product.increment_query_count() if product.company: product.company.increment_query_count() if ai_supported: result = logic_ai.add_ask_for_pics(product, result) result["donate"] = { "show_button": True, "url": "https://klubjagiellonski.pl/zbiorka/wspieraj-aplikacje-pola/", "title": "Wspieraj aplikację Pola", } return result
def test_missing_company_and_wrong_country(self, prefix, country): current_ean = prefix + TEST_EAN13[3:] product = Product(code=current_ean) with mock.patch("pola.logic.get_by_code", return_value=product): response = get_result_from_code(current_ean) expected_response = ( { "altText": ('Ten produkt został wyprodukowany przez zagraniczną firmę, której ' 'miejscem rejestracji jest: {}.'.format(country)), "card_type": "type_grey", "code": current_ean, "name": 'Miejsce rejestracji: {}'.format(country), "plCapital": None, "plCapital_notes": None, "plNotGlobEnt": None, "plNotGlobEnt_notes": None, "plRegistered": None, "plRegistered_notes": None, "plRnD": None, "plRnD_notes": None, "plScore": 0, "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 }, product, ) self.maxDiff = None self.assertEqual(expected_response[0], response[0]) self.assertEqual(expected_response, response)
def test_missing_company_and_book(self, prefix): current_ean = prefix + TEST_EAN13[3:] product = Product(code=current_ean) with mock.patch("pola.logic.get_by_code", return_value=product): response = get_result_from_code(current_ean) expected_response = ( { "altText": ('Zeskanowany kod jest kodem ISBN/ISSN/ISMN dotyczącym książki, ' 'czasopisma lub albumu muzycznego. Wydawnictwa tego typu nie są ' 'aktualnie w obszarze zainteresowań Poli.'), "card_type": "type_white", "code": current_ean, "name": "Kod ISBN/ISSN/ISMN", "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": 'To nie jest książka, czasopismo lub album muzyczny? Prosimy o zgłoszenie', }, { "was_590": False, "was_plScore": False, "was_verified": False }, product, ) self.assertEqual(expected_response, response)
def test_missing_company_and_590(self, mock_get_by_code): product = Product(code=TEST_EAN13) mock_get_by_code.return_value = product response = get_result_from_code(TEST_EAN13) expected_response = ( { "altText": ("Zeskanowałeś kod, którego nie mamy jeszcze w bazie. Bardzo " "prosimy o zgłoszenie tego kodu i wysłania zdjęć zarówno kodu " "kreskowego jak i etykiety z produktu. Z góry dziękujemy!"), "card_type": "type_grey", "code": "5900084231145", "name": "Zgłoś nam ten kod!", "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_red", "report_text": "Bardzo prosimy o zgłoszenie nam tego produktu", }, { "was_590": True, "was_plScore": False, "was_verified": False }, product, ) self.assertEqual(expected_response, response)
def get_by_code_v2(request): code = request.GET['code'] device_id = request.GET['device_id'] result, stats, product = logic.get_result_from_code(code) if product is not None: Query.objects.create(client=device_id, product=product, was_verified=stats['was_verified'], was_590=stats['was_590'], was_plScore=stats['was_plScore']) if product: product.increment_query_count() if product.company: product.company.increment_query_count() return JsonResponse(result)
def test_code_with_multiple_company(self): current_ean = TEST_EAN13 company1 = CompanyFactory.create(name='test-company1', description='test-description') company2 = CompanyFactory.create(name='test-company2', description='test-description') product = ProductFactory.create(code=current_ean, company=company1, brand__company=company2) with mock.patch("pola.logic.get_by_code", return_value=product): response = get_result_from_code(current_ean) # TODO: Add support for multiple companies in this response expected_response = ( { 'altText': None, 'card_type': 'type_grey', 'code': '5900084231145', 'description': 'test-description', 'is_friend': False, 'name': company1.official_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': product.id, 'report_button_text': 'Zgłoś', 'report_button_type': 'type_white', 'report_text': ('Zgłoś jeśli posiadasz bardziej aktualne dane na temat tego produktu'), 'sources': {}, }, {"was_590": True, "was_plScore": False, "was_verified": False}, product, ) self.maxDiff = None self.assertEqual(expected_response[0], response[0]) self.assertEqual(expected_response, response)
def get_by_code_internal(request, ai_supported=False): code = request.GET['code'] device_id = request.GET['device_id'] result, stats, product = logic.get_result_from_code(code) if product is not None: Query.objects.create(client=device_id, product=product, was_verified=stats['was_verified'], was_590=stats['was_590'], was_plScore=stats['was_plScore']) if product: product.increment_query_count() if product.company: product.company.increment_query_count() if ai_supported: result = logic_ai.add_ask_for_pics(product, result) return result
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 protected]" ), "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, ) self.assertEqual(expected_response, response)