Тестирование представлений 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>
Вернуться на верх