Тестирование представлений Django (сессии, ajax)
В проекте django e-commerce у меня есть представление, которое добавляет товар в корзину через сессии, также это представление получает POST запрос от ajax. Я не могу найти, как протестировать этот код.
basket/views.py
def basket_add(request):
basket = Basket(request)
if request.POST.get('action') == 'post':
product_id = int(request.POST.get('productid'))
product_qty = int(request.POST.get('productqty'))
product = get_object_or_404(Product, id=product_id)
basket.add(product=product, qty=product_qty)
basketqty = basket.__len__()
response = JsonResponse({'qty': basketqty})
return response
basket/basket.py
class Basket():
"""
A base Basket class, providing some default behaviors that
can be inherited or overrided, as necessary.
"""
def __init__(self,request):
self.session = request.session
basket = self.session.get(settings.BASKET_SESSION_ID)
if settings.BASKET_SESSION_ID not in request.session:
basket = self.session[settings.BASKET_SESSION_ID] = {}
self.basket = basket
def add(self,product,qty):
"""Adding and updating the users basket session data """
product_id = str(product.id)
if product_id in self.basket:
self.basket[product_id]['qty'] = qty
else:
self.basket[product_id] = {'price': str(product.regular_price),'qty':int(qty)}
self.save()
как поймать этот кусок кода при тестировании?
<button type="button" id="add-button" value="{{product.id}}" class="btn btn-success fw500">Add to basket</button>
<script>
$(document).on('click', '#add-button', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url "basket:basket_add" %}',
data: {
productid: $('#add-button').val(),
productqty: $('#select option:selected').text(),
csrfmiddlewaretoken: "{{csrf_token}}",
action: 'post'
},
success: function (json) {
document.getElementById('basket-qty').innerHTML = json.qty
},
error: function (xhr, errmsg, err) {}
});
})
</script>