Skip to content

Commit

Permalink
Bump openfoodfacts version
Browse files Browse the repository at this point in the history
Closes #1450
Closes #1434
  • Loading branch information
rolandgeider committed Oct 20, 2023
1 parent adec7fa commit 03f78c8
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ easy-thumbnails==2.8.5
fontawesomefree~=6.4.2
icalendar==5.0.10
invoke==2.2.0
openfoodfacts==0.1.3
openfoodfacts==0.1.10
pillow==10.0.1
reportlab==4.0.5
requests==2.31.0
Expand Down
9 changes: 5 additions & 4 deletions wger/nutrition/models/ingredient.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
from django.utils.translation import gettext_lazy as _

# Third Party
import openfoodfacts
from openfoodfacts import API

# wger
from wger.core.models import Language
Expand Down Expand Up @@ -464,9 +464,10 @@ def fetch_ingredient_from_off(cls, code: str):

logger.info(f'Searching for ingredient {code} in OFF')
try:
result = openfoodfacts.products.get_product(code)
except JSONDecodeError:
logger.info('Got JSONDecodeError from OFF')
api = API()
result = api.product.get(code)
except JSONDecodeError as e:
logger.info(f'Got JSONDecodeError from OFF: {e}')
return None
if result['status'] != OFF_SEARCH_PRODUCT_FOUND:
return None
Expand Down
30 changes: 15 additions & 15 deletions wger/nutrition/tests/test_ingredient.py
Original file line number Diff line number Diff line change
Expand Up @@ -493,12 +493,12 @@ def setUp(self):
'status_verbose': 'product not found'
}

@patch('openfoodfacts.products.get_product')
def test_fetch_from_off_success(self, mock_get_product):
@patch('openfoodfacts.api.ProductResource.get')
def test_fetch_from_off_success(self, mock_api):
"""
Tests creating an ingredient from OFF
"""
mock_get_product.return_value = self.off_response
mock_api.return_value = self.off_response

ingredient = Ingredient.fetch_ingredient_from_off('1234')

Expand All @@ -514,8 +514,8 @@ def test_fetch_from_off_success(self, mock_get_product):
self.assertEqual(ingredient.brand, 'The bar company')
self.assertEqual(ingredient.license_author, 'open food facts, MrX')

@patch('openfoodfacts.products.get_product')
def test_fetch_from_off_success_long_name(self, mock_get_product):
@patch('openfoodfacts.api.ProductResource.get')
def test_fetch_from_off_success_long_name(self, mock_api):
"""
Tests creating an ingredient from OFF - name gets truncated
"""
Expand All @@ -524,39 +524,39 @@ def test_fetch_from_off_success_long_name(self, mock_get_product):
small-to-medium breed, it is the smallest of the six original and distinct spitz
breeds of dog native to Japan.[1] Its name literally translates to "brushwood dog",
as it is used to flush game."""
mock_get_product.return_value = self.off_response
mock_api.return_value = self.off_response

ingredient = Ingredient.fetch_ingredient_from_off('1234')
self.assertEqual(len(ingredient.name), 200)

@patch('openfoodfacts.products.get_product')
def test_fetch_from_off_key_missing_1(self, mock_get_product):
@patch('openfoodfacts.api.ProductResource.get')
def test_fetch_from_off_key_missing_1(self, mock_api):
"""
Tests creating an ingredient from OFF - missing key in nutriments
"""
del self.off_response['product']['nutriments']['energy-kcal_100g']
mock_get_product.return_value = self.off_response
mock_api.return_value = self.off_response

ingredient = Ingredient.fetch_ingredient_from_off('1234')
self.assertIsNone(ingredient)

@patch('openfoodfacts.products.get_product')
def test_fetch_from_off_key_missing_2(self, mock_get_product):
@patch('openfoodfacts.api.ProductResource.get')
def test_fetch_from_off_key_missing_2(self, mock_api):
"""
Tests creating an ingredient from OFF - missing name
"""
del self.off_response['product']['product_name']
mock_get_product.return_value = self.off_response
mock_api.return_value = self.off_response

ingredient = Ingredient.fetch_ingredient_from_off('1234')
self.assertIsNone(ingredient)

@patch('openfoodfacts.products.get_product')
def test_fetch_from_off_no_results(self, mock_get_product):
@patch('openfoodfacts.api.ProductResource.get')
def test_fetch_from_off_no_results(self, mock_api):
"""
Tests creating an ingredient from OFF
"""
mock_get_product.return_value = self.off_response_no_results
mock_api.return_value = self.off_response_no_results

ingredient = Ingredient.fetch_ingredient_from_off('1234')
self.assertIsNone(ingredient)
Expand Down

0 comments on commit 03f78c8

Please sign in to comment.