mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 12:18:45 -05:00
test recent shopping list
This commit is contained in:
@@ -106,7 +106,7 @@ def test_add(arg, request, u1_s2, recipe_1_s1, meal_type):
|
||||
r = c.post(
|
||||
reverse(LIST_URL),
|
||||
{'recipe': {'id': recipe_1_s1.id, 'name': recipe_1_s1.name, 'keywords': []}, 'meal_type': {'id': meal_type.id, 'name': meal_type.name},
|
||||
'date': (datetime.now()).strftime("%Y-%m-%d"), 'servings': 1, 'title': 'test','shared':[]},
|
||||
'date': (datetime.now()).strftime("%Y-%m-%d"), 'servings': 1, 'title': 'test', 'shared': []},
|
||||
content_type='application/json'
|
||||
)
|
||||
response = json.loads(r.content)
|
||||
@@ -139,3 +139,7 @@ def test_delete(u1_s1, u1_s2, obj_1):
|
||||
assert r.status_code == 204
|
||||
with scopes_disabled():
|
||||
assert MealPlan.objects.count() == 0
|
||||
|
||||
|
||||
# TODO test auto creating shopping list from meal plan
|
||||
# TODO test excluding on-hand when auto creating shopping list
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import json
|
||||
from datetime import timedelta
|
||||
|
||||
import factory
|
||||
import pytest
|
||||
from django.contrib import auth
|
||||
from django.forms import model_to_dict
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django_scopes import scopes_disabled
|
||||
from pytest_factoryboy import LazyFixture, register
|
||||
|
||||
@@ -155,15 +157,73 @@ def test_sharing(request, shared, count, sle_2, sle, u1_s1):
|
||||
assert len(json.loads(r.content)) == count
|
||||
|
||||
|
||||
# TODO test completed entries still visible if today, but not yesterday
|
||||
def test_completed(sle, u1_s1):
|
||||
# check 1 entry
|
||||
#
|
||||
u1_s1.patch(
|
||||
reverse(DETAIL_URL, args={sle[0].id}),
|
||||
{'checked': True},
|
||||
content_type='application/json'
|
||||
)
|
||||
r = json.loads(u1_s1.get(reverse(LIST_URL)).content)
|
||||
assert len(r) == 10
|
||||
# count unchecked entries
|
||||
assert [x['checked'] for x in r].count(False) == 9
|
||||
# confirm completed_at is populated
|
||||
assert [(x['completed_at'] != None) for x in r if x['checked']].count(True) == 1
|
||||
|
||||
assert len(json.loads(u1_s1.get(f'{reverse(LIST_URL)}?checked=0').content)) == 9
|
||||
assert len(json.loads(u1_s1.get(f'{reverse(LIST_URL)}?checked=1').content)) == 1
|
||||
|
||||
# uncheck entry
|
||||
u1_s1.patch(
|
||||
reverse(DETAIL_URL, args={sle[0].id}),
|
||||
{'checked': False},
|
||||
content_type='application/json'
|
||||
)
|
||||
r = json.loads(u1_s1.get(reverse(LIST_URL)).content)
|
||||
assert [x['checked'] for x in r].count(False) == 10
|
||||
# confirm completed_at value cleared
|
||||
assert [(x['completed_at'] != None) for x in r if x['checked']].count(True) == 0
|
||||
|
||||
|
||||
def test_recent(sle, u1_s1):
|
||||
user = auth.get_user(u1_s1)
|
||||
today_start = timezone.now().replace(hour=0, minute=0, second=0)
|
||||
|
||||
# past_date within recent_days threshold
|
||||
past_date = today_start - timedelta(days=user.userpreference.shopping_recent_days - 1)
|
||||
sle[0].checked = True
|
||||
sle[0].completed_at = past_date
|
||||
sle[0].save()
|
||||
|
||||
r = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?recent=1').content)
|
||||
assert len(r) == 10
|
||||
assert [x['checked'] for x in r].count(False) == 9
|
||||
|
||||
# past_date outside recent_days threshold
|
||||
past_date = today_start - timedelta(days=user.userpreference.shopping_recent_days + 2)
|
||||
sle[0].completed_at = past_date
|
||||
sle[0].save()
|
||||
|
||||
r = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?recent=1').content)
|
||||
assert len(r) == 9
|
||||
assert [x['checked'] for x in r].count(False) == 9
|
||||
|
||||
# user preference moved to include entry again
|
||||
user.userpreference.shopping_recent_days = user.userpreference.shopping_recent_days + 4
|
||||
user.userpreference.save()
|
||||
|
||||
r = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?recent=1').content)
|
||||
assert len(r) == 10
|
||||
assert [x['checked'] for x in r].count(False) == 9
|
||||
|
||||
|
||||
# TODO test create shopping list from recipe
|
||||
# TODO test delete shopping list from recipe - include created by, shared with and not shared with
|
||||
# TODO test create shopping list from food
|
||||
# TODO test delete shopping list from food - include created by, shared with and not shared with
|
||||
# TODO test create shopping list from mealplan
|
||||
# TODO test create shopping list from recipe, excluding ingredients
|
||||
# TODO test auto creating shopping list from meal plan
|
||||
# TODO test excluding on-hand when auto creating shopping list
|
||||
|
||||
# test delay
|
||||
# test completed_at when checked
|
||||
# test completed_at cleared when unchecked
|
||||
|
||||
@@ -716,7 +716,7 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
|
||||
if pk := self.request.query_params.getlist('id', []):
|
||||
self.queryset = self.queryset.filter(food__id__in=[int(i) for i in pk])
|
||||
|
||||
if bool(int(self.request.query_params.get('recent', False))):
|
||||
if 'checked' in self.request.query_params or 'recent' in self.request.query_params:
|
||||
return shopping_helper(self.queryset, self.request)
|
||||
|
||||
# TODO once old shopping list is removed this needs updated to sharing users in preferences
|
||||
|
||||
Reference in New Issue
Block a user