"""
Tests for the owner required mixin.
"""
from django.test import RequestFactory
from django.contrib.auth.models import AnonymousUser

from django_mock_queries.query import MockModel

from cards.views import OwnerRequiredMixin
from users.models import User


def test_owner_required_for_user(mocker):
    user = User(username="test", email="test@example.com")
    user_card = MockModel(mock_name="user card", user=user)
    request = mocker.Mock
    request.user = user

    view = OwnerRequiredMixin()
    view.request = request
    get_object_mock = mocker.patch.object(view, "get_object")
    get_object_mock.return_value = user_card
    is_owner = view.test_func()

    assert is_owner


def test_owner_required_for_anonymous_user(mocker):
    user = User(username="test", email="test@example.com")
    user_card = MockModel(mock_name="user card", user=user)
    request = RequestFactory().get("/cards")
    request.user = AnonymousUser()

    view = OwnerRequiredMixin()
    view.request = request
    get_object_mock = mocker.patch.object(view, "get_object")
    get_object_mock.return_value = user_card
    is_owner = view.test_func()

    assert not is_owner
